CWE4.8 -- 2022年危害最大的25种软件安全问题

【摘要】CWE的危害最大的25种软件安全问题是安全从业人员、软件架构师、设计人员、开发人员、测试人员、用户、项目经理、安全研究人员, 以及教育工作者和标准组织等专业人员应对软件安全问题和降低软件安全风险的一种实用、方便的数据资源。我们来看下新版的《2022年危害最大的25种安全问题》在安全预防上会给了我们哪些安全提示。

1. CWE 4.8的变化

2022年过了一半了,继《CWE 4.7中的新视图 – 工业控制系统的安全漏洞类别》 发布还不到2个月, 6月底又出了一个版本 – CWE4.8。做为软件安全研究的重要标准,我们来看下这个版本有那些变化。

变化类型Version 4.7Version 4.8
弱点926927
分类351352
视图4748
废弃6262
汇总13861389

下面我们来的看下具体弱点的变动。

1.1. CWE-1386:Windows 连接点/挂载点上的不安全操作

这是个新增的Windows的问题,具体位置如下图:
./reference/CWE-1386.png

这个新弱点被划分在CWE-664(在生命周期中对资源的控制不恰当)下CWE-706(使用不正确的解析名称或索引), 以及CWE-59(在文件访问前对链接解析不恰当(链接跟随))下的一个子弱点。

在 Windows 中,NTFS5 允许文件系统可以对对象生成重解析点(reparse points)。

  • 连接点: 应用程序可以创建从一个目录到另一个目录的硬链接,称为连接点。
  • 挂载点: 创建从目录到驱动器号的映射,称为挂载点。

Windows文件或者目录可以包含一个重解析点,它是一个用户自定义数据的集合。储存它们的程序和解析处理这些数据文件的系统过滤器能识别这些数据的格式。 当一个应用程序设置了一个重解析点,它在保存数据时将添加一个唯一的重解析标签用于标示所存储的数据。当一个文件系统打开一个带重解析点的文件时,首先尝试寻找由重解析点所标识文件格式关联的文件系统过滤器,如果找到文件系统过滤器,过滤器处理重解析点数据所指示的文件。如果没有找到过滤器,那么打开文件的操作失败。

CWE-1386是由于windows打开一个文件或目录时,如果该文件或目录关联到一个目标控制范围之外的连接点或挂载点,则可能允许攻击者使软件读取、写入、删除或以其他方式对未经授权的文件进行操作。

如果一个文件被特权程序使用,它可以被一个敏感文件的硬链接替换(例如,AUTOEXEC.BAT),那么攻击者可以提升特权。当进程打开文件时,攻击者可以冒用该进程的特权,诱骗特权进程读取、修改或删除敏感文件,阻止程序准确处理数据,操作也可以指向注册表和信号量。

例如:CVE-2021-26426,特权服务允许攻击者使用目录连接删除未经授权的文件,从而导致以 SYSTEM 身份执行任意代码。

1.2. CWE-1388:物理访问问题

这是个硬件设计上新增的硬件分类,具体如下图。
./reference/CWE-1388.png

老样子,硬件问题不是我的专长,不做过多的解读。

2. CWE-1387:CWE Top 25 (2022)

距离2021年的《CWE发布2021年最危险的25种软件缺陷》差不多刚好一年。岁月如梭,光阴似箭,好快!又是一年荷花盛。

  • 今年的排行榜
排行CWE得分KEV Count (CVEs)变动
1CWE-787:跨界内存写64.2620
2CWE-79:在Web页面生成时对输入的转义处理不恰当(跨站脚本)45.9720
3CWE-89:SQL命令中使用的特殊元素转义处理不恰当(SQL注入)22.117./reference/triangle-green.png+3
4CWE-20:输入验证不恰当20.63200
5CWE-125:跨界内存读17.671./reference/triangle-red.png-2
6CWE-78:OS命令中使用的特殊元素转义处理不恰当(OS命令注入)17.5332./reference/triangle-red.png-1
7CWE-416:释放后使用15.5280
8CWE-22:对路径名的限制不恰当(路径遍历)14.08190
9CWE-352:跨站请求伪造(CSRF)11.5310
10CWE-434:危险类型文件的不加限制上传9.5660
11CWE-476:空指针解引用7.150./reference/triangle-green.png+4
12CWE-502:不可信数据的反序列化6.687./reference/triangle-green.png+1
13CWE-190:整数溢出或超界折返6.532./reference/triangle-red.png-1
14CWE-287:认证机制不恰当6.3540
15CWE-798:使用硬编码的凭证5.660./reference/triangle-green.png+1
16CWE-862:授权机制缺失5.531./reference/triangle-green.png+2
17CWE-77:在命令中使用的特殊元素转义处理不恰当(命令注入)5.425./reference/triangle-green.png+8
18CWE-306:关键功能的认证机制缺失5.156./reference/triangle-red.png-7
19CWE-119:内存缓冲区边界内操作的限制不恰当4.856./reference/triangle-red.png-2
20CWE-276:缺省权限不正确4.840./reference/triangle-red.png-1
21CWE-918:服务端请求伪造(SSRF)4.278./reference/triangle-green.png+3
22CWE-362:使用共享资源的并发执行不恰当同步问题(竞争条件)3.576./reference/triangle-green.png+11
23CWE-400:未加控制的资源消耗(资源耗尽)3.562./reference/triangle-green.png+4
24CWE-611:XML外部实体引用的不恰当限制(XXE)3.380./reference/triangle-red.png-1
25CWE-94:对生成代码的控制不恰当(代码注入)3.324./reference/triangle-green.png+3

这个排名是CWE的团队,依据美国国家标准与技术研究院 (National Institute of Standards and Technology(NIST))的 国家漏洞库(National Vulnerability Database(NVD)) 记录的披露漏洞(Common Vulnerabilities and Exposures(CVE)), 以及网络安全和基础设施安全局 (Cybersecurity and Infrastructure Security Agency(CISA))的已知披露漏洞目录(Known Exploited Vulnerabilities (KEV)), 通过通用缺陷评分系统(Common Vulnerability Scoring System (CVSS))对每个缺陷进行评分。排名统计了2020 到2021年的37,899 个CVE,每个CVE根据问题的发生率和严重程度的一个公式计算得分,最终得到问题的排名。

2.1. 排名变动情况

  • 具体变动如下图:
    ./reference/top25-rank-change-2021-2022.png

  • 上升最快的名单:

    • 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的记分明细

排名CWENVD计数Avg CVSS总分
1CWE-787:跨界内存写41237.9364.2
2CWE-79:在Web页面生成时对输入的转义处理不恰当(跨站脚本)47405.7345.97
3CWE-89:SQL命令中使用的特殊元素转义处理不恰当(SQL注入)12638.6622.11
4CWE-20:输入验证不恰当15207.1920.63
5CWE-125:跨界内存读14896.5417.67
6CWE-78:OS命令中使用的特殊元素转义处理不恰当(OS命令注入)9998.6717.53
7CWE-416:释放后使用10217.7915.5
8CWE-22:对路径名的限制不恰当(路径遍历)10107.3214.08
9CWE-352:跨站请求伪造(CSRF)8477.211.53
10CWE-434:危险类型文件的不加限制上传5518.619.56
11CWE-476:空指针解引用6116.497.15
12CWE-502:不可信数据的反序列化3788.736.68
13CWE-190:整数溢出或超界折返4527.526.53
14CWE-287:认证机制不恰当4127.886.35
15CWE-798:使用硬编码的凭证3338.485.66
16CWE-862:授权机制缺失4686.535.53
17CWE-77:在命令中使用的特殊元素转义处理不恰当(命令注入)3258.365.42
18CWE-306:关键功能的认证机制缺失32885.15
19CWE-119:内存缓冲区边界内操作的限制不恰当3237.734.85
20CWE-276:缺省权限不正确3687.044.84
21CWE-918:服务端请求伪造(SSRF)3177.164.27
22CWE-362:使用共享资源的并发执行不恰当同步问题(竞争条件)3016.563.57
23CWE-400:未加控制的资源消耗(资源耗尽)2776.933.56
24CWE-611:XML外部实体引用的不恰当限制(XXE)2327.583.38
25CWE-94:对生成代码的控制不恰当(代码注入)1928.63.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%。
Year2019%2020%2021%2022%
Unique Class/Pillar CWEs728%936%832%728%
Unique Base/Variant/Compound CWEs1872%1664%1768%1872%
Mappings to Class954843%645030%305817%362616%
Mappings to Base/Var/Comp1241157%1477270%1483983%1925484%
Total Maps with Top 25 CWEs219590%212220%178970%228800%
Maps to All CWEs263410%271680%242820%306810%
Maps to Bases1091950%1298861%1329174%1738676%
Maps to Variants7994%9184%8075%10214%
Maps to Compounds6933%8664%7414%8474%

3. 结论

  • 前十位的缺陷变动不大,主要还是内存读写造成的缓冲区溢出,以及外部输入校验所带来的各种注入问题;
  • 内存安全问题是C语言指针的灵活性给我们带来的后遗症,也一直是困扰我们的主要安全问题。现在安全性已经成为软件开发的重要需求。新兴的Rust语言是否能够给在内存管理方面带来较大的改善,还需要时间的证明;或者在内存安全和编程灵活性的平衡上,寻找一种更容易被广大开发者接受的新语言;
  • 外部输入引发的各种注入类问题,在今后相当长的一段时间会长期伴随者我们。零信任、供应链安全框架的提出,虽然在安全概念和设计指导上达到了一个新的高度,但在软件应用落地时,还取决于广大的开发人员对安全意识的逐步提高,从而在代码中有效的执行各种对外部输入的有效的检测,以及各种凭证的有效验证。当然凭证的校验可以通过使用安全模块来进一步降低开发中的安全风险;
  • 在TOP 25的数据统计上,CWE在尽量将各种软件问题归结到更细力度的问题分类上。通过这些年新版本的快速发布,已经增加了相当多的细分类型(Base/Variant/Compound)。 从2017年3.0的714个增加到了现在4.8版本的927个,增加了将近30%。这也说明我们对问题的认知程度在细化和加深,这更加有利于我们在安全防范中,采取更精细的检查和更具针对性的防范措施,从而降低安全防御的成本。

4. 参考

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值