剖析CWE视图的层次定义和解析方式

原创
01/25 18:33
阅读数 1.6K
摘要:CWE做为软件缺陷分类的重要标准, 对安全研究、安全标准、缺陷管理起了重要的纽带作用。CWE通过编号的类型(类缺陷、基础缺陷和变种缺陷等)形成了多层次的缺陷类型划分体系。本文进一步剖析了CWE视图的层次之间的定义和解析方式。

本文分享自华为云社区《CWE视图层级关系的解析 之 CWE节点的存储和定义》,作者:Uncle_Tom。

1. CWE的视图

CWE做为软件缺陷分类的重要标准, 对安全研究、安全标准、缺陷管理起了重要的纽带作用。CWE使代码缺陷不同领域的研究人员在交流安全问题时,能够采用相同的定义,减少了歧义性。

CWE通过编号的类型(类缺陷、基础缺陷和变种缺陷等)形成了多层次的缺陷类型划分体系。

CWE按照使用者视角, 给出了不同的CWE视图. CWE提供了三大类的视图.

1.1. 向导视图(Navigate CWE)

CWE提供了:

  • 研究者:CWE-1000 VIEW: Research Concepts
    该视图旨在促进对弱点的研究,包括弱点之间的相互依赖性,并可用来系统地找出CWE内部的理论差距。该视图面向的是学术研究人员、漏洞分析人员和评估工具厂商。
    它对弱点进行了分类,在很大程度上忽略了如何检测它们,它们出现在代码中的什么地方,以及它们何时被引入软件开发生命周期。相反,它主要是根据软件行为的抽象来组织的。这种分类方法不关心缺陷的检测方法,缺陷在代码中的位置,在软件开发生命周期中何时引入缺陷。该视图主要基于对软件行为进行抽象描述的方法组织归类。
  • 软件开发: CWE-699 VIEW: Software Development
    该视图围绕软件开发中经常使用或遇到的弱点。因此该视图可以用于开发人员、教育工作者和评估供应商。分类基础是软件开发中经常使用和碰到的概念, 它提供了多种类别,旨在简化导航、浏览和映射。
  • 硬件设计: CWE-1194 VIEW: Hardware Design

1.2. 扩展试图(External Mappings)

基于一些外部组织生成的视图. 这里有我们熟悉的CWE TOP 25,OWASP TOP 10,以及 SEC CERT的编程规范和CISQ 质量测量标准等。

1.3. 帮助试图(Helpful Views)

这里基于特定的标准提供了特定领域的试图.

1.4. 过期的视图(Obsolete Views)

因为新的视图发布,而不再使用的视图, 例如以往的CWE TOP 25, OWASP TOP 10等.

2. CWE的存储结构

2.1. CWE定义的xml schema文件

CWE 每个版本的所有信息是存放在一个xml文件中。xml中各个字段的格式和定义是由一个xsd文件来定义xml的schema。这这些两个文件可以从CWE的下载页面得到

我们来看下视图和具体的CWE的存储关系是怎么定义在schema中的。

2.2. CWE xml文件的框架(Weakness_Catalog节点)

这个节点下定义了组成xml文件的四个主要节点:

  • Weaknesses:各个CWE的定义,由WeaknessType类型具体定义;
  • Categories:弱点的分类定义,由CategoryType类型具体定义;
  • Views:弱点视图的定义,由ViewType类型具体定义;
  • External_References: 外部参考信息,由ExternalReferenceType类型具体定义。

接下来我们重点说下四个节点中的:Weaknesses和Views。

2.3. 弱点节点(Weaknesses)定义

Weaknesses的定义是由WeaknessType类型定义的。

2.3.1. 弱点类型(WeaknessType)的定义

这个节点下定义每个CWE弱点的主要地方,这里有我们了解的必须的节点,例如CWE的ID,名字(Name), 描述(Description)等,以及组成每个CWE的其他节点的定义。

这里我们重点关注CWE间的关系:Related_WeaknessesType。

2.3.2. 弱点关系类型(Related_WeaknessesType)的定义

这个节点定义个当前CWE在不同视图下与其他节点的关联关系。主要字段包括:

  • Nature: 关系类型,由另一个枚举(RelatednatureEnumeration)定义。见下图:

  • CWE_ID: 与之关联的CWE编号ID;
  • VIEW_ID: 与之关联的CWE视图(View)编号(ID);

通常这里只定义父节点,也就是当前节点在视图(VIEW_ID)中的父节点(Nature为ChildOf)的CWE节点是CWE_ID。

2.4. 视图节点(Views)定义

Views的定义是由ViewType类型定义的。

2.4.1. 视图类型(ViewType)的定义

这里定义了视图的主要组成:

  • ID:视图的ID;
  • Name: 视图的名字;
  • Members:视图的成员,由RelationshipsType类型具体定义。

2.4.2. 视图节点关系类型(RelationshipType)的定义

该类型具体的定义了视图的成员,以及和视图成员之间的关系。

  • Has_Member: 由结构体Member_Type定义,具体如下图:

每个视图成员由成员的CWE_ID,和所属的视图编号View_ID组成。

2.5. CWE层级关系的举例

2.5.1. 研究者视图CWE-1000

  • 研究者视图CWE-1000页面关系展示

从这个图示可以看到编号:CWE-1000的研究者视图由以下节点组成:

  • 视图的成员:
    • CWE-284:访问控制不恰当(Improper Access Control);
    • CWE-435: 交互错误(Improper Interaction Between Multiple Correctly-Behaving Entities);
    • CWE-664:在生命周期中对资源的控制不恰当(Improper Control of a Resource Through its Lifetime);
  • 视图的子节点:
    这里以CWE-120为例,从图中可以看到:
    • CWE-120:未进行输入大小检查的缓冲区拷贝(传统缓冲区溢出),它的父节点是:CWE-119;
    • CWE-119:内存缓冲区边界内操作的限制不恰当,它的父节点是: CWE-118;
    • CWE-118: 对可索引资源的访问不恰当(越界错误), 它的父节点是: CWE-664;
    • CWE-664:在生命周期中对资源的控制不恰当,它的父节点是: CWE-1000;
    • CWE-1000:研究者视图。

2.5.2. 对应的xml定义

  • 研究者视图CWE-1000的定义

  • CWE-120的定义

  • CWE-119的定义

  • CWE-118的定义

3. 小结

  • 介绍了CWE的四种主要视图类型:向导视图、扩展试图、帮助试图和过期的视图;
  • 介绍了CWE通过xsd完成xml存储的定义方式,重点介绍了如何建立各个CWE之间的层级关系;
  • 以CWE120为例说明了CWE在xml文件中如何建立与CWE-1000之间的层级关系。

 

点击关注,第一时间了解华为云新鲜技术~

展开阅读全文
加载中

作者的其它热门文章

打赏
0
1 收藏
分享
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部