什么是CWE?CWE是由个组织维护的?CWE的能解决什么问题?CWE共有多少个类别和条目?读完本文你将收获所有答案。如还有其他相关疑问,欢迎留言讨论。

文章目录

  • 1. 简介
  • 2. 分类
    • 2.1. View 视图
    • 2.2. Pillar Weakness 支柱缺陷
    • 2.3. Category 类别
    • 2.4. Class Weakness 类缺陷
    • 2.5. Base weakness 基础缺陷
    • 2.6. Variant Weakness 变体缺陷
    • 2.7. Compound Element 复合元素
    • 2.8. Named Chain 命名链
    • 2.9. Deprecated 过期
  • 3. CWE Top 25
  • 4. 常见问题
    • 4.1. Mitre在CWE承担了什么角色
    • 4.2. 漏洞与缺陷的关系
    • 4.3. CVE与CWE的关系
    • 4.4. OWASP Top 10和CWE Top 25的区别
  • 5. 参考

1. 简介

Common Weakness Enumeration,简称CWE,中文翻译为通用缺陷枚举,它是由MITRE公司维护的一个开放的、可扩展的通用语言,用于描述软件及硬件缺陷。CWE可以让安全研究人员、开发人员和安全管理人员能够更好地理解和解决安全问题。CWE本质就是一个软件和硬件缺陷类型列表,当前最新版本为4.10。点击下载

本文中所提到的缺陷指软件、固件、硬件或服务组件中的一种状态,在某些情况下,可能导致漏洞的引入。

软件缺陷举例
不充分数据校验
缓冲区溢出
代码注入
路径操纵
硬件缺陷举例
与CPU、GPU、AI、FPGA相关的核心和计算问题
与身份和策略、共享资源、锁定控件、寄存器以及其他功能和机制相关的特权分离和访问控制问题
与电压、电流、温度、时钟控制和状态保存/恢复相关的功率、时钟和复位问题。

CWE帮助开发人员和安全从业者:

  • 用通用语言描述和讨论软件和硬件的缺陷;
  • 检查现有软件和硬件产品的缺陷;
  • 评估针对这些缺陷的工具的能力覆盖范围;
  • 利用共同的基线标准进行缺陷识别、消减和预防工作;
  • 在部署之前修补软件和硬件漏洞

2. 分类

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

2.1. View 视图

通过View可以快速检索CWE条目,视图本身也会占用CWE编号。常见的视图如下:

上图中的视图Weakness in Software Written in Java展开后可以看到视图的ID为CWE-660,其中包含了多个CWE条目。

CWE软件开发视图(CWE-699)

2.2. Pillar Weakness 支柱缺陷

最高级的Weakness,不能再抽象了。Pillar是研究概念视图(CWE-1000)中的顶级条目(见下图中的节点条目),代表与之相关的所有Class/Base/Variant Weakness的抽象主题。Pillar与Class不同,因为Pillar在技术上仍然是描述错误的缺陷类型,而Class代表用于对相关事物进行分组的共同特征。例如,错误计算(CWE-682)是Pillar的一个例子,因为它描述了一个错误,但并不表明该错误发生的具体位置或受影响的资源类型。

2.3. Category 类别

一个CWE条目,它包含一组共享共同特征的其他条目。类别不是缺陷,而是帮助用户找到具有所述共同特征的缺陷的结构性项目。比如,Data Validation Issues(数据校验问题),包含了如下CWE条目,CWE-112,CWE-129,CWE-179,CWE-183,CWE-184,CWE-606,CWE-641,CWE-1173,这些条件都具有共同特征,者和数据校验相关。

2.4. Class Weakness 类缺陷

以非常抽象的方式描述的缺陷,通常独立于任何特定的语言或技术。比 Pillar Weakness更具体,但比Base weakness更抽象。Class weakness通常由以下1或2个维度来描述问题:行为、属性和资源。例如,Class Weakness“不受控制的资源消耗”(CWE-400)描述了与任何类型的资源相关的行为(消耗)的问题(不受控制)。另一个例子是“敏感信息的不安全存储”(CWE-922),它描述并发布(不安全)针对一般类型的资源(敏感信息)采取的行为(存储)。

2.5. Base weakness 基础缺陷

这是一个以抽象方式描述的缺陷,但有足够的细节来推断检测和预防的具体方法。比变体缺陷更抽象,但比类缺陷更具体。基础级缺陷通常由以下2或3个维度来描述问题:行为、属性、技术、语言和资源。例如,基础缺陷“使用外部控制的格式字符串”(CWE-134)描述了针对具有给定属性(外部控制)的特定资源(格式字符串)采取的行为(使用)的问题(不当操作)。另一个示例是“对受限目录的路径名的不当限制”(CWE-22),它描述了针对具有给定属性(受限)的资源(目录)采取的行为(对路径名的控制)的问题(不当限制)。

2.6. Variant Weakness 变体缺陷

与某种产品相关的缺陷,通常涉及特定的语言(如Java、C/C++)或技术。比基础缺陷更具体。变体级缺陷通常由以下3到5个维度来描述问题:行为、属性、技术、语言和资源。例如,“在指针类型上使用sizeof()”(CWE-467),它描述了隐含语言(支持指针类型的语言)中针对资源(指针)的行为(函数应用)的问题(使用)。

2.7. Compound Element 复合元素

将两个或多个CWE条目紧密关联的条目。CWE团队的研究表明,漏洞通常可以用两个或多个缺陷的相互作用或共存来描述。

2.8. Named Chain 命名链

一个频繁出现以至于已为其分配了CWE ID的链,例如CWE-680(整数溢出到缓冲区溢出)。

2.9. Deprecated 过期

应该有一个参考,指出每个不推荐的缺陷中的替代品。

3. CWE Top 25

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

4. 常见问题

4.1. Mitre在CWE承担了什么角色

Mitre公司负责维护CWE列表及其后续工作(即网络安全领域知名的CWE Top 25、CWSS和CWRAF),调整CWE研究电子邮件列表,并在整个过程中提供中立的指导,以确保CWE符合公众利益。

4.2. 漏洞与缺陷的关系

缺陷是可能导致漏洞的错误。软件漏洞是黑客可以直接使用的软件中的一个错误,以获得对系统或网络的访问。硬件漏洞是指硬件或其固件中的错误,黑客可以使用该错误来远程或物理访问系统。

4.3. CVE与CWE的关系

MITRE公司早在1999年初就开始研究软件缺陷分类问题,当时它发布了CVE( Common Vulnerabilities and Exposures,通用漏洞披露)清单。作为构建CVE的一部分,MITRE的CVE团队从2005年开始对漏洞、攻击、故障和其他概念进行了初步分类和分类,以帮助定义常见的软件缺陷。然而,尽管这些分组对于CVE来说足够了,但它们太粗糙,无法用于识别和分类代码安全评估行业提供的功能。为了更好地满足这些额外需求,CWE清单便于2006年创建。所以是先有了CVE才有的CWE,CWE的出现可以更精细的分类CVE漏洞。

4.4. OWASP Top 10和CWE Top 25的区别

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中的一些问题对所有类型的软件都有通用的应用,因此也存在一些重叠。

5. 参考

[1] https://cwe.mitre.org/index.html
[2] https://cwe.mitre.org/about/faq.html

【网络安全常用术语解读】CWE详解相关推荐

  1. 【网络安全常用术语解读】CVSS详解

    什么是CVSS?CVSS是由哪个组织定义和维护的?CVSS主要用途是什么?CVSS 3.X与2.X版本主要有哪些区别?如何给一个CVE漏洞进行评分?读完本文你将收获所有答案.如还有其他相关疑问,欢迎留 ...

  2. 【网络安全常用术语解读】CPE详解

    什么是CPE?CPE是由哪个组织定义和维护的?CPE主要用途是什么?CPE共有多少个条目?CPE由哪几部分组成?如何申请CPE条目?读完本文你将收获所有答案.如还有其他相关疑问,欢迎留言讨论. 文章目 ...

  3. 网络安全nmap扫描端口命令详解linux网络探测

    简介: nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting).它是网络管理员必用的 ...

  4. 常用数据绑定控件详解

    常用数据绑定控件详解 GridView内容详解(1) GridView内容详解(2) DataList内容详解 ListView详解(一) ListView详解(二) 导航控件的高级应用 from:h ...

  5. VC常用数据类型使用转换详解

    VC常用数据类型使用转换详解 出  处:PCVC.NET 作  者:程佩君 刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用. 我们先定义一些常见类型变量借以 ...

  6. c#endread怎么打印出来_C#编程直接发送打印机命令到打印机及ZPL常用的打印命令详解...

    本文主要向大家介绍了C#编程直接发送打印机命令到打印机及ZPL常用的打印命令详解,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助. using System; using System.Co ...

  7. Keras深度学习实战(4)——深度学习中常用激活函数和损失函数详解

    Keras深度学习实战(4)--深度学习中常用激活函数和损失函数详解 常用激活函数 Sigmoid 激活函数 Tanh 激活函数 ReLU 激活函数 线性激活函数 Softmax 激活函数 损失函数 ...

  8. docker实践(2)常用命令和DockerFile详解

    <docker实践(1) 入门和springBoot实践部署> <docker实践(2)常用命令和DockerFile详解> <docker实践(3) 仓库registr ...

  9. Linux系统常用命令及其使用详解大全

    Linux系统常用命令及其使用详解大全 整理了linux常用的命令,最长常用的也就几十个,cd,ls ,vi等等,有些容易忘记,经常拿出来看看. 其他的可以推荐一个网站,https://www.lin ...

最新文章

  1. phar.php error 139,composer.phar 安装出现PHP Fatal error解决办法
  2. Strategy策略模式
  3. 【VMCloud云平台】SCO(一)规划
  4. python 读下一行-Python-将前一行和下一行绑定到当前行。
  5. php安卓交互安全,php结合安卓客户端实现查询交互实例
  6. 牛客 - 仓库选址(中位数+思维)
  7. NLP快速入门:手把手教你用HanLP做中文分词
  8. 基于JAVA+Spring+MYSQL的公共自行车管理系统
  9. VS2010启动总是遇到异常提示的解决
  10. 将文件夹内的所有文件重命名(从1开始发番)
  11. CISCO常用配置命令
  12. 边沿触发器(T触发器)
  13. 众人皆阳我独阴,分享与小阳人共同生活一周体验!
  14. flask开启debug调试模式
  15. 计算机开机最快,你电脑开机要多久?4招让你的电脑开机速度比之前快几倍
  16. 分频器的Verilog实现(偶数分频、奇数分频)
  17. 前端加载动画/加载等待动画
  18. Matlab卷积函数之conv、deconv、conv2、convn
  19. 细说Mybatis一级缓存、二级缓存以及mybatis获取mapper的面向接口编程思想(Mapper接口动态代理实现原理)(二)
  20. matlab模拟小游戏,基于MATLAB的小游戏(puzzle)

热门文章

  1. DerekJiang的装修日记汇总帖
  2. OkHttp之线程池的使用
  3. 腾讯手游助手王者服务器,腾讯手游助手王者荣耀正在定位无法进入的解决教程...
  4. python面向对象试题_python面向对象程序设计-中国大学mooc-试题题目及答案
  5. Android 9(P)之init进程启动源码分析指南之一
  6. R语言绘图中图片的组合(cowplot、patchwork宏包、layout、par()、gridExtra)
  7. R语言ggplot2可视化:使用patchwork包的align_patches函数将多个可视化图像对齐(align all plots)
  8. Python学习日记1——python3.8.3安装以及配置环境
  9. 条码标签设计软件Nicelabel使用方法
  10. 浅析<router-view> v-slot事例