安全代码审计实施标准学习笔记

news2024/7/5 22:21:35

声明

本文是学习GB-T 39412-2020 信息安全技术 代码安全审计规范. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们

资源使用安全缺陷审计列表

资源管理

审计指标:应避免重复释放资源。

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

审计指标:宜避免不安全的资源或变量初始化。

审计人员宜检查代码是否对资源或变量进行了安全的初始化,具体要求包括但不限于:

a) 宜检查代码是否对关键变量进行初始化,未初始化关键变量易导致系统按非预期值执行,如结果为否定,则提示存在安全风险;

b) 宜检查代码是否采用了不安全或安全性较差的缺省值来初始化内部变量。缺省值通常和产品一起发布,容易被熟悉产品的潜在攻击者获取而带来系统安全风险,如结果为肯定,则提示存在安全风险;

c) 宜检查代码中关键的内部变量或资源是否采用了可信边界外的外部输入值进行初始化,如结果为肯定,则提示存在安全风险。

审计指标:初始化失败后应安全退出程序。

审计人员应检查代码在初始化失败后能否安全退出。

审计指标:应避免引用计数的更新不正确。

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

审计指标:宜避免不安全的资源清理。

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

审计指标:不应将资源暴露给非授权的范围。

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

审计指标:应避免未经控制的递归。

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

审计指标:执行迭代或循环应恰当地限制循环执行的次数,应避免无限循环。

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

审计指标:宜避免算法复杂度攻击。

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

审计指标:宜遵守正确的行为次序避免早期放大攻击数据。

审计人员宜检查代码是否存在实体在授权或认证前执行代价高的操作的情况,不合理执行代价高的操作可能会造成早期放大攻击。代码规范/不规范示例参见附录B.4.1。

内存管理

审计指标:应成对调用内存分配和释放函数。

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

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

审计人员应检查代码在释放堆内存前是否采用合适的方式进行信息清理。如C语言中是否使用realloc()函数调整存储敏感信息的缓冲区大小,如存在该操作,将存在可能暴露敏感信息的风险。 realloc()函数不是从内存中删除,而通常是将旧内存块的内容复制到一个新的、更大的内存块,这可能暴露给攻击者使用“memory dump”或其他方法来进行读取敏感信息的“堆检查”攻击。

审计指标:宜及时释放动态分配的内存。

审计人员宜检查代码是否有动态分配的内存使用完毕后未释放导致内存泄漏的情形。内存泄漏可能会导致资源耗尽从而带来拒绝服务的安全风险。代码规范/不规范示例参见附录 B.4.2。

审计指标:不应引用或访问已被释放后的内存。

审计人员应检查代码是否存在内存被释放再次被访问的情况。内存被释放后再次访问会出现非预期行为。

审计指标:不宜依赖数据/内存布局。

审计人员宜检查代码逻辑是否依赖于对协议数据或内存在底层组织形式的无效假设。当平台或协议版本变动时,数据组织形式可能会发生变化从而带来非预期行为。

审计指标:应避免内存缓冲区边界操作发生越界。

审计人员应检查代码在内存缓冲区边界操作时是否存在越界现象,因内存缓冲区访问越界可能会造成缓冲区溢出漏洞。代码规范/不规范示例参见附录B.4.3。

审计指标:应避免未检查输入数据大小就进行缓冲区复制。

审计人员应检查代码在进行缓冲区复制时,是否存在未对输入数据大小进行检查的现象,因未检查输入数据大小,可能会造成缓冲区溢出。代码不规范示例参见附录B.4.4。

审计指标:应避免使用错误的长度值访问缓冲区。

审计人员应检查代码在访问缓冲区时使用长度值是否正确,因使用错误的长度值来访问缓冲区可能会造成缓冲区溢出风险。代码规范/不规范示例参见附录B.4.5。

审计指标:应限制堆空间的消耗,防止堆空间耗尽。

审计人员应检查代码是否有导致堆空间耗尽的情况,具体检查包括但不限于:

  1. 是否存在内存泄漏;
  2. 是否存在死循环;
  3. 不受限制的反序列化;
  4. 创建大量的线程;
  5. 解压一个较大压缩文件。

数据库使用

审计指标:宜及时释放数据库资源。

审计人员宜检查代码中使用数据库后是否及时释放数据库连接或采用数据库连接池,未及时释放数据库连接可能会造成数据库拒绝服务风险。

审计指标:应正确处理SQL命令中的特殊元素。

审计人员应检查代码利用用户可控的输入数据构造SQL命令时,是否对外部输入数据中的特殊元素进行处理,如果未处理,那么这些数据有可能被解释为SQL命令而非普通用户的输入数据。攻击者可对此加以利用来修改查询逻辑,从而绕过安全检查或插入可以修改后端数据库的额外语句。

文件管理

审计指标:不应使用过期的文件描述符。

审计人员应检查代码是否在文件描述符关闭后再次使用。特定文件或设备的文件描述符被释放后被重用,可能会造成引用了其他的文件或设备。

审计指标:应安全使用临时文件

审计人员应检查代码中使用临时文件是否安全,因不安全使用临时文件造成敏感信息泄露,具体要求包括:

  1. 应检查代码中是否创建或使用不安全的临时文件,如果结果为肯定,则提示存在安全风险;
  2. 应检查代码中临时文件是否在程序终止前移除,如果结果为否定,则提示存在安全风险;
  3. 应检查代码中是否在具有不安全权限的目录中创建临时文件,如果结果为肯定,则提示存在安全风险。

审计指标:不宜导致文件描述符穷尽。

审计人员宜检查代码是否存在导致文件描述符穷尽情形。具体检查项包括但不限于:

  1. 是否对打开文件描述符未做关闭处理;
  2. 是否到达关闭阶段之前,失去对文件描述符的所有引用;
  3. 进程完成后是否未关闭文件描述符。

审计指标:应避免路径遍历。

审计人员应检查代码是否存在由外部输入构造的标识文件或目录的路径名,路径遍历会造成非授权访问资源的风险。

  1. 路径遍历指未将路径名限制在受限目录。

审计指标:应及时释放文件系统资源。

审计人员应检查代码是否及时释放不再使用的文件句柄,不及时释放文件句柄可能会引起文件资源占用过多,造成拒绝服务风险。

网络传输

审计指标:不应对同一端口进行多重绑定。

审计人员应检查代码是否有多个套接字绑定到相同端口,从而导致该端口上的服务有被盗或被欺骗的风险。

审计指标:宜避免对网络消息容量的控制不充分。

审计人员宜检查代码是否控制网络传输流量不超过被允许的值。如果代码没有机制来跟踪流量传输,系统或应用程序会很容易被滥用于传输大流量(超过了请求值或客户端被允许的值),从而带来拒绝服务的安全风险。

审计指标:应避免字节序使用不一致性。

审计人员应检查代码在跨平台或网络通信处理输入时是否考虑到字节顺序,避免字节序使用不一致。

不能正确处理字节顺序问题,可能会导致不可预期的程序行为。

审计指标:应采用加密传输方式保护敏感数据。

审计人员应检查代码在网络通信中敏感数据是否加密传输,特别是身份鉴别信息、重要信息等。

审计指标:宜制定会话过期机制。

审计人员宜检查代码中会话过程是否存在会话过期机制,如结果为否定,则提示代码存在保护机制被绕过的风险。代码规范/不规范示例参见附录B.4.6。

审计指标:宜确保会话标识符的随机性。

审计人员宜检查代码中会话标识符是否具有随机性,防止会话标识符被穷举造成安全风险。

延伸阅读

更多内容 可以 GB-T 39412-2020 信息安全技术 代码安全审计规范. 进一步学习

联系我们

DB65-T 3635-2014 组织机构代码业务受理规范 新疆维吾尔自治区.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/454685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Opencv+Python笔记(九)模板匹配

模板匹配 模板匹配常用于对象检测,且实现简单计算效率高。但如果输入图像中存在变化因素如旋转、缩放、视角变化等,模板匹配很容易失效 模板匹配原理: 1.匹配方式为模板 (a * b) 在原图像 (m * n) 上滑动 使用参数method中指定的方法&#…

云原生(docker+k8s+阿里云)

Gitee-Kubernetes学习 kubectl备忘清单 k8s官方文档-task [云原生-kubectl命令详解] ingress详解 ingress官方文档 云原生-语雀-架构师第一课 如上图,服务器有公网ip和私网ip,公网ip是外部访问服务器用的,重启一次实例就变化了,如…

常用数据结构与颜色空间

常用数据结构与颜色空间 矩阵和图像类型 图像可能是灰度,彩色,4 通道的(RGBalpha),其中每个通道可以包含任意的整数或浮点数。因此,该类型比常见的、易于理解的3通道 8位 RGB 图像更通用。 RBG颜色空间、 HSV/HLS颜色空间、 Lab…

Blender 3.5 面的操作(二)

目录 1. 面操作1.1 面的切割1.2 整体切分1.3 面的法向1.4 正面、背面1.5 翻转法向1.6 填充面1.7 X-Ray 透视模式 1. 面操作 1.1 面的切割 切割工具 Knife,快捷键 k 选中一个面 按k键,进入切割工具(建议使用快捷键切割)&#xff…

crossover可以安装什么软件?支持的软件列表

CrossOver是一款可以在Mac和Linux等操作系统上运行Windows软件,而无需在计算机上安装Windows操作系统。这款软件的核心技术是Wine,它是一种在Linux和macOS等操作系统上运行Windows应用程序的开源软件。本文将会对CrossOver进行详细介绍,并回答…

“SCSA-T学习导图+”系列:IPSec VPN原理与应用

本期引言: 本章主要讲解IPSec VPN相关理论概念,工作原理。从安全和加密原理入手,讲解了IPSec 在VPN对等体设备实现的安全特性,如数据的机密性、数据的完整性,数据验证等。重点分析IPSec封装模式,IPSec安全…

技术解读丨多模数据湖:助力AI技术,推动内容管理平台智能化升级

随着数字化时代的到来,数据已经成为企业的重要资产之一。因此,构建高效的内容管理平台变得至关重要。本文重点介绍SequoiaDB多模数据湖技术在内容管理平台中的应用和成效,以及其对企业非结构化数据管理和AI的推动作用。 随着数字化时代的到来…

Vue3技术6之toRef和toRefs、shallowReactive与shallowRef、readonly与shallowReadonly

Vue3技术6 toRef和toRefstoRefApp.vueDemo.vue toRefsApp.vueDemoTwo.vue 总结 shallowReactive与shallowRefshallowReactiveApp.vueDemo.vue shallowRefDemo.vue 总结 readonly与shallowReadonlyApp.vueDemo.vueDemoTwo.vue总结 toRef和toRefs toRef App.vue <template&…

SpringCloud入门实战(七)-Hystrix服务限流

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术&#xff0c;都可以先去官网先看看&…

电子行业数字工厂管理系统的生产管理模式是什么

随着电子行业的不断发展&#xff0c;数字工厂管理系统在生产管理中的应用越来越广泛。数字工厂系统是一种综合管理系统&#xff0c;它将企业的采购、生产、销售、财务、人力资源等多个方面进行整合&#xff0c;实现了企业资源的有效整合和管理效率的提升。电子行业数字工厂系统…

vue 使用 threejs 加载第三方模型

threejs 加载第三方模型 接专栏的上一篇博文&#xff0c;这是加载第三方模型相关的。这篇博文拖了很久了哈&#xff0c;简单说一下吧&#xff0c;本来不想写了的&#xff0c;觉得相对来说比较简单&#xff0c;但是还是稍微一扯。为啥要加载第三方呢&#xff0c;上一篇我们绘制的…

人工智能:技术的进步与未来展望

一、引言 1.人工智能的定义 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是指由人类创造的具有某种程度上模拟、延伸或超越人类智能的技术。AI技术使计算机能够从数据中学习、推理、适应并执行类似人类大脑所进行的任务。这些任务包括图像识别、…

【Linux命令行与Shell脚本编程】三,Linux文件系统

Linux命令行与Shell脚本编程 第三章 Linux文件系统 文章目录 Linux命令行与Shell脚本编程三.Linux文件系统3.1,查看文件3.1.1,ls 命令 选项和参数3.1.2,过滤输出列表 3.2, 处理文件3.2.1,touch 创建文件3.2.2,cp 复制文件cp -i 覆盖询问cp -R 递归cp命令中使用通配符 3.2.3,ta…

NFS网络文件共享服务

NFS网络文件共享服务 NFS&#xff08;network file system&#xff09;网络文件系统 可以把对方主机资源直接挂载到自己电脑上&#xff0c;比FTP更加方便 明文传输 没有认证机制 安全性很差 只在局域网使用 依赖RPC(远程过程调用&#xff09; 需要安装nfs-utils(提供NFS服务)…

对话西门子Mendix:低代码与亚马逊云科技Serverless的底层融合,助力企业提效降本...

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 3月30日 亚马逊云科技举办了主题为“全面拥抱Serverless时代”的创新大会&#xff0c;分享了亚马逊云科技17年引领Serverless发展的技术创新、应用场景以及全球客户的创新实践。 会上&#xff0c;亚马逊云科技大中华区产品部…

RocketMQ高级概念

一 RocketMQ核心概念 1.消息模型&#xff08;Message Model&#xff09; RocketMQ主要由 Producer、Broker、Consumer 三部分组成&#xff0c;其中Producer 负责⽣产消息&#xff0c;Consumer 负责消费消息&#xff0c;Broker 负责存储消息。Broker 在实际部署过程中对应⼀台…

[MLIR] 转换流程详解(以Toy接入为例)

参考资料&#xff1a; [MLIR] 转换流程详解(以Toy接入为例) - 知乎 (zhihu.com) 在本文中我们使用 toy 语言接入 MLIR&#xff0c;最终转化为 LLVM IR (或目标代码)为例&#xff0c;来讲解 MLIR 的转换流程。具体的流程如下&#xff1a; .toy 源文件 → AST → MLIRGen(遍历AST…

【SSM】整合开发

文章目录 1.ssm整合过程1.1步骤1.2 Spring整合SpringMVC的问题 2.准备工作2.1 添加依赖2.2 创建数据库 3.相关配置3.1 整合Spring和Mybatis3.2 引入SpringMVC3.3 spring整合入web项目 4.测试整合效果 1.ssm整合过程 1.1步骤 &#xff08;1&#xff09;Spring整合MyBatis 通过…

PHP数组的功能及实现案例

目录 前言 一、什么是数组 二、创建关联数组 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 三、创建索引数组 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 前言 1.若有选择&#xff0c;可实现在目录里进行快速查找&#xff…

golang-GC垃圾回收

参考&#xff1a;https://juejin.cn/post/7040737998014513183#comment 垃圾回收&#xff08;Garbage Collection&#xff0c;缩写为GC&#xff09;&#xff0c;是一种自动内存管理机制。 相关术语 赋值器:说白了就是你写的程序代码&#xff0c;在程序的执行过程中&#xff0c…