赞
踩
什么是CWE?CWE是由个组织维护的?CWE的能解决什么问题?CWE共有多少个类别和条目?读完本文你将收获所有答案。如还有其他相关疑问,欢迎留言讨论。
Common Weakness Enumeration,简称CWE,中文翻译为通用缺陷枚举,它是由MITRE公司维护的一个开放的、可扩展的通用语言,用于描述软件及硬件缺陷。CWE可以让安全研究人员、开发人员和安全管理人员能够更好地理解和解决安全问题。CWE本质就是一个软件和硬件缺陷类型列表,当前最新版本为4.10。点击下载,访问密码6277。
本文中所提到的缺陷指软件、固件、硬件或服务组件中的一种状态,在某些情况下,可能导致漏洞的引入。
CWE帮助开发人员和安全从业者:
CWE List 4.10中共有933个缺陷条目(被分为352个类别,47个视图),其中64个为过期条目,过期条目描述中会指向到新的有效条目。
分类 | CWE List 4.9 | CWE List 4.10 |
---|---|---|
Weakness(缺陷) | 933 | 933 |
Category(类别) | 352 | 352 |
View(视图) | 47 | 47 |
Deprecated(过期) | 63 | 64 |
总共 | 1395 | 1396 |
如果大家打开CWE List,可以看到如下9个符号图标,每个图标均有对应含义,下文中也会针对这9个图标类别进行详情介绍。
符号 | 含义 |
---|---|
View | |
Pillar | |
Category | |
Weakness - Class | |
Weakness -Base | |
Weakness - Variant | |
Compound Element - Composite | |
Compound Element - Named Chain | |
Deprecated |
通过View可以快速检索CWE条目,视图本身也会占用CWE编号。常见的视图如下:
上图中的视图Weakness in Software Written in Java展开后可以看到视图的ID为CWE-660,其中包含了多个CWE条目。
CWE软件开发视图(CWE-699)
最高级的Weakness,不能再抽象了。Pillar是研究概念视图(CWE-1000)中的顶级条目(见下图中的节点条目),代表与之相关的所有Class/Base/Variant Weakness的抽象主题。Pillar与Class不同,因为Pillar在技术上仍然是描述错误的缺陷类型,而Class代表用于对相关事物进行分组的共同特征。例如,错误计算(CWE-682)是Pillar的一个例子,因为它描述了一个错误,但并不表明该错误发生的具体位置或受影响的资源类型。
一个CWE条目,它包含一组共享共同特征的其他条目。类别不是缺陷,而是帮助用户找到具有所述共同特征的缺陷的结构性项目。比如,Data Validation Issues(数据校验问题),包含了如下CWE条目,CWE-112,CWE-129,CWE-179,CWE-183,CWE-184,CWE-606,CWE-641,CWE-1173,这些条件都具有共同特征,者和数据校验相关。
以非常抽象的方式描述的缺陷,通常独立于任何特定的语言或技术。比 Pillar Weakness更具体,但比Base weakness更抽象。Class weakness通常由以下1或2个维度来描述问题:行为、属性和资源。例如,Class Weakness“不受控制的资源消耗”(CWE-400)描述了与任何类型的资源相关的行为(消耗)的问题(不受控制)。另一个例子是“敏感信息的不安全存储”(CWE-922),它描述并发布(不安全)针对一般类型的资源(敏感信息)采取的行为(存储)。
这是一个以抽象方式描述的缺陷,但有足够的细节来推断检测和预防的具体方法。比变体缺陷更抽象,但比类缺陷更具体。基础级缺陷通常由以下2或3个维度来描述问题:行为、属性、技术、语言和资源。例如,基础缺陷“使用外部控制的格式字符串”(CWE-134)描述了针对具有给定属性(外部控制)的特定资源(格式字符串)采取的行为(使用)的问题(不当操作)。另一个示例是“对受限目录的路径名的不当限制”(CWE-22),它描述了针对具有给定属性(受限)的资源(目录)采取的行为(对路径名的控制)的问题(不当限制)。
与某种产品相关的缺陷,通常涉及特定的语言(如Java、C/C++)或技术。比基础缺陷更具体。变体级缺陷通常由以下3到5个维度来描述问题:行为、属性、技术、语言和资源。例如,“在指针类型上使用sizeof()”(CWE-467),它描述了隐含语言(支持指针类型的语言)中针对资源(指针)的行为(函数应用)的问题(使用)。
将两个或多个CWE条目紧密关联的条目。CWE团队的研究表明,漏洞通常可以用两个或多个缺陷的相互作用或共存来描述。
一个频繁出现以至于已为其分配了CWE ID的链,例如CWE-680(整数溢出到缓冲区溢出)。
应该有一个参考,指出每个不推荐的缺陷中的替代品。
CWE Top 25每年都会更新,以下是2022年CWE前25名中的缺陷列表,包括每个缺陷的总体得分。
序号 | ID | 名称 | 得分 |
---|---|---|---|
1 | CWE-787 | 越界写入 | 64.20 |
2 | CWE-79 | 跨站脚本 | 45.97 |
3 | CWE-89 | SQL注入 | 22.11 |
4 | CWE-20 | 输入校验不充分 | 20.63 |
5 | CWE-125 | 越界读取 | 17.67 |
6 | CWE-78 | OS命令注入 | 17.53 |
7 | CWE-416 | 释放后使用 | 15.50 |
8 | CWE-22 | 路径遍历 | 14.08 |
9 | CWE-352 | 跨站请求伪造 | 11.53 |
10 | CWE-434 | 无限制上传危险类型文件 | 9.56 |
11 | CWE-476 | 空指针引用 | 7.15 |
12 | CWE-502 | 不可信数据的反序列化 | 6.68 |
13 | CWE-190 | 整数溢出或回绕 | 6.53 |
14 | CWE-287 | 不合适的认证 | 6.35 |
15 | CWE-798 | 硬编码证书 | 5.66 |
16 | CWE-862 | 授权机制缺失 | 5.53 |
17 | CWE-77 | 命令注入 | 5.42 |
18 | CWE-306 | 关键功能认证机制缺失 | 5.15 |
19 | CWE-119 | 内存缓冲区边界内的操作限制不恰当 | 4.85 |
20 | CWE-276 | 默认权限不正确 | 4.84 |
21 | CWE-918 | 服务端请求伪造(SSRF) | 4.27 |
22 | CWE-362 | 使用共享资源并发执行,但同步不正确(“竞争条件”) | 3.57 |
23 | CWE-400 | 不受控制的资源消耗 | 3.56 |
24 | CWE-611 | XML外部实体引用的不当限制 | 3.38 |
25 | CWE-94 | 代码注入 | 3.32 |
Mitre公司负责维护CWE列表及其后续工作(即网络安全领域知名的CWE Top 25、CWSS和CWRAF),调整CWE研究电子邮件列表,并在整个过程中提供中立的指导,以确保CWE符合公众利益。
缺陷是可能导致漏洞的错误。软件漏洞是黑客可以直接使用的软件中的一个错误,以获得对系统或网络的访问。硬件漏洞是指硬件或其固件中的错误,黑客可以使用该错误来远程或物理访问系统。
MITRE公司早在1999年初就开始研究软件缺陷分类问题,当时它发布了CVE( Common Vulnerabilities and Exposures,通用漏洞披露)清单。作为构建CVE的一部分,MITRE的CVE团队从2005年开始对漏洞、攻击、故障和其他概念进行了初步分类和分类,以帮助定义常见的软件缺陷。然而,尽管这些分组对于CVE来说足够了,但它们太粗糙,无法用于识别和分类代码安全评估行业提供的功能。为了更好地满足这些额外需求,CWE清单便于2006年创建。所以是先有了CVE才有的CWE,CWE的出现可以更精细的分类CVE漏洞。
OWASP Top 10是由开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)组织维护,涵盖了更一般的概念并侧重于Web应用程序。CWE Top 25涵盖的问题比OWASP Top 10中以Web为中心的视角所产生的问题更广泛,例如缓冲区溢出。此外,CWE Top 25目标是达到程序员可直接操作的水平,因此包含了比OWASP Top 10中使用的类别更详细的问题。然而,由于web应用程序非常流行,而且OWASP Top 10中的一些问题对所有类型的软件都有通用的应用,因此也存在一些重叠。
[1] https://cwe.mitre.org/index.html
[2] https://cwe.mitre.org/about/faq.html
推荐阅读:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。