前言
什么是漏洞
漏洞[或脆弱性[(英语:Vulnerability),是指计算机系统安全方面的缺陷,使得系统或其应用数据的保密性、完整性、可用性、访问控制等面临威胁。(来自维基百科)
如何对漏洞分类
一般而言 对漏洞的分类一般由CWE(Common Weakness Enumeration, 通用缺陷列举)完成 它由一个的开源社区工程维持,该社区有理解软件中的瑕疵并创作对自动化工具去识别、修复并防止这些瑕疵的愿景(维基百科)
漏洞的分类
由于CWE分类较多目前只列举部分高危和常见漏洞
注入漏洞
CWE-79:跨站脚本 (XSS) - 未对Web页面生成的输入进行恰当转义,导致攻击者可植入恶意脚本并在受害者浏览器中执行 经典案例:MySpace Samy 蠕虫 微博蠕虫
CWE-89:SQL注入 - 未对SQL语句中的参数进行安全过滤,允许攻击者操控数据库执行任意查询或篡改数据 经典案例: 万能密码 渗透联合查询
CWE-22: 一种严重的安全漏洞,允许攻击者访问受限目录之外的文件和目录 核心原理是攻击者通过在输入中注入特殊序列,欺骗应用程序的输入验证机制,从而读取或写入服务器上的任意文件 经典案例 ConnectWise ScreenConnect VMware vCenter
内存管理
CWE-404:发生在程序在完成对某项资源(如内存、文件句柄、网络套接字等)的使用后,没有正确、及时地将其释放、关闭或回收 经典案例 [Apache Tomcat 文件句柄与内存泄露漏洞](https://nvd.nist.gov/vuln/detail/CVE-2025-61795) Open5GS 5G核心网拒绝服务
CWE-401: 当软件分配了动态内存,但在该内存的有效生命周期结束后,未能将其显式释放,同时程序又丢失了指向该内存块的指针,就会导致这部分内存无法被系统重新利用 经典案例: Apache2 拒绝服务 Go 语言 x/crypto 库缺陷
API与代码逻辑
CWE-502: 程序在没有对外部输入进行充分验证的情况下,直接反序列化不可信的数据,导致攻击者可以借此执行任意代码、导致拒绝服务或绕过身份验证 经典案例: React2Shell Apache Commons Collections
CWE-120: 在向固定长度的缓冲区写入数据时未检查边界,导致数据溢出并可能覆盖相邻内存,引发崩溃或执行恶意指令 经典案例: 莫里斯蠕虫 SQL_Slammer

