当前位置: 首页 > ai >正文

安全领域必须关注每年发布一次“最危险的25种软件弱点”清单 —— CWE Top 25(内附2024 CWE Top 25清单详情)

什么是CWE

CWE 是 Common Weakness Enumeration 的缩写,中文译为 “通用弱点枚举”。我们可以把它理解为一个软件和硬件安全漏洞的“标准化分类词典”或“百科全书”。它不是记录某一个具体的漏洞(比如“Windows 10 的某个补丁”),而是对导致安全漏洞的根源性编程错误、设计缺陷或架构问题进行系统性的分类和定义。

详情可以参考文章:

以下是针对 CWE Top 25 2024(2024年最危险的25种软件弱点)的详细中文解析。该榜单由美国国土安全部资助的CWE项目联合MITRE、网络安全界专家共同评选,聚焦于最容易被利用、造成危害最严重、且广泛存在于现实系统中的安全弱点。

榜单中的条目分为:

  • Base(基础型):单一、具体的漏洞类型。
  • Class(类别型):更广泛的漏洞大类,可能包含多个具体形式。
  • Composite(复合型):由多个基础或类别型弱点组合而成的复杂问题。

CWE Top 25 - 2024 年最危险软件弱点详解


1. CWE-79: 跨站脚本(XSS)

类型:Base
中文名:在网页生成过程中未正确中和输入(跨站脚本)

解析: 攻击者将恶意脚本(通常是JavaScript)注入到网页中,当其他用户浏览该页面时,脚本在其浏览器中执行。

危害

  • 窃取用户Cookie、会话令牌
  • 劫持用户会话
  • 伪造操作(如转账、发帖)
  • 挂马传播恶意软件

常见场景

  • 搜索框、评论区、用户资料页未对输入进行过滤或转义。
  • 富文本编辑器允许执行脚本。

防范

  • 输入验证 + 输出编码(HTML、JS、URL编码)
  • 使用CSP(内容安全策略)
  • 框架自带XSS防护(如React自动转义)

2. CWE-787: 越界写(缓冲区溢出)

类型:Base
中文名:越界写

解析: 程序向缓冲区写入数据时,超出其分配的内存边界,覆盖相邻内存区域。

危害

  • 崩溃系统(DoS)
  • 执行任意代码(RCE)
  • 提权或绕过安全机制

常见语言: C/C++ 等不自动管理内存的语言最易受影响。

防范

  • 使用安全函数(如 strncpy 替代 strcpy
  • 启用编译器保护(Stack Canaries、ASLR、DEP)
  • 使用内存安全语言(Rust、Go、Java)

3. CWE-89: SQL注入

类型:Base
中文名:未正确中和SQL命令中的特殊元素

解析: 攻击者通过输入恶意SQL代码,改变原有SQL语句逻辑,从而操控数据库。

危害

  • 窃取敏感数据(用户密码、身份证号)
  • 修改或删除数据
  • 绕过登录验证
  • 甚至通过数据库执行系统命令

防范

  • 使用参数化查询(Prepared Statements)
  • ORM框架(如Hibernate)
  • 输入验证 + 最小权限数据库账户

4. CWE-352: 跨站请求伪造(CSRF)

类型:Composite
中文名:跨站请求伪造

解析: 攻击者诱导用户在已登录状态下访问恶意页面,自动向目标网站发起请求(如转账、改密码),而用户不知情。

危害

  • 在用户不知情下执行敏感操作
  • 常与XSS结合使用

防范

  • 使用CSRF Token
  • SameSite Cookie 属性
  • 检查 Referer 头(不完全可靠)
  • 敏感操作需二次验证(如短信验证码)

5. CWE-22: 路径遍历(目录穿越)

类型:Base
中文名:路径名未限制在受限目录内

解析: 攻击者通过构造 ../../../etc/passwd 类似路径,访问或下载系统任意文件。

危害

  • 泄露配置文件、密码、源码
  • 获取服务器敏感信息

防范

  • 禁止输入中出现 .. 或 /
  • 使用白名单限制可访问目录
  • 文件路径规范化 + 根目录绑定

6. CWE-125: 越界读

类型:Base
中文名:越界读

解析: 程序读取缓冲区之外的内存数据,可能导致信息泄露。

危害

  • 泄露内存中的敏感信息(如密码、密钥)
  • 著名案例:Heartbleed(心脏滴血)漏洞

防范

  • 边界检查
  • 使用安全语言或库
  • 静态分析工具检测

7. CWE-78: 操作系统命令注入

类型:Base
中文名:未正确中和命令中的特殊元素(OS命令注入)

解析: 程序将用户输入拼接到系统命令中执行,攻击者可插入 ;&&| 等符号执行任意命令。

危害

  • 远程代码执行(RCE)
  • 完全控制服务器

防范

  • 避免直接调用系统命令
  • 使用安全API替代(如 mkdir() 替代 system("mkdir ...")
  • 输入白名单过滤
  • 最小权限运行进程

8. CWE-416: Use After Free(释放后使用)

类型:Variant
中文名:内存释放后仍被引用

解析: 程序释放了内存后,仍继续使用指向该内存的指针,可能导致崩溃或执行恶意代码。

危害

  • RCE、提权
  • 常见于浏览器、操作系统内核

防范

  • 释放后置空指针
  • 使用智能指针(C++)
  • 内存安全语言(Rust)

9. CWE-862: 缺少关键功能的授权

类型:Class
中文名:缺少授权

解析: 系统未对用户操作进行权限检查,导致低权限用户访问高权限功能。

危害

  • 越权访问(如普通用户查看管理员数据)
  • 数据泄露、篡改

防范

  • 所有敏感接口都需服务端权限校验
  • 基于角色的访问控制(RBAC)
  • 最小权限原则

10. CWE-434: 危险类型文件的无限制上传

类型:Base
中文名:上传危险类型文件

解析: 系统允许用户上传可执行文件(如 .php, .jsp, .exe),攻击者可上传Web Shell控制服务器。

危害

  • 服务器被完全控制
  • 成为跳板攻击内网

防范

  • 文件类型白名单
  • 存储路径不在Web目录
  • 文件重命名 + 权限限制
  • 杀毒扫描

11. CWE-94: 代码注入

类型:Base
中文名:代码生成控制不当

解析: 用户输入被当作代码执行,如PHP eval()、JavaScript eval() 或模板注入。

危害

  • RCE
  • 系统被控

防范

  • 避免动态执行用户输入
  • 使用沙箱环境
  • 模板引擎安全配置

12. CWE-20: 输入验证不当

类型:Class
中文名:输入验证不当

说明: 这是一个大类,涵盖所有未对输入进行充分验证的问题,是许多具体漏洞(如XSS、SQLi、命令注入)的根源。

防范

  • 白名单验证
  • 长度、类型、格式检查
  • 上下文相关过滤

13. CWE-77: 命令注入

类型:Class
中文名:命令中特殊元素未中和

说明: 比CWE-78更广,涵盖OS命令、Shell命令、数据库命令等注入。

防范: 同CWE-78,但需考虑更多命令解释器。


14. CWE-287: 认证不当

类型:Class
中文名:认证不当

涵盖

  • 弱密码策略
  • 多因素认证缺失
  • 凭证猜测防护不足
  • Session管理缺陷

防范

  • 强密码策略 + MFA
  • 登录失败锁定
  • 安全的Session管理

15. CWE-269: 特权管理不当

类型:Class
中文名:特权管理不当

解析: 权限分配不合理,如普通用户可提权、服务账户权限过高。

防范

  • 最小权限原则
  • 特权分离
  • 定期审计权限

16. CWE-502: 不受信任数据的反序列化

类型:Base
中文名:反序列化不受信任数据

解析: 反序列化攻击者控制的数据,可能触发RCE。

危害

  • RCE(如Java Commons Collections漏洞)
  • DoS

防范

  • 避免反序列化不可信数据
  • 使用签名/加密验证数据完整性
  • 使用JSON等安全格式替代

17. CWE-200: 敏感信息泄露

类型:Class
中文名:敏感信息暴露给未授权方

涵盖

  • 错误消息泄露路径、数据库结构
  • 日志记录密码
  • HTTP响应中包含敏感数据

防范

  • 自定义错误页面
  • 敏感数据脱敏
  • 安全日志策略

18. CWE-863: 授权不正确

类型:Class
中文名:授权不正确

与CWE-862区别

  • 862:完全缺失授权检查
  • 863:检查逻辑错误,如角色判断错误

防范

  • 服务端严格校验权限
  • 避免前端控制权限

19. CWE-918: 服务端请求伪造(SSRF)

类型:Base
中文名:服务器端请求伪造

解析: 攻击者诱导服务器向内部系统(如127.0.0.1、192.168.x.x)发起请求。

危害

  • 访问内网敏感服务(Redis、Metadata API)
  • 绕过防火墙
  • 数据泄露

防范

  • 禁止用户控制URL
  • 黑名单/白名单校验
  • 分离内外网请求

20. CWE-119: 内存缓冲区操作控制不当

类型:Class
中文名:内存缓冲区边界操作控制不当

涵盖

  • 越界读/写
  • 缓冲区溢出
  • 栈溢出

防范: 同CWE-787、CWE-125


21. CWE-476: 空指针解引用

类型:Base
中文名:空指针解引用

解析: 程序尝试访问空指针指向的内存,导致崩溃。

危害

  • 拒绝服务(DoS)
  • 可能被利用执行代码(特定场景)

防范

  • 使用前检查是否为空
  • 异常处理

22. CWE-798: 硬编码凭证

类型:Base
中文名:使用硬编码凭证

解析: 密码、API密钥等写死在代码中,易被泄露。

危害

  • 账户被滥用
  • 系统被入侵

防范

  • 使用配置文件 + 环境变量
  • 密钥管理系统(KMS)
  • 代码扫描工具检测

23. CWE-190: 整数溢出/回绕

类型:Base
中文名:整数溢出或回绕

解析: 整数运算结果超出数据类型范围,导致意外行为。

危害

  • 缓冲区大小计算错误 → 溢出
  • 内存分配失败或越界

防范

  • 使用安全数学库
  • 溢出检测
  • 边界检查

24. CWE-400: 资源消耗失控

类型:Class
中文名:资源消耗失控

涵盖

  • 内存耗尽
  • CPU占用过高
  • 文件句柄耗尽

危害

  • 拒绝服务(DoS)

防范

  • 限制请求频率(Rate Limiting)
  • 设置超时
  • 资源配额管理

25. CWE-306: 关键功能缺少认证

类型:Base
中文名:关键功能缺少认证

解析: 如管理接口、API端点未要求登录即可访问。

危害

  • 系统被任意操控
  • 数据被删除或篡改

防范

  • 所有关键接口必须认证
  • 默认关闭调试接口
  • 网络隔离

总结:CWE Top 25 的核心启示

  1. 输入是万恶之源:绝大多数漏洞源于对用户输入的信任(XSS、SQLi、命令注入等)。
  2. 内存安全至关重要:C/C++项目必须重视缓冲区管理。
  3. 权限控制不能马虎:认证、授权、最小权限是安全基石。
  4. 默认安全配置:避免硬编码、开放接口、高权限运行。
  5. 纵深防御:单一防护可能被绕过,需多层防护。

建议:开发团队应将 CWE Top 25 作为安全编码培训的核心内容,并在代码审计、自动化测试中重点检查这些弱点。

http://www.xdnf.cn/news/19878.html

相关文章:

  • Boost搜索引擎 数据清洗与去标签(1)
  • 【OpenHarmony文件管理子系统】文件访问接口mod_fs解析
  • ECMAScript(2)核心语法课件(Node.js/React 环境)
  • uniapp的上拉加载H5和小程序
  • PDF.AI-与你的PDF文档对话
  • C++虚函数虚析构函数纯虚函数的使用说明和理解
  • redisson延迟队列报错Sync methods can‘t be invoked from async_rx_reactive listeners
  • 快速排序算法详解
  • 【mysql】SQL自连接实战:查询温度升高的日期
  • 三维多相机光场扫描:打造元宇宙时代的“数字自我”
  • React学习教程,从入门到精通, React 嵌套组件语法知识点(10)
  • 公司机密视频泄露频发?如何让机密视频只在公司内部播放
  • 数据采集机器人哪家好?2025 年实测推荐:千里聆 RPA 凭什么成企业首选?
  • 机器人智能控制领域技术路线
  • 嵌入式 - 硬件:51单片机(3)uart串口
  • 【Java EE进阶 --- SpringBoot】Spring IoC
  • 鸿蒙:从图库选择图片并上传到服务器
  • 什么情况下会用到ConcurrentSkipListMap
  • 【系统架构设计(15)】软件架构设计一:软件架构概念与基于架构的软件开发
  • PDF Reader 编辑阅读工具(Mac中文)
  • Linux 常用命令全解析:从入门到实战的必备指南
  • TypeScript 增强功能大纲 (相对于 ECMAScript)
  • 如何轻松地将联系人从 Mac 同步到 iPhone
  • SQLmap 完整使用指南:环境搭建 + 命令详解 + 实操案例
  • SQL Server服务管理
  • 处理省市区excel数据加工成SQL
  • 常用的几种测试工具:selenium,jmeter,jenkins
  • 【IO】进程间通信(IPC)练习
  • Unity 的游戏循环机制
  • 66车载诊断架构 --- 从架构系统角度怎么确保整车DTC的完整性?