摘要
尽管已经有无数的框架、最佳实践和技术博客,但仍然有大量开发者在代码中硬编码凭证信息。
主要发现
-
2023年10月至2024年9月期间共发布了37,439个CVE -
这些CVE被分配了35,346个CWE(共520个不同类型的CWE) -
CWE-79(网页生成过程中输入未正确处理导致的"跨站脚本攻击")是报告最多的安全弱点(在6,006个CVE中出现,占所有CWE的17%) -
一些基础性的安全弱点也位居前列,如CWE-532:敏感信息写入日志文件(247个CVE,占比0.7%)、CWE-798:使用硬编码凭证(213个CVE,占比0.6%)、以及CWE-306:关键功能缺失身份认证(208个CVE,占比0.6%)
概述
网络安全行业的供应商常常开玩笑说,正是不安全的软件让这个行业得以蓬勃发展。
这种说法确实有一定道理。我们不能期待所有软件都完美无缺,因此需要行业内的各种检查机制(包括负责任的漏洞披露)。
在之前的一篇文章中,我分析了过去25年间CVE的一些有趣数据。这次,我想重点关注过去一年(2023年10月至2024年9月)发布的漏洞中常见的安全弱点类别。
跟进分析
如果你想跟着文章复现这些数据分析,可以按照之前文章中的说明导入数据。
完成后,你还需要运行一条stix2arango命令:
python3 utilities/arango_cti_processor/insert_archive_cwe.py
--versions 4_15
--database cti_knowledge_base_store
数据分析
数据概览
RETURN LENGTH(
FOR doc IN nvd_cve_vertex_collection
FILTER doc.type == "vulnerability"
FILTER DATE_TIMESTAMP(doc.created) >= DATE_TIMESTAMP("2023-10-01T00:00:00Z")
FILTER DATE_TIMESTAMP(doc.created) <= DATE_TIMESTAMP("2024-09-30T00:00:00Z")
RETURN doc
)
在这段时间内,总共发布了37,439个CVE。
RETURN (
FOR doc IN nvd_cve_vertex_collection
FILTER doc.type == "vulnerability"
FILTER DATE_TIMESTAMP(doc.created) >= DATE_TIMESTAMP("2023-10-01T00:00:00Z")
FILTER DATE_TIMESTAMP(doc.created) <= DATE_TIMESTAMP("2024-09-30T00:00:00Z")
COLLECT monthYear = CONCAT(DATE_YEAR(doc.created), "-",
(DATE_MONTH(doc.created) < 10 ? "0" : ""),
DATE_MONTH(doc.created)) WITH COUNT INTO count
SORT monthYear
RETURN {
monthYear: monthYear,
count: count
}
)
最常见的安全弱点
在查看以下数据时需要注意,并非所有CVE都被分配了CWE。这可能是因为NVD尚未完成分析(这是NVD积压工作的常见问题)。此外,一些CVE被标记为NVD-CWE-noinfo
,这表示NVD在分析CVE时没有足够信息来分配CWE。
这些CVE总共被分配了35,346个CWE。
以下是排名前40的安全弱点:
CWE编号 | 名称 | 数量 |
---|---|---|
CWE-79 | 网页生成过程中输入未正确处理('跨站脚本攻击') | 6006 |
CWE-89 | SQL命令中特殊元素未正确处理('SQL注入') | 2644 |
CWE-352 | 跨站请求伪造(CSRF) | 1615 |
CWE-787 | 越界写入 | 1491 |
CWE-862 | 缺少授权 | 1091 |
CWE-22 | 路径限制不当导致目录遍历('路径穿越') | 1028 |
CWE-416 | 释放后使用 | 1013 |
CWE-125 | 越界读取 | 902 |
CWE-121 | 基于栈的缓冲区溢出 | 857 |
CWE-78 | 操作系统命令中特殊元素未正确处理('OS命令注入') | 845 |
CWE-200 | 敏感信息泄露给未授权用户 | 775 |
CWE-20 | 输入验证不当 | 768 |
CWE-434 | 危险类型文件上传未做限制 | 719 |
CWE-284 | 访问控制不当 | 660 |
CWE-120 | 未检查输入大小的缓冲区复制('经典缓冲区溢出') | 615 |
CWE-476 | 空指针解引用 | 584 |
CWE-94 | 代码生成控制不当('代码注入') | 569 |
CWE-269 | 权限管理不当 | 499 |
CWE-77 | 命令中特殊元素未正确处理('命令注入') | 494 |
CWE-400 | 资源消耗无控制 | 441 |
CWE-122 | 基于堆的缓冲区溢出 | 426 |
CWE-918 | 服务器端请求伪造(SSRF) | 408 |
CWE-287 | 身份认证不当 | 405 |
CWE-502 | 不可信数据的反序列化 | 384 |
CWE-190 | 整数溢出或环绕 | 312 |
CWE-863 | 错误的授权 | 297 |
CWE-119 | 内存缓冲区边界内的操作限制不当 | 283 |
CWE-639 | 通过用户控制的密钥绕过授权 | 250 |
CWE-532 | 敏感信息写入日志文件 | 247 |
CWE-798 | 使用硬编码凭证 | 213 |
CWE-306 | 关键功能缺失身份认证 | 208 |
CWE-601 | 重定向到不可信站点('开放重定向') | 205 |
CWE-427 | 无控制的搜索路径元素 | 198 |
CWE-770 | 资源分配无限制或节流 | 184 |
CWE-276 | 错误的默认权限 | 174 |
CWE-401 | 内存在有效期后未释放 | 165 |
CWE-74 | 下游组件使用的输出中特殊元素未正确处理('注入') | 153 |
CWE-362 | 共享资源并发执行的同步不当('竞态条件') | 148 |
CWE-732 | 关键资源的权限分配错误 | 135 |
CWE-59 | 文件访问前链接解析不当('链接跟随') | 133 |
通过CWE编号查询包含使用硬编码凭证(CWE-798)这个安全弱点的产品统计如下:
供应商 | 产品 | 包含CWE-798的CVE数量 |
---|---|---|
hitron_systems | dvr_hvr-4781_firmware | 6 |
boschrexroth | ctrlx_hmi_web_panel_wr2115_firmware | 4 |
ibm | security_verify_governance | 4 |
boschrexroth | ctrlx_hmi_web_panel_wr2110_firmware | 4 |
bosch | nexo-os | 4 |
boschrexroth | ctrlx_hmi_web_panel_wr2107_firmware | 4 |
hongdian | h8951-4g-esp_firmware | 3 |
sierrawireless | aleos | 3 |
autel | maxicharger_ac_elite_business_c50_firmware | 2 |
fedirtsapana | simple_http_server_plus | 2 |
enbw | senec_storage_box_firmware | 2 |
zohocorp | manageengine_ddi_central | 2 |
dell | e-lab_navigator | 2 |
skoda-auto | superb_3_firmware | 2 |
kiloview | p1_firmware | 2 |
cisco | emergency_responder | 2 |
machinesense | feverwarn_firmware | 2 |
estomed | simple_care | 2 |
ibm | merge_efilm_workstation | 2 |
csharp | cws_collaborative_development_platform | 2 |
这些数字显示了引用CWE-798并将相应产品标记为易受攻击的不同CVE数量。从统计结果可以看出,无论是大型供应商(如思科和IBM)还是小型供应商都存在这类问题,而且在固件产品中更为普遍(这类产品中的凭证泄露问题通常更难以修复)。
原文始发于微信公众号(独眼情报):劣质软件养活了某xx网络安全公司,说的就是你
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论