ToB企服应用市场:ToB评测及商务社交产业平台

标题: 细数2019-2023年CWE TOP 25 数据,看软件缺陷的防护 [打印本页]

作者: 立聪堂德州十三局店    时间: 2023-9-4 15:54
标题: 细数2019-2023年CWE TOP 25 数据,看软件缺陷的防护
本文分享自华为云社区《从过去5年CWE TOP 25的数据看软件缺陷的防护》,作者:Uncle_Tom。
"以史为鉴,可以知兴替"。CWE 已经连续5年发布了 CWE TOP 25,我们可以从过去5年CWE TOP 25 的变化趋势,去寻找高危安全漏洞的发展趋势,为安全政策和投资决策提供指引,这对于安全防护人员、代码检查工具的开发,以及编程人员都有着非常重要意义。
1. 前言

2023年的 CWE 危险性最高的安全缺陷已经公布:《2023年最具威胁的25种安全漏洞(CWE TOP 25)》, 这对于安全防护人员、代码检查工具的开发人员非常重要。从2019年开始,CWE 已经连续5年发布了 CWE TOP 25,我们可以从过去5年CWE TOP 25 的变化趋势,去寻找高危安全漏洞的发展趋势,为安全政策和投资决策提供指引。
大家需要注意,美国国家缺陷漏洞库(NVD)Top 25 每年的数据的统计方式都存在很大的变动,这主要原因包括:每年报告的漏洞类型、重新映射策略的更改、在 CWE 映射视图中添加新的 CWE 条目等。因此,由于数据偏差,排名的可靠性存在一定偏差。例如,数据中增加一些 CVE 可能会极大地改变 CWE 在 排名之间的位置。 这个问题也是我们在前面关于CWE定义分类并非完全正交性的讨论中,一直探讨的问题,正是由于这个问题的存在,使CVE在CWE归属的问题上存在歧义,由此可能导致最终数据的偏差。
另外作为防御方,并不能仅仅关注TOP 25 的问题,而需要关注更为广泛的安全问题,例如前40名,甚至前100名的安全问题。因为作为防御方,整体的防御能力取决于防御的最短板。正如我经常举的例子:进攻方是拿一个针,在你系统的各个方面扎来扎去,只要有一个薄弱点,就会使系统被攻破。作为防御方,必须了解整个系统防御体系的每一个弱点,并采取防御手段,投入的成本远高于进攻方。
2. CWE TOP 25数据分析策略

为了更全面的了解CWE TOP 25的变动趋势,我们先得到2019 到 2023年CWE TOP 25 的数据;同时尽可能的降低统计数据给我们带来的数据偏差的干扰,我们将分析数据扩大到TOP 40。这个数据可以从CWE的网页:View historical rank data 得到。
2.1. 2019 -2023 CWE TOP 25 数据

CWE ID
CWE描述
2019
2020
2021
2022
2023
斜率
变动趋势
CWE-787
Out-of-bounds Write 越界写入
12
2
1
1
1
-2.3
up
CWE-79
Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’) 在Web页面生成时对输入的转义处理不恰当(跨站脚本)
2
1
2
2
2
0.1
stable
CWE-89
Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’) SQL命令中使用的特殊元素转义处理不恰当(SQL注入)
6
6
6
3
3
-0.9
stable
CWE-416
Use After Free 释放后使用
7
8
7
7
4
-0.7
stable
CWE-78
Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’) OS命令中使用的特殊元素转义处理不恰当(OS命令注入)
11
10
5
6
5
-1.6
up
CWE-20
Improper Input Validation 不正确的输入验证
3
3
4
4
6
0.7
stable
CWE-125
Out-of-bounds Read 越界读取
5
4
3
5
7
0.5
stable
CWE-22
Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’) 对路径名的限制不恰当(路径遍历)
10
12
8
8
8
-0.8
stable
CWE-352
Cross-Site Request Forgery (CSRF) 跨站请求伪造(CSRF)
9
9
9
9
9
0
stable
CWE-434
Unrestricted Upload of File with Dangerous Type 危险类型文件的不加限制上传
16
15
10
10
10
-1.7
up
CWE-862
Missing Authorization 授权机制缺失
36
25
18
16
11
-5.9
rapid_ascent
CWE-476
NULL Pointer Dereference 空指针解引用
14
13
15
11
12
-0.6
stable
CWE-287
Improper Authentication 认证机制不恰当
13
14
14
14
13
0
stable
CWE-190
Integer Overflow or Wraparound 整数溢出或超界折返
8
11
12
13
14
1.4
stable
CWE-502
Deserialization of Untrusted Data 不可信数据的反序列化
23
21
13
12
15
-2.5
up
CWE-77
Improper Neutralization of Special Elements used in a Command (‘Command Injection’) 在命令中使用的特殊元素转义处理不恰当(命令注入)
30
31
25
17
16
-4.2
rapid_ascent
CWE-119
Improper Restriction of Operations within the Bounds of a Memory Buffer 内存缓冲区边界内操作的限制不恰当
1
5
17
19
17
4.6
rapid_decline
CWE-798
Use of Hard-coded Credentials 使用硬编码的凭证
19
20
16
15
18
-0.7
stable
CWE-918
Server-Side Request Forgery SSRF) 服务端请求伪造(SSRF)
32
27
24
21
19
-3.2
rapid_ascent
CWE-306
Missing Authentication for Critical Function 关键功能的认证机制缺失
38
24
11
18
20
-4.2
rapid_ascent
CWE-362
Concurrent Execution using Shared Resource with Improper Synchronization (‘Race Condition’) 使用共享资源的并发执行不恰当同步问题(竞争条件)
31
34
33
22
21
-3.2
rapid_ascent
CWE-269
Improper Privilege Management 特权管理不恰当
24
22
29
29
22
0.3
stable
CWE-94
Improper Control of Generation of Code (‘Code Injection’) 对生成代码的控制不恰当(代码注入)
18
17
28
25
23
1.8
stable
CWE-863
Incorrect Authorization 授权机制不正确
35
29
38
28
24
-2.3
up
CWE-276
Incorrect Default Permissions 默认权限不正确
  19
20
25
3
down
CWE-617
Reachable Assertion 可访问断言
    26
  CWE-427
Uncontrolled Search Path Element 不受控制的搜索路径元素
  34
27
27
-3.5
rapid_ascent
CWE-611
Improper Restriction of XML External Entity Reference XML 外部实体引用限制不当
17
19
23
24
28
2.7
down
CWE-770
Allocation of Resources Without Limits or Throttling 无限制或未控制地分配资源
 39
40
 29
-3.64
rapid_ascent
CWE-200
Exposure of Sensitive Information to an Unauthorized Actor 将敏感信息暴露给未经授权的参与者
4
7
20
33
30
7.8
rapid_decline
CWE-732
Incorrect Permission Assignment for Critical Resource 关键资源的权限分配不正确
15
16
22
30
31
4.6
rapid_decline
CWE-601
URL Redirection to Untrusted Site (‘Open Redirect’) URL 指向未可信站点的URL重定向(开放重定向)
34
35
37
35
32
-0.4
stable
CWE-1321
Improperly Controlled Modification of Object Prototype Attributes (‘Prototype Pollution’) 对象原型属性的不当控制修改(原型污染)
   34
33
-1
stable
CWE-295
Improper Certificate Validation 证书验证不正确
25
28
26
26
34
1.6
stable
CWE-522
Insufficiently Protected Credentials 凭据保护不足
28
18
21
38
35
3.4
rapid_decline
CWE-401
Missing Release of Memory after Effective Lifetime 使用后内存未释放(内存泄露)
 32
32
36
36
1.6
down
CWE-400
Uncontrolled Resource Consumption 不受控制的资源消耗
20
23
27
23
37
3.4
rapid_decline
CWE-639
Authorization Bypass Through User-Controlled Key 通过用户控制密钥绕过授权机制
    38
  CWE-59
Improper Link Resolution Before File Access (‘Link Following’) 在文件访问前对链接解析不恰当(链接跟随)
 40
31
37
39
0.3
stable
CWE-668
Exposure of Resource to Wrong Sphere 将资源暴露在错误的领域
   32
40
8
rapid_decline
我们将这些数据通过折线图表示,如下图:

这个图看起来有些乱,不便于我们找到一些规律,于是我们采用下面的方法,对缺陷排名做个数据分析。
2.2. 斜率

将一个CWE的历年的排名作为纵坐标,将从2019到2023年做为横坐标,通过拟合横坐标和纵坐标形成的点图,可以通过线性拟合的方式得到一条斜线,这条拟合线可以用公式表示:
y = bx + a
其中, b 为数据点的线性回归线的斜率,斜率为垂直距离除以线上任意两个点之间的水平距离,即回归线的变化率。斜率越大可以说明变动越大。
斜率可以通过下面的公式求得:

这里我们可以利用excle 表格中的 SLOPE 函数求得。计算结果见上表的"斜率"一列。
2.3. 变动趋势

为了衡量斜率波动的大小,我们通过标准差(σ)的范围来衡量波动的大小。标准差可以测量值在平均值(中值)附近分布的范围大小。计算公式如下:

这个我们也可以借助excel 的 STDEV 函数求得标准差:
σ = 3.11917143
以及斜率的平均值:
avg = 0.064661654
然后我们再将斜率按间隔: 0.5, 统计各个值段的频次,再利用excle 的 NORMDIST 函数, 得到指定平均值和标准偏差的正态分布函数。

由此我们给出了斜率波动幅度的衡量标准:
斜率波动幅度
斜率波动范围
解释
相对稳定(stable)
±0.5σ±0.5
σ之间: -1.494924061 < 斜率 < 1.624247369 
CWE变动(上升/下降)在5名以内,相对稳定(stable).
上升趋势(up)
-σ ~ -0.5σ:-3.054509776 < 斜率 ≤≤ -1.494924061
CWE上升5-10名,有上升趋势(up).
快速上升(rapid_ascent)
≤≤ -σ: 斜率 ≤≤-3.054509776
CWE上升10名以上,有快速上升趋势(rapid_ascent).
下降趋势(down)
0.5σ ~ σ:1.624247369 ≤≤ 斜率 < 3.183833084
CWE下降5-10名,有下降趋势(down).
快速下降(rapid_decline)
≥≥σ:斜率 ≥≥ 3.183833084
CWE下降10名以上,有快速下降趋势(rapid_decline).
基于这个波动幅度,我们可以得到下表:
斜率波动
CWE数量
CWE百分比
相对稳定(stable)
17
42.50%
快速上升(rapid_ascent)
7
17.50%
快速下降(rapid_decline)
6
15.00%
上升(up)
5
12.50%
下降(down)
3
7.50%
新进
2
5.00%
总计
40
100.00%
从这个统计表,我们可以看到:
下面我们分别对这些区域进行分析,试图找到这些高位安全问题的变动趋势和根因。
3. 2019-2023 CWE TOP 25 相对稳定的缺陷

对于波动相对稳定的CWE,前40名里有17个CWE。为了使图能够看的更加清楚,图里只展示了CWE 在2023年CWE TOP 25 中的 13 个CWE。如下图:

在上图中一共有13个CWE,其中有10个CWE常年都维持在15名以内,波动的幅度较小。按CWE-1400 软件安全保障综合分类视图的分类,给出分类一栏的类别。
分类
CWE
2023年排名
CWE-1409:注入问题
CWE-79:在Web页面生成时对输入的转义处理不恰当(跨站脚本)
2
CWE-89:SQL命令中使用的特殊元素转义处理不恰当(SQL注入)
3
CWE-94:对生成代码的控制不恰当(代码注入)
23
CWE-1399:内存安全
CWE-416:释放后使用
4
CWE-125:越界读取
7
CWE-1406:不正确的输入验证
CWE-20:不正确的输入验证
6
CWE-1404:文件处理
CWE-22:对路径名的限制不恰当(路径遍历)
8
CWE-59:在文件访问前对链接解析不恰当(链接跟随)
39
CWE-1411:数据真实性验证不足
CWE-352:跨站请求伪造(CSRF)
9
CWE-1412:不良编码实践
CWE-476:空指针解引用
12
CWE-1396:访问控制
CWE-287:认证机制不恰当
13
CWE-798:使用硬编码的凭证
18
CWE-269:特权管理不恰当
22
CWE-601:指向未可信站点的URL重定向(开放重定向)
32
CWE-295:证书验证不正确
34
CWE-1415:资源控制
CWE-1321 对象原型属性的不当控制修改(原型污染)
33
这些稳定的CWE 大致可以分为3大类:
这里我们再看下再过去5年中始终在TOP 25 中的高危漏洞,如下图。

和相对稳定的图相比,增加了5个CWE,这些变动主要是因为缺陷上升或下降的原因,变动的CWE 主要有:
4. 2019-2023 CWE TOP 25 增长趋势的缺陷


这些CWE的增长速度基本在 5 到 10 名之间。这些CWE 有:
5. 2019-2023 CWE TOP 快速增长的缺陷


这些CWE的排名在过去的5年中,基本上增长超过了10名。这些CWE有:
6. 2019-2023 CWE TOP 下降趋势的缺陷


这些CWE的下降的速度基本在 5 到 10 名之间。这些CWE 有:
7. 2019-2023 CWE TOP 快速下降的缺陷


这些CWE的排名快速下降,下降的速度基本在 10 名以上。这些CWE 有:
8. 总结

9. 参考

 
点击关注,第一时间了解华为云新鲜技术~
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4