CWE4.6标准中加入 OWASP 2021 TOP10
摘要: 新发布的CWE4.6标准,加入了OWASP 2021 TOP10的视图。
本文分享自华为云社区《CWE 4.6 和 OWAPS TOP10(2021)》,作者: Uncle_Tom。
1. CWE 4.6
CWE的更新,并没有因为疫情的影响,仍然保持着每年3-4个版本的更新速度,可见软件安全的重要性。这个月初4.6版本如约而至。我们来看下这次的更新,都有哪些亮点。
1.1. CWE V4.5 vs V4.6
通常可以从两个角度的对比CWE版本的变动,快速得到大致的差异信息。
1.1.1. CWE节点类型和数量的变动
每个CWE由一个唯一的编号表示一个弱点的分类节点,每个节点由他的类型确定它的节点种类,共有8种不同类型的节点类型。 所以每种节点类型数量的变化可以直接反映这个版本的变化大小和变动方式。 每个版本的都有一个链接反映节点数量的变化。
先来看下两个版本CWE节点数量上的差异:

从这个表的差异,不难看出:
- 弱点(Weakness)增加了两个。目前CWE已经经过了15年左右的发展,基本上处于稳定状态,不太会有过多的CWE弱点类的节点增加;
- 视图(View)增加了两个。视图是以不同的研究人员角度出发,对某些弱点的一个分类汇总的视图。在视图之下,通常是分类(Category)节点对某类弱点(Weakness)的一个分类。所以视图的增加,通常会伴随着分类(Category)节点的增加, 这次就增加了20个分类(Category)节点。
注,关于CWE节点的说明,请参看《话说CWE 4.2的新视图》。
1.1.2. 从CWE XML schema变化看CWE 4.6的变动
CWE的所有信息是通过XML格式定义保存的,所以定义xml格式的schema文件xsd,就成了洞察CWE结构变化的最好方法。
每次CWE的版本,都会有一个链接来查看Schema的变化, 你也可以直接比较两个版本的Schema。
- 比较两个版本的schema文件,发现只有以下两个变动,如下图:

- 检测方法枚举值(Detection Method Enumeration)的变动
- 增加了"形式化验证(Formal Verification)"。形式化的方法已经开始逐步从学术走向了实际应用, 但形式化的方法依然会带来极高的验证成本;
- 增加了"模拟/仿真(Simulation / Emulation)"。 通常这个方法用于硬件安全的验证。
- 有效性枚举值()的变动
- 增加了"不鼓励的常见做法(Discouraged Common Practice)"。 也就是说这个安全消减措施的无效,不建议使用。避免了采取一些习惯性认为有效,实际上确无效的安全措施,防止习惯性思维导致的无效劳动。
1.1.3. 新增的CWE节点
- CWE-1341(重复释放同一个资源或句柄(Multiple Releases of Same Resource or Handle))

如图,CWE-1341(重复释放同一个资源或句柄), 位于:CWE-710(编程规范违背) --> CWE-675(对资源的重复操作)下面。是我们熟悉的内存问题:CWE-415(双重释放)的上一级。 增加这个节点的原因,除了内存的双重释放,资源或文件句柄也存在着双重释放的问题。为了区分两种不同的场景,在细分上增加了这个新节点。
例如下面的代码,在第二次释放文件句柄的时候,会返回一个错误值。
char b[2000];
FILE *f = fopen("dbl_cls.c", "r");
if (f)
{
b[0] = 0;
fread(b, 1, sizeof(b) - 1, f);
printf("%s\n'", b);
int r1 = fclose(f);
printf("\n-----------------\n1 close done '%d'\n", r1); int r2 = fclose(f); // Double close
printf("2 close done '%d'\n", r2);
}
- CWE-1342(瞬时执行后微架构状态造成信息泄漏(Information Exposure through Microarchitectural State after Transient Execution))

处理器在不正确的微指令辅助(microcode assists)或预测执行(speculative execution)后,处理器没有正确清除微架构状态,从而导致信息泄漏。这种瞬时执行的痕迹可能会保留在微体系结构缓冲区中,从而导致微体系结构状态发生变化,攻击者可以使用侧信道分析获取敏感信息。例如,加载值注入 (LVI) REF-1202 可以利用将错误值直接注入中间加载和存储缓冲区。
注:这个问题属于CPU架构指令集和设计的问题,这个不是我的研究领域,跳过。
1.1.4. 新增的视图
- CWE-1343(2021最重要的硬件弱点(Weaknesses in the 2021 CWE Most Important Hardware Weaknesses List))
这个不是我的研究领域,跳过。 - CWE-1344(OWASP 2021 TOP10 弱点(Weaknesses in OWASP Top Ten (2021)))
这个的视图体现了OWASP 九月分发布的 OWASP TOP10 (2021)。 这个是OWASP 自2017 年之后,时隔四年,再次发布TOP10。接下来我们重点看下这个视图。
2. CWE-1344 OWASP TOP10(2021)
Web应用程序安全性项目(Open Web Application Security Project (OWASP))是一个开放的社区, 该社区致力于使组织开发、购买和维护的应用程序和api,可以被信任。
OWASP已经先后在:2004,2007,2010,2013,2017,先后发布了OWASP TOP10,指出了Web应用软件存在的高危安全问题,
并为每种漏洞按照其发生率、检测能力、影响和可利用性设定了一个优先级排名,从而帮助组织按照漏洞的优先级,关注、理解、正确识别、减轻在应用程序中这些漏洞造成的危害。 同时也为检测工具厂商对这些高危的安全问题的检测提出了要求。
2.1. OWASP TOP10(2021)

2.2. OWASP2017和2021 TOP10的变化
OWASP2017和2021 TOP10的变化,如下图:

2.2.1. A01:2021-中断访问控制
从第五位上升到第一位。数据表明,平均而言,3.81%的受测应用程序具有一个或多个常见CWE,其中CWE在此风险类别中的出现次数超过31.8万次。映射到该问题的CWE多达34个,是映射CWE最多的一个分类。
2.2.2. A02:2021-加密故障
相较2017年上移一位,成为第二名,以前称为A3:2017-敏感数据泄露,敏感数据泄露是问题的表现,而不是根本原因。更新后的名称,侧重于故障根因与加密相关的问题。此类别通常会导致敏感数据泄露或系统泄露。
2.2.3. A03:2021-注入
从2017年的第一位,滑落到第三位。应用程序对此类问题的测试覆盖率达到94%,最大发生率为19%,平均发生率为3.37%,映射到这一类别的33个CWE在27.4万次的应用中发生率第二高。在此版本中,跨站脚本问题归于此类别的一个子类。
2.2.4. A04:2021-不安全的设计
这个是2021年的新类别,重点是与设计缺陷相关的风险。作为一个有"安全左移"追求的企业,需要更多的威胁建模、安全的设计模式和原则以及参考架构。
这里发散下,如果要从很大程度上解决软件的安全问题,安全左移的概念不仅仅是指检查的左移,而是更加向左,延伸到设计。这个也是上面提到的采用威胁建模、安全设计模式和原则,以及使用安全模块,提前的完成软件安全的纵深防御。Foritfy 的技术骨干Brian Chess 与 Jacob West写过一本书《用静态分析方法确保编程安全(Secure Programming with Static Analysis)》,书中就提到“一半的安全问题都源自软件的设计,而非源码。”。我们必须意识到,在没有安全意识的设计人员开发出来的系统是非常的危险的。不安全的设计无法通过完美的实现来修复,安全起源于设计。

2.2.5. A05:2021-安全配置错误
从上一版的第六名上升到第五名。90%的应用程序都经过了某种形式的配置错误测试,平均发生率为 4.5%,并且有超过 20.8万次 CWE 映射到此风险类别。随着越来越多的人转向高度可配置的软件,这一类问题成上升趋势并不奇怪。在此版本中,A4:2017-XML 外部实体(XXE)被归为此类别的一个子类。
2.2.6. A06:2021-易受攻击和过时的组件
2017年为"使用具有已知漏洞的组件",这一类别从2017年的第九位上升到第六位,是我们难以测试和评估风险的已知问题。它是唯一一个未将任何常见漏洞和披露(CVE) 映射到所包含的 CWE 的类别,因此漏洞利用和影响权重采用了默认值5.0。
2.2.7. A07:2021-标识和身份验证失败
2017是"身份验证中断",从第二个位置向下滑动到第七位。现在包括与标识失败更相关的 CWE。这个类别仍然是前10名中不可或缺的一部分,标识和身份验证的标准化验证框架可用性的增强,似乎对这类问题的减少起到一定的帮助作用。
2.2.8. A08:2021-软件和数据完整性故障
2021年的新类别,侧重于在不验证完整性的情况下做出与软件更新、关键数据和 CI/CD 管道相关的假设。这类问题是CVE/CVSS影响度值最高的一个。在此版本中,A8:2017-不安全的反序列化并入到这个类别。
2.2.9. A09:2021-安全日志记录和监控故障
2017的A10:2017-日志记录和监控不足,从之前的第十位上升到第九位。此类别已扩展为包含更多类型的故障,测试具有挑战性,并且在 CVE/CVSS 数据中不能很好地表示。但是,此类别中的故障可能会直接影响可见性、事件警报和取证。
2.2.10. A10:2021-服务器端请求伪造
2021新增加的类型。数据显示,发生率相对较低,测试覆盖率高于平均水平,漏洞利用和影响潜力的评分高于平均水平。
3. 参考
- https://cwe.mitre.org/data/reports/diff_reports/latest.html
- https://cwe.mitre.org/data/definitions/1344.html
- https://owasp.org/Top10/
- https://github.com/OWASP/Top10
CWE4.6标准中加入 OWASP 2021 TOP10的更多相关文章
- Web标准中用于改善Web应用程序性能的各种方法总结
提起Web应用程序中的性能改善,广大开发者们可能会想到JavaScript与DOM访问等基于各种既存技术的性能改善方法.最近,各种性能改善方法被汇总成为一个Web标准. 本文对Web标准中所包含的各种 ...
- 对C标准中空白字符(空格、回车符(\r)、换行符(\n)、水平制表符(\t)、垂直制表符(\v)、换页符(\f))的理解
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] C标准库里<ctype.h>中声明了一个函数: int isspace(int c); 该函数判断字符c是否 ...
- C标准中一些预定义的宏
C标准中指定了一些预定义的宏,对于编程经常会用到.下面这个表中就是一些常常用到的预定义宏. 宏(双下滑线) 意义 __DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字) __ ...
- C标准中关于空指针的那些事
1 C标准不保证用所有二进制位都为0的变量来表示空指针,但它保证空指针与任何对象或函数的指针都不相等,取地址操作符&永远也不会返回空指针: 2 C标准称在指针上下文中的"值为0的整形 ...
- C++11标准中常用到的各种算法汇总.
在C++11标准中定义了很多算法,这些算法可以让我们很方便的操作各种容器和数组,这里要注意一下,这些算法操作的并非容器,而是迭代器,然后通过迭代器来操作容器中的数据,算法本身并不会关注容器中保存的数据 ...
- C标准中一些预定义的宏,如__FILE__,__func__等
C标准中一些预定义的宏 C标准中指定了一些预定义的宏,对于编程经常会用到.下面这个表中就是一些常常用到的预定义宏. 宏 意义 __DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串 ...
- 09_MySQL DQL_SQL99标准中的多表查询(外连接)
# 二.外连接/* 场景:查询值在1个表中出现,在另外1个表中没有出现 特点: 0.也是两张表的字段拼接,分为主表和从表 1.外连接的结果,将显示主表中的所有记录行 如果连接字段在从表中有记录,则显示 ...
- 第三篇:POSIX标准中的 “ 限制 ”
前言 在POSIX标准中,定义了许多限制.这些限制大约分为五类,不同类型的限制获取的方式不一样. 限制值分类 1. 不变的最小值 这类型的限制值是静态的,固定的. 2. 不变值 同上 3. 运行时可以 ...
- POSIX标准中的 “ 限制 ”
前言 在POSIX标准中,定义了许多限制.这些限制大约分为五类,不同类型的限制获取的方式不一样. 限制值分类 1. 不变的最小值 这类型的限制值是静态的,固定的. 2. 不变值 同上 3. 运行时可以 ...
- web标准中定义id与class有什么区别吗
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/x ...
随机推荐
- C++ 与 QML 之间进行数据交互的几种方法
一.属性绑定 这是最简单的方式,可以在QML中直接绑定C++ 对象的属性.通过在C++ 对象中使用Q_PROPERTY宏定义属性,然后在QML中使用绑定语法将属性与QML元素关联起来. person. ...
- PTA乙级1044C++(手动打表hhh)
1044 火星数字 (20 分) 火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, j ...
- stable-diffusion-webui官方版本地安装教程
stable-diffusion-webui官方版本地安装教程 最终效果 1. python安装 官网:https://www.python.org/downloads/release/python- ...
- t分布及t分布表
http://baike.baidu.com/view/1419652.htm 下表列出了自由度为1-30以及80.100.120等t-分布的单侧和双侧区间值.例如,当样本数量n=5时,则自由度v ...
- [Python急救站课程]圆的面积计算
利用公式计算圆的面积程序 radius = 25 # 设置圆的面积 area = 3.1415926 * radius * radius # 输入计算公式 print(area) # 输出计算值 pr ...
- IIS和PHP相关权限问题及解决方案_500错误_500.19 - Internal Server Error与401未授权错误_401.3 - Unauthorized
在IIS添加网站(假设站点为xxx.yyy.com,本例假设IIS版本为7.5或以上),如果采用IIS默认配置,会在创建站点同时创建相应同名的"应用程序池"(也是xxx.yyy.c ...
- (Good topic)字符串的最大公因子 (3.21leetcode每日打卡)
对于字符串 S 和 T,只有在 S = T + ... + T(T 与自身连接 1 次或多次)时,我们才认定 "T 能除尽 S". 返回最长字符串 X,要求满足 X 能除尽 s ...
- .NET8.0 AOT 经验分享 - 专项测试各大 ORM 是否支持
AOT 特点 发布和部署本机 AOT 应用具有以下优势: 最大程度减少磁盘占用空间:使用本机 AOT 发布时,将生成一个可执行文件,其中仅包含支持程序所需的外部依赖项的代码.减小的可执行文件大小可能会 ...
- Modbus 转PROFINET 网关 TS-180在级联通讯中的应用
一.硬件连接 TS-180 具有冗余网口功能,用户可以通过级联方式连接来进行通讯,其他资料可参考说明书.将西门子 S7-300 PLC 通过网线与5台 TS-180 串联,用户可以选择下列两种连接方式 ...
- excel柱状图自定x轴y轴
在Excel中,柱状图是一种常用的数据可视化方式,可以直观地展示不同数据之间的比较关系.默认情况下,Excel会根据数据自动生成X轴和Y轴的刻度和标签.然而,如果你想要自定义X轴和Y轴,在柱状图中显示 ...