GB/T 39412-2020 信息安全技术 代码安全审计规范.pdf

GB/T 39412-2020 信息安全技术 代码安全审计规范.pdf
仅供个人学习
反馈
标准编号:
文件类型:.pdf
资源大小:3.1 M
标准类别:环保标准
资源ID:49918
免费资源

标准规范下载简介

GB/T 39412-2020 信息安全技术 代码安全审计规范.pdf简介:

GB/T 39412-2020《信息安全技术 代码安全审计规范》是由中国国家标准管理机构制定的一项信息安全技术标准。该标准主要目的是为了规范和指导在软件开发和维护过程中对代码安全的审计活动。它详细规定了代码安全审计的方法、流程、内容和要求,涵盖了对代码的安全性、稳定性、可维护性、可扩展性、性能等方面进行全面评估。

该标准适用于所有类型的软件开发项目,包括企业级应用、移动应用、云计算平台、物联网设备等,以帮助企业识别和消除代码中的安全漏洞,提高软件的安全性和可靠性。通过遵循该规范,开发者和审计人员可以确保代码符合相关的安全标准,降低网络安全风险,增强用户数据保护。

总的来说,GB/T 39412-2020是一个重要的信息安全工具,对于企业提升代码安全管理水平,保障网络安全具有重要意义。

GB/T 39412-2020 信息安全技术 代码安全审计规范.pdf部分内容预览:

审计人员应检查代码是否试图将不可, 化的对象写到磁盘中,将不可序列化的对象存储到磁盘 代码的不规范/规范用法示例参见B.3.2。

7.2.1不同会话间信息泄露

审计指标:代码应避免不同会话之间发生信息泄露 审计人员应检查代码在应用的不同会话之间是否会发生信息泄露《冷轧电工钢工程设计规范 GB/T 50997-2014》,尤其是在多线程环境下

7.2.2发布未完成初始化的对象

审计指标:不宜发布未完成初始化的对象。 审计人员宜检查代码在多线程环境中,是否存在对象初始化尚未完成前,就可被其他线 情况。

7.2.3共享资源的并发安全

审计指标:共享资源宜使用正确的并发处理机制 审计人员宜检查代码中共享资源的使用及并发处理的过程,包括但不限于: a)宜检查代码在多线程环境中对共享数据的访问是否为同步访问,如果结果为否定,则提示存在 安全风险; b)宜检查代码中线程间的共享对象是否声明正确的存储持续期,如果结果为否定,则提示存在安 全风险; c)宜检查代码中是否在并发上下文中使用不可重人的函数,如果结果为肯定,则提示存在安全 风险; d 宜检查代码中是否避免了检查时间与使用时间资源冲突: 宜检查代码中多个线程中等待彼此释放锁的可执行片段是否避免了死锁情况发生,如果结果 为否定,则提示存在安全风险; 宜检查代码对共享资源执行敏感操作时是否检查加锁状态,如果结果为否定,则提示存在安全 风险。规范/不规范代码示例参见B.3.3; g)宜检查代码是否将敏感信息存储在没有被锁定或被错误锁定的内存中(将敏感信息存储于加 锁不恰当的内存区域,可能会导致该内存通过虚拟内存管理器被写入到在磁盘上的交换文件 中,从而使得数据更容易被外部获取),如果结果为肯定,则提示存在安全风险; h 宜检查代码中是否存在关键资源多重加锁,如果结果为肯定,则提示存在安全风险; i)宜检查代码中是否存在关键资源多重解锁,如果结果为肯定,则提示存在安全风险: 1 宜检查代码中是否存在对未加锁的资源进行解锁,如果结果为肯定,则提示存在安全风险; k)宜检查代码中在异常发生时是否释放已经持有的锁,如果结果为否定,则提示存在安全风险

7.2.4子进程访问父进程敏感资源

GB/T39412—2020

审计指标:在调用子进程之前应关闭敏感文件描述符,避免子进程使用这些描述符来执行未经授权 的1/0操作。 审计人员宜检查代码是否存在调用子进程之前有未关闭敏感文件描述符的情形。当一个新进程被 创建或执行时,子进程继承任何打开的文件描述符,如不关闭则可能会造成未经授权的访问。规范/不 规范代码示例参见B.3.4

7.2.5释放线程专有对象

审计指标:应及时释放线程专有对象。 审计人员应检查代码是否及时释放线程专有对象.防止内存泄漏造成拒绝服务攻击

7.3.1格式化字符串

审计指标:应避免外部控制的格式化字符串。 审计人员应检查代码中是否存在函数接受格式化字符串作为参数的情况,格式化字符串是否来自 外部,如果是,则可能引起注人类安全风险。规范/不规范代码示例参见B.3.5

7.3.2对方法或函数参数验证

审计指标:宜对方法或函数的参数进行验证。 审计人员宜检查代码是否存在对方法或函数的参数进行合法性或安全性校验。规范/不规范代码 示例参见B.3.6

7.3.3参数指定错误

审计指标:函数功能调用宜正确指定参数。 审计人员宜检查函数/方法调用时参数指定是否正确,是否存在如下情况: a)不正确数量的参数; b) 参数顺序不正确; 参数类型不正确; d)错误的值。 以上检查项的任一结果为肯定,则提示存在安全风险

7.3.4 返回栈变量地圳

审计指标:不宜返回栈变量地址 因栈变量在函数调用结束 被释放,再使用该变量地址时可能

7.3.5实现不一致函数

审计指标:不宜使用具有不一致性实现的函数或方法。 审计人员宜检查代码是否存在使用了在不同版本具有不一致实现的函数或方法。因使用在不同 系统或不同版本实现不一致的函数或方法,可能导致代码被移植到不同环境时改变行为

GB/T 394122020

7.3.6暴露危险的方法或函数

审计指标:不应暴露危险的方法或函数, 审计人员应检查代码中的API或其他与外部交互的接口是否暴露了危险方法或函数,暴露危险的 方法或函数可能会带来非授权访问攻击。危险方法或函数暴露的形式主要包括方法/函数原本设计为 非外部用户使用、原本设计为部分用户访问等。代码的不规范/规范用法示例参见B.3.8

审计指标:宜恰当进行异常处理。 审计人员宜检查代码中异常处理是否安全,包括但不限于: a)宜检查是否对异常进行检查并处理; b)宜检查是否采用标准化的、一致的异常处理机制来处理代码中的异常: c)宜检查错误发生时,是否提供正确的状态代码或返回值来表示发生的错误; d)宜检查是否对执行文件I/O的返回值进行检查; e)宜检查是否对函数或方法返回值是否为预期值进行了检查; f)宜检查是否返回定制的错误页面给用户来预防敏感信息的泄露。 如上检查项的任一结果为否定,则提示存在安全风险

.5.1不兼容的指针类型

审计指标:不宜使用不兼容类型的指针来访问变量 审计人员宜检查代码是否使用不兼容类型的指针来访问变量。通过不兼容类型的指针修改变量可 能会导致不可预测的结果。代码的不规范用法示例参见B.3.9

7.5.2利用指针减法确定内存大小

审计指标:宜避免使用指针的减法来确定内存天小。 审计人员宜检查代码是否采用一个指针减去另一个指针的方式来确定内存大小。如果两个指针 一类型,那么使用指针的减法来确定内存大小的计算可能会不正确,导致不可预测的结果。代码 范/规范用法示例参见B.3.10。

7.5.3将固定地址赋值给指针

审计指标:不宜把固定地址赋值给指针。 审计人员宜检查代码是否将一个NULL或0以外的固定地址赋值给指针。将固定地址赋值给指 针会降低代码的可移植性,并为攻击者进行注入代码攻击提供便利

7.5.4试图访问非结构体类型指针的数据域

审计指标:不应把指向非结构体类型指针强制转换为指向结构类型的指针并访问其字段, 审计人员应检查代码是否将指向非结构体类型的指针,强制转换为指向结构类型的指针并访问其 字段,如果结果为肯定,则可能存在内存访问错误或数据损坏的风险

7.5.5指针偏移越界

审计指标:不应使用偏移越界的指针

移越界的情况,因指针偏移越界可能会造成访缓 冲区溢出风险

7.5.6无效指针使用

审计指标:应避免无效指针的使用。 审计人员应检查代码是否存在使用无效指针的情况,因使用无效指针,可能会产生非预期行为

7.6.1编译环境安全

审计指标:应构建安全的编译环境。 审计人员应检查编译环境安全,包括但不限于: a)应检查编译器是否从官方或其他可靠渠道获取,并确保其安全可靠; b)应检查编译器是否存在不必要的编译功能

8资源使用安全缺陷审计

8.1.1重复释放资源

审计指标:应避免重复释放资源。 审计人员应检查代码是否存在重复释放资源的情况。重复释放资源可能会造成系统崩溃

8.1.2资源或变量不安全初始化

审计指标:宜避免不安全的资源或变量初始化。 审计人员宜检查代码是否对资源或变量进行了安全的初始化,包括但不限于: a)宜检查代码是否对关键变量进行初始化,未初始化关键变量易导致系统按非预期值执行,如结 果为否定,则提示存在安全风险; b)宜检查代码是否采用了不安全或安全性较差的缺省值来初始化内部变量。缺省值通常和产品 一起发布,容易被熟悉产品的潜在攻击者获取而带来系统安全风险,如结果为肯定,则提示存 在安全风险; 宜检查代码中关键的内部变量或资源是否采用了可信边界外的外部输人值进行初始化,如结 果为肯定,则提示存在安全风险

8.1.3初始化失败后未安全退出

审计指标:初始化失败后应安全退出程序, 审计人员应检查代码在初始化失败后能否安全退出

GB/T39412—2020

8.1.4引用计数的更新不正确

审计指标:应避免引用计数的更新不正确 审计人员应检查代码中管理资源的引用计数是否正确更新,引用计数更新不正确,可能会导致资源 在使用阶段就被过早释放,或虽已使用完毕但得不到释放的安全风险

8.1.5资源不安全清理

审计指标:宜避免不安全的资源清理。 审计人员宜检查代码中资源清理部分的相关功能,检查代码在使用资源后是否恰当地执行临时文 件或辅助资源的清理,避免清理环节不完整

审计指标:不应将资源暴露给非授权的范围。 审计人员应检查代码是否将文件和目录等资源暴露给非授权的范围,如果存在,则提示代码存在信 息暴露的风险

8.1.7 未经控制的递归

审计指标:应避免未经控制的递归。 审计人员应检查代码是否避免未经控制的递归,未控制递归可造成资源消耗过多的安全风险

审计指标:执行送代或循环应恰当地限制循环执行的次数,以避免无限循环, 审计人员应检查代码中软件执行迭代或循环,是否充分限制循环执行的次数,以避免无限循环的发 生导致攻击者占用过多的资源

L17J105 非承重复合砌块墙体自保温系统建筑构造8.1.9算法复杂度攻击

审计指标:宜避免算法复杂度攻击。 审计人员宜检查代码中算法是否存在最坏情况下非常低效,复杂度高,会严重降低系统性能。如果 是,则攻击者就可以利用精心编制的操

8.1.10早期放大攻击

审计指标:宜遵守正确的行为次序避免早期放大攻击数据, 审计人员宜检查代码是否存在实体在授权或认证前执行代价高的操作的情况,不合理执 的操作可能会造成早期放大攻击。规范/不规范代码示例参见B.4.1

8.2.1内存分配释放函数成对调用

审计指标:应成对调用内存分配和释放函数 审计人员应检查代码中分配内存和释放内存函数是否成对调用,如malloc/free来分配或释放资 源。当内存分配和释放函数不成对调用时,可能会引起程序崩溃的风险

审计指标:应避免在释放堆内存前清理不恰当而导致敏感信息

T∕CADBM 26-2020 建筑门窗智能控制系统通用技术要求GB/T39412—2020

©版权声明
相关文章