1. CWE 4.8的变化
2022年过了一半了,继《CWE 4.7中的新视图 – 工业控制系统的安全漏洞类别》 发布还不到2个月, 6月底又出了一个版本 – CWE4.8。做为软件安全研究的重要标准,我们来看下这个版本有那些变化。
变化类型 |
Version 4.7 |
Version 4.8 |
弱点 |
926 |
927 |
分类 |
351 |
352 |
视图 |
47 |
48 |
废弃 |
62 |
62 |
汇总 |
1386 |
1389 |
- 从汇总表可以看出:
- 新增1个弱点:
Weakness-Base CWE-1386:Windows 连接点/挂载点上的不安全操作(Insecure Operation on Windows Junction / Mount Point);
- 新增1个分类:
CWE CATEGORY: CWE-1388:物理访问问题(Physical Access Issues and Concerns)
- 新增1个视图:
View CWE-1387:CWE Top 25 (2022)(Weaknesses in the 2022 CWE Top 25 Most Dangerous Software Weaknesses)。
下面我们来的看下具体弱点的变动。
1.1. CWE-1386:Windows 连接点/挂载点上的不安全操作
这是个新增的Windows的问题,具体位置如下图:
老样子,硬件问题不是我的专长,不做过多的解读。
2. CWE-1387:CWE Top 25 (2022)
距离2021年的《CWE发布2021年最危险的25种软件缺陷》差不多刚好一年。岁月如梭,光阴似箭,好快!又是一年荷花盛。
排行 |
CWE |
得分 |
KEV Count (CVEs) |
变动 |
1 |
CWE-787:跨界内存写 |
64.2 |
62 |
0 |
2 |
CWE-79:在Web页面生成时对输入的转义处理不恰当(跨站脚本) |
45.97 |
2 |
0 |
3 |
CWE-89:SQL命令中使用的特殊元素转义处理不恰当(SQL注入) |
22.11 |
7 |
|
6 |
CWE-78:OS命令中使用的特殊元素转义处理不恰当(OS命令注入) |
17.53 |
32 |
|
12 |
CWE-502:不可信数据的反序列化 |
6.68 |
7 |
|
14 |
CWE-287:认证机制不恰当 |
6.35 |
4 |
0 |
15 |
CWE-798:使用硬编码的凭证 |
5.66 |
0 |
|
17 |
CWE-77:在命令中使用的特殊元素转义处理不恰当(命令注入) |
5.42 |
5 |
|
19 |
CWE-119:内存缓冲区边界内操作的限制不恰当 |
4.85 |
6 |
|
21 |
CWE-918:服务端请求伪造(SSRF) |
4.27 |
8 |
|
23 |
CWE-400:未加控制的资源消耗(资源耗尽) |
3.56 |
2 |
|
25 |
CWE-94:对生成代码的控制不恰当(代码注入) |
3.32 |
4 |
上升最快的名单:
- CWE-362:使用共享资源的并发执行不恰当同步问题(竞争条件): 从 33 上升到 22;
- CWE-94:对生成代码的控制不恰当(代码注入): 从 28 上升到 25;
- CWE-400:未加控制的资源消耗(资源穷尽): 从 27 上升到 23;
- CWE-77:在命令中使用的特殊元素转义处理不恰当(命令注入)): 从25 上升到 17;
- CWE-476:空指针解引用: 从 15 上升到 11。
下降最快的名单:
- CWE-306:关键功能的认证机制缺失: 从 11 下降到 18;
- CWE-200:信息泄露: 从 20 下降到 33;
- CWE-522:不充分的凭证保护机制: 从 21 下降到 38;
- CWE-732:关键资源的不正确权限授予: 从 22 下降到 30。
新进前25的有:
- CWE-362:使用共享资源的并发执行不恰当同步问题(竞争条件): 从 33 上升到 22;
- CWE-94:对生成代码的控制不恰当(代码注入): 从 28 上升到 25;
- CWE-400:未加控制的资源消耗(资源穷尽): 从 27 上升到 23;
跌出前25的有:
- CWE-200:信息泄露: 从 20 下降到 33;
- CWE-522:不充分的凭证保护机制: 从 21 下降到 38;
- CWE-732:关键资源的不正确权限授予: 从 22 下降到 30。
2.2. TOP 25的记分明细
排名 |
CWE |
NVD计数 |
Avg CVSS |
总分 |
1 |
CWE-787:跨界内存写 |
4123 |
7.93 |
64.2 |
2 |
CWE-79:在Web页面生成时对输入的转义处理不恰当(跨站脚本) |
4740 |
5.73 |
45.97 |
3 |
CWE-89:SQL命令中使用的特殊元素转义处理不恰当(SQL注入) |
1263 |
8.66 |
22.11 |
4 |
CWE-20:输入验证不恰当 |
1520 |
7.19 |
20.63 |
5 |
CWE-125:跨界内存读 |
1489 |
6.54 |
17.67 |
6 |
CWE-78:OS命令中使用的特殊元素转义处理不恰当(OS命令注入) |
999 |
8.67 |
17.53 |
7 |
CWE-416:释放后使用 |
1021 |
7.79 |
15.5 |
8 |
CWE-22:对路径名的限制不恰当(路径遍历) |
1010 |
7.32 |
14.08 |
9 |
CWE-352:跨站请求伪造(CSRF) |
847 |
7.2 |
11.53 |
10 |
CWE-434:危险类型文件的不加限制上传 |
551 |
8.61 |
9.56 |
11 |
CWE-476:空指针解引用 |
611 |
6.49 |
7.15 |
12 |
CWE-502:不可信数据的反序列化 |
378 |
8.73 |
6.68 |
13 |
CWE-190:整数溢出或超界折返 |
452 |
7.52 |
6.53 |
14 |
CWE-287:认证机制不恰当 |
412 |
7.88 |
6.35 |
15 |
CWE-798:使用硬编码的凭证 |
333 |
8.48 |
5.66 |
16 |
CWE-862:授权机制缺失 |
468 |
6.53 |
5.53 |
17 |
CWE-77:在命令中使用的特殊元素转义处理不恰当(命令注入) |
325 |
8.36 |
5.42 |
18 |
CWE-306:关键功能的认证机制缺失 |
328 |
8 |
5.15 |
19 |
CWE-119:内存缓冲区边界内操作的限制不恰当 |
323 |
7.73 |
4.85 |
20 |
CWE-276:缺省权限不正确 |
368 |
7.04 |
4.84 |
21 |
CWE-918:服务端请求伪造(SSRF) |
317 |
7.16 |
4.27 |
22 |
CWE-362:使用共享资源的并发执行不恰当同步问题(竞争条件) |
301 |
6.56 |
3.57 |
23 |
CWE-400:未加控制的资源消耗(资源耗尽) |
277 |
6.93 |
3.56 |
24 |
CWE-611:XML外部实体引用的不恰当限制(XXE) |
232 |
7.58 |
3.38 |
25 |
CWE-94:对生成代码的控制不恰当(代码注入) |
192 |
8.6 |
3.32 |
2.3. 排名统计的改进
为了更好的让人们明白每一个缺陷的特性,在缺陷的映射上,尽量映射到更细力度的缺陷枚举类型上,比如base、Variant、Compound,这样有利于从更细粒度上解决问题。所以TOP 25中的CWE的类型正逐步从支柱(pillar)、类(Class) 向更细力度的缺陷枚举类型base、Variant、Compound上过度。
比如:
- Class/Pillar 从2020年的36%,降到现在的28%;
- Class 从2019年的43%,降到现在的16%;
- Base/Var/Comp 从2019年的 57%上升到84%;
- 对应到base类型的问题,从2019年的 50% 提升到现在的 76%。
Year |
2019 |
% |
2020 |
% |
2021 |
% |
2022 |
% |
Unique Class/Pillar CWEs |
7 |
28% |
9 |
36% |
8 |
32% |
7 |
28% |
Unique Base/Variant/Compound CWEs |
18 |
72% |
16 |
64% |
17 |
68% |
18 |
72% |
Mappings to Class |
9548 |
43% |
6450 |
30% |
3058 |
17% |
3626 |
16% |
Mappings to Base/Var/Comp |
12411 |
57% |
14772 |
70% |
14839 |
83% |
19254 |
84% |
Total Maps with Top 25 CWEs |
21959 |
0% |
21222 |
0% |
17897 |
0% |
22880 |
0% |
Maps to All CWEs |
26341 |
0% |
27168 |
0% |
24282 |
0% |
30681 |
0% |
Maps to Bases |
10919 |
50% |
12988 |
61% |
13291 |
74% |
17386 |
76% |
Maps to Variants |
799 |
4% |
918 |
4% |
807 |
5% |
1021 |
4% |
Maps to Compounds |
693 |
3% |
866 |
4% |
741 |
4% |
847 |
4% |
- 注:CWE的枚举类型详见:《话说CWE 4.2的新视图》。
3. 结论
- 前十位的缺陷变动不大,主要还是内存读写造成的缓冲区溢出,以及外部输入校验所带来的各种注入问题;
- 内存安全问题是C语言指针的灵活性给我们带来的后遗症,也一直是困扰我们的主要安全问题。现在安全性已经成为软件开发的重要需求。新兴的Rust语言是否能够给在内存管理方面带来较大的改善,还需要时间的证明;或者在内存安全和编程灵活性的平衡上,寻找一种更容易被广大开发者接受的新语言;
- 外部输入引发的各种注入类问题,在今后相当长的一段时间会长期伴随者我们。零信任、供应链安全框架的提出,虽然在安全概念和设计指导上达到了一个新的高度,但在软件应用落地时,还取决于广大的开发人员对安全意识的逐步提高,从而在代码中有效的执行各种对外部输入的有效的检测,以及各种凭证的有效验证。当然凭证的校验可以通过使用安全模块来进一步降低开发中的安全风险;
- 在TOP 25的数据统计上,CWE在尽量将各种软件问题归结到更细力度的问题分类上。通过这些年新版本的快速发布,已经增加了相当多的细分类型(Base/Variant/Compound)。 从2017年3.0的714个增加到了现在4.8版本的927个,增加了将近30%。这也说明我们对问题的认知程度在细化和加深,这更加有利于我们在安全防范中,采取更精细的检查和更具针对性的防范措施,从而降低安全防御的成本。
4. 参考
- Differences between Version 4.7 and Version 4.8
- 2022 CWE Top 25 Most Dangerous Software Weaknesses
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8588 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!
一些计时软件,生产力工具
上一篇
2022年6月27日
|