CWE

常见的弱点枚举

一个由社区开发的软件&硬件缺陷类型的列表

2021 CWE最重要的硬件的弱点
CWE最危险的弱点
>文档> CWE的演变发展和研究的观点
ID

CWE的演变发展和研究的观点
CWE的演变发展和研究的观点

文档版本:1.0日期:2008年9月9日

这是一个草案。CWE的打算支持维护,从一个特定的技术教育和征求反馈观众。本文档不反映任何主教法冠公司的官方立场或其赞助商。manbetx客户端首页版权©2008,斜方公司。manbetx客户端首页保留所有权利。许可重新分配这个文件如果没有这段删除。本文档是可以不经通知自行调整。

作者:史蒂夫Christey
URL:http://cwe.mitre.org/documents/views/view-evolution.html

表的内容
表的内容
  1. 介绍
  2. 七个致命的王国(cwe - 700)
  3. 开发的概念视图(cwe - 699)
  4. 研究概念视图(cwe - 1000)
  5. 创建抽象过程的研究观点
  6. 清晰的名称和描述
  7. 引用
介绍
介绍

自CWE的目的是促进沟通,它必须支持多个利益相关者。在过去的一年中,我们已经开发了多个视图,为不同的目的和观众。每个视图选择和组织适当的内容的方式为其目标受众最意义。

前8,草案CWE只提供组织数据的一种方式,大致分层的方式。这从多个过去努力计划大举借贷,包括七个致命的王国(7 pk),(扣子),千鸟,后备军人et al .(后备军人)。它还使用内容从许多不同的来源有不同的观点。

CWE的早期阶段的发展,许多不同的人轮流在建立和维护CWE的内容,导致许多不一致的分类。这降低了导航和浏览树的效用,有时使得用户很难找到恰当的CWE ID用于一个弱点,导致挫折和映射错误。这也让CWE更容易维护人员意外引入重复条目。

加剧了这些问题的患病率在CWE名称和描述不一致的或模糊的术语。这些术语安全行业特有的问题,有些是继承自CWE使用以前的来源,并介绍了一些CWE团队本身。

这些困难不是CWE独有。例如,重复性的问题和相互排他性的弱点分类法已经证据确凿的至少从伊凡Krsul的博士论文[Krsul]。

之前的几个月CWE 1.0的发布,我们一直在解决这个问题:

  • CWE内建立多个不同的观点,支持多个观众

  • 改善现有的视图,这样他们的组织更加一致

  • 改变名称和描述提供更精确的信息,最大限度地减少混乱的数量为每个CWE条目

本文档描述了我们如何组织CWE的组织两个主要观点:

  • 发展概念(cwe - 699)是针对开发人员和其他熟悉的人vulnerability-related分类法。

  • 研究概念(cwe - 1000)是面向学术研究,创建一个新的分类框架的弱点。

我们还描述如何试图解决现有的名称和描述的局限性。

一个单独的文档对比cwe - 699cwe - 1000方法与七个致命的王国,有自己的观点在CWE 1.0中,cwe - 700。它可以发现:http://cwe.mitre.org/documents/views/view-comparison.html

七个致命的王国(cwe - 700)
七个致命的王国(cwe - 700)

最熟悉的分类法是七有害的王国之一[7 pk]。其重点是弱点,可以分析工具,而是“混凝土和具体问题”“抽象和理论的。”It defines 7 kingdoms (plus an extra kingdom), which are broad categories that decompose into phyla. Some examples of the pernicious kingdoms are input validation, API abuse, and security features.

七个致命的王国视图(cwe - 700)是基于原7 pk,开发人员主要关注实用性。它组织弱点的类别。

开发的概念视图(cwe - 699)
开发的概念视图(cwe - 699)

开发的概念视图(cwe - 699),有时也称为发展观,组织弱点在经常使用的概念或遇到了在软件开发中。因此,这一观点可以使密切与开发者的角度,教育工作者,和评估供应商。

的一些目标cwe - 699包括flexibile导航(有用的类别),熟悉(相似其他努力),覆盖(识别所有低级CWE的弱点)。

达到熟悉,高级节点的视图中大举借贷结构使用的七个致命的王国(7 pk),错误的类别(扣子),使用的《创世纪》和位置分类(后备军人)et al .,和初步的漏洞列表示例研究人员(千鸟)。因此,开发视图很容易被用户理解已经熟悉这些分类法。

关于导航,这些过去的分类法和持续的CWE维护介绍各种不同的类别的弱点。这提供了一种机制CWE用户浏览大量的弱点,从不同的视角。许多这些类别定义组织基于共同的弱点属性,如语言、资源或后果。类别包括指针问题,移动代码问题,错误处理,数据处理,时间和状态,临时文件问题,弱点在J2EE和ASP环境中,网络问题,等等。

发展观的基础一直以来最早的草稿,作为CWE直到形式化的主要组织结构cwe - 699CWE 1.0。

面临的一个挑战cwe - 699的大量可用的类别,它可以导致人们不一致执行映射CWE标识符。例如,在草案8,cwe - 444(HTTP请求走私)的子类别cwe - 442(网络问题)。然而,这一类是不完整的,所以人导航到Web问题类别不会发现cwe - 79(XSS)。此外,cwe - 444不是在任何其他方式分类,所以开发人员或研究人员将无法看到它如何与其他问题。

发展观在其他注意事项的信息,请参见“分类和相关属性”部分http://cwe.mitre.org/documents/views/view-comparison.html

研究概念视图(cwe - 1000)
研究概念视图(cwe - 1000)

多个视角和category-based视图CWE时非常有用,一个视图完全基于弱点及其抽象也需要分类提供了一种更正式的机制缺陷,维护CWE和执行脆弱性研究。

cwe - 1000,研究概念视图(有时也称为研究视图),是解决这个问题需要开发的。它将弱点的方式很大程度上忽略了它们如何能被探测到,他们出现在代码中,当他们介绍了软件开发生命周期。因此,它避免了捕获基于特定语言的关系,环境,技术、框架、发生频率、影响和缓解。(因为这些关系是方便的对于许多用户来说,他们捕捉到cwe - 699)。通过这样做,我们能够专注于规范化,使每个弱点独特的因素。

研究视角主要是根据抽象的软件行为和组织资源被这些行为,与横切的脆弱性研究理论。除了分类、研究观点明确模型的弱点之间的相互依赖关系,还没有一个正式的部分过去的分类工作。主要的例子是链和复合材料。

视图使用多个很深的层次结构作为其组织结构,有更多比其他分类方案的抽象级别。理想情况下,只在weakness-to-weakness抽象关系,用最小的重叠和类别。因此,缺点是目前的最低水平一直到树的根。每个成员的弱点将覆盖一个错误。每个层次的顶级条目被称为支柱。

这种方法奠定了基础更加坚实的理解不足的复杂性及其影响。一旦建立了基础,研究视图可以用来系统地识别理论在CWE缺口。我们可以开始添加在低级变异来创建一个更复杂的和彻底的了解不足。

开发人员的组织结构视图(cwe - 699)是不适合用于研究的目标视图(cwe - 1000)。在cwe - 699、弱点属于多个类别的相关性可以改变基于上下文的弱点时,或观众的角度。因此,弱点往往是儿童的类别与底层软件错误的本质。

创建抽象过程的研究观点
创建抽象过程的研究观点

统一的研究观点符合单一的角度来看,我们试图构建抽象的每个缺点背后的核心问题。

这项工作进行了归纳,使用可用的疲软数据。主要来源是现有库CWE草稿8和9的弱点。其他来源的背景知识和观察到的例子从CVE工作没有分类,存储库,我们收到了NDA之下,从一个匿名来源和实质性的建议。

归纳过程并不是正式的,但一般方法进化,这样“核心问题”被定义资源的无效行为。抽象当时上执行这两个重要概念。然而,这并不总是。

识别的抽象水平

CWE团队标记每一个弱点根据不同的抽象级别:类、基础和变体。这些水平并没有被正式定义,所以有一些不一致的定义。不过,总体而言,一个类描述了一个弱点非常抽象的方式,通常独立于任何特定的语言或技术。最低水平的变量描述了一个弱点在很低的水平的细节,通常局限于一个特定的语言,技术,编程语言,或资源类型。类和变体之间的水平,基本描述了疲软的一个抽象的方式,但有足够的细节,读者可以推断出特定的检测和预防方法完全基于描述。

cwe - 1000(研究视图),团队然后确定并解决逻辑不一致性的弱点的关系,比如一个父类的一个变种,或基本没有阶级的父母。这个层次结构的集中努力在未开发地区。

进行抽象

大致说来,非正式的流程是:

  • 检查弱点如果它没有任何弱点的父母。

  • 确定这个问题是否真的低级缺陷的描述更复杂的组合,如链或复合

  • 如果连锁或复合,或其他复合元素,分别对待每一个弱点,并获取适当的它们之间的关系(例如,使用CanPrecede关系链)

  • 根据不同的抽象级别标签每个弱点:类、基础和变体。

  • 对于每一个弱点,识别关键的行为似乎是不变的在这种类型的任何弱点,以及行为是错误的。确保行为反映在弱点,并建立一个抽象的行为。

  • 如果涉及多个行为,那么问题可能是一个类别,需要分成单独的弱点。

  • 如果弱点是特定于一个特定类型的资源,确定资源的类型被操纵,并构建一个抽象的资源。

  • 对于每一个任意分组(即类别),观察每个孩子的弱点,确保孩子有父母,这是一个弱点,然后从视图中删除类别(这通常涉及的类别关系转向开发视图)。

  • 当一个软弱不能再抽象,它被当作一个支柱——一个层次结构的根。

CWE 1.0的发布,仍然只有一个类别,它不可能通过释放时间来解决由于社区参与的必要性。

应该注意的是,我们没有合并支柱的“7 + 1”的原则,是7 pk。例如,cwe - 682(不正确的计算)cwe - 330(使用不够随机值)有关的数字,但他们没有合并成一个支柱,因为它将创建一个类别。

行为和资源的建模是最明显的cwe - 664过了生命的支柱,控制资源的不足。请注意,cwe - 664仍然是一个正在进行的工作,如对多个视角。

抽象在行动

考虑CWE-8(J2EE错误配置:实体Bean远程)宣布,在草案8(更多最新的名字清晰)。

  • 检查父母:唯一的父类别CWE-4(J2EE环境问题)。这个弱点需要一个新的父下cwe - 1000

  • 识别抽象层次:缺点是特定于技术的(J2EE)和特定于资源(实体Bean)。因此,抽象级别是变体。

  • 识别行为:代码指定一个实体bean可以远程访问。

  • 抽象行为:一个实体bean的代码指定不当访问,定义一个范围更广泛的控制。

  • 摘要资源:资源的代码指定不当访问,定义一个不当的控制范围。

  • 匹配CWE:这匹配cwe - 668(曝光资源错误的范围),一个类。因此,映射将抽象(无爱)。

  • 最近的父cwe - 668是一个类,所以是非常抽象的,而CWE-8是一个变体。这是一个不一致的抽象层次,这表明一个基地应该被识别。在CWE 1.0中,cwe - 668没有任何的孩子可能更合适。

另一个例子包括cwe - 560(与chmod-style参数使用umask ())。

在草案8,这有一个不提供信息的名称“经常滥用:umask ()”。没有更具体的描述,说明“面具umask()指定的参数是经常与chmod()的参数相混淆。”

  • 检查父母:唯一的父类别cwe - 559(经常滥用:参数和参数),旨在收集任何有关参数和参数。所以,这个项目需要一个新的父下cwe - 1000

  • 识别抽象层次:缺点是特定于操作系统(UNIX)和特定于语言的抽象级别(C),因此是变体。

  • 识别行为:自cwe - 560的名称和描述不够清楚,检查笔记的内容cwe - 560。这解释了核心错误是程序员调用umask(),但umask使用指定的参数数量,指定权限chmod ()。chmod()中相同的值有不同的解释和umask(),所以程序员不是指定的参数正确umask ()。这可能会导致不安全的程序来创建文件权限。

  • 确定链:注意“umask()参数不正确的规范”是后来的行为,主要与不安全的权限创建文件。因此有一个链接关系;在这里,我们将集中在主要的弱点,正确规范的论点。

  • 抽象的行为:规范的行为已经相当抽象,所以没有太多的房间去。”程序员umask指定调用一个函数和一个错误。”

  • 摘要资源:函数的参数是一个code-layer资源,所以可以抽象:“程序员调用指定一个函数和一个错误的论点。”

  • 匹配CWE:这是一个精确匹配cwe - 687(函数调用错误指定参数值)。这是贴上一个变种,但它更可以说是一个基础或类,因为它不是任何特定的技术或语言。

  • cwe - 687的父cwe - 5601000年在视图。

  • 保存cwe - 559另一位家长的cwe - 560,但转变发展概念的关系视图(cwe - 699)。

角度看问题的识别

施工期间的研究观点,有时会有困惑关于如何分类的弱点。在某些情况下,这是由于在CWE知识空白,有时候这些问题一定会得到解决。在其他情况下,多个分类依然,我们保留这些。我们怀疑当有多种分类,有不同的观点。然而,我们不能深深地CWE 1.0版本之前调查这个问题。

的一个主要的例子来看问题是在链和复合材料。我们发现大部分的分类任务简化一旦我们学会了如何识别链。可能与多个父母是复合材料的一些弱点。

考虑cwe - 568(没有super.finalize finalize()方法())。在CWE 1.0中,它有两个父母在1000年视图:

  • 573年未能遵循规范

  • 404 -不当关机或释放资源

在某种意义上,cwe - 568finalize()的弱点是一个组合,因为它未能遵循规范的代码是为了执行资源关闭。因此这将是一个孩子(573 + 404)的复合。另一种interpetation可能是,这是一个链,不遵循规范,程序执行一个不当的资源关闭。

虽然前面的示例演示了层次的复杂性,可以出现在试图确定的核心方面弱点,链式和复合概念也帮助我们理解为什么分类过去一直是这样一个困难的挑战。反过来,这些可能是负责许多映射错误和不一致。

许多问题可以由两个或两个以上的高级描述支柱。例如,一切都可以被认为是“API滥用”——通过调用strcpy()就有一个非常长缓冲区,程序员是违反了合同。然而,这并不视为“API滥用”视图下1000,还是在7 pk。如何清楚地表达这些概念仍将是一个挑战。

在一些观点的进一步描述问题:

http://www.nabble.com/Identifying-Perspective-Issues-in-CWE-to18245971.html

使用研究视图识别差距

配置类似的核心不足的另一个好处是易于应用在CWE一致的词汇。弱点之前没有关系的集合,并允许CWE团队看到不显眼的关系和趋势。例如,cwe - 696(不正确的行为顺序)被创建为一个弱点班级几个条目的根本问题是不正确的顺序执行操作。第一级的儿童cwe - 696根据研究观点现在写着:

  • cwe - 179不正确的行为秩序:早期验证

  • cwe - 408不正确的行为秩序:早期的放大

  • cwe - 551不正确的行为秩序:授权之前解析和规范化

由于抽象的节点主要是基于行为和弱点,和视图仅覆盖弱点,高级节点可以用来提供指导如何识别潜在的新孩子。例如,cwe - 118(不当访问索引资源)只有一个孩子在1000年视图,cwe - 119(未能限制操作的范围内分配的内存缓冲区)。通过考虑其他类型的可转位资源,可以确定等效的弱点,比如通过用户访问文件片段文件偏移量。

在699等观点,一个不那么正式的组织,确定差距会更加杂乱,没有系统性。

识别重复

与一个主要关注的组织行为和资源,发展来看,1000年帮助识别重复CWE条目。例如,重复的cwe - 132(零终止错误)cwe - 170(空终止)不当使用层次结构的不相交的部分。cwe - 132是在cwe - 682(不正确的计算),这是一个链接关系cwe - 170是在cwe - 169(特定于技术的特殊元素),这是一个类别为任何特定于技术的弱点与特殊的元素。自cwe - 170以null结尾的字符串是独一无二的,它是合理的吗cwe - 170将分类。

当重组核心的弱点,这两个条目在相同的位置,因为行为和资源类型是相同的。因此,识别这些条目重复是更明显的。

关键的步骤之一就是认识到描述丢失的零终止的一种方法是通过链:

注意,在这种情况下,cwe - 119将合成,cwe - 682将主。由于不正确的计算(cwe - 682),适当的零终止将不会发生(cwe - 170),并最终程序可能读或写内存缓冲区以外的(cwe - 119)。的链接关系这三个弱点可以引入一个漏洞。

问题就变成了如何分类cwe - 170,这个链条的中间步骤。在这一步中,相关的行为不正确地维护数据的结构(即零终止),依赖的代码。这属于cwe - 707(未能执行消息或数据格式良好的)。

清晰的名称和描述
清晰的名称和描述

所有CWE条目应该写清楚,以避免混乱。这对教育公众很重要,但它也很重要,以确保CWE映射是可重复的。

基于我们的经验与人们如何映射到CWE,有时我们看到的证据表明,人们可以完全依赖CWE的名字在决定如何映射CWE的问题。这是当一个问题被不正确地映射到CWE条目的条目有一个模糊的名字(可以匹配),和一个精确的描述,显然不是一个匹配。有频繁混乱根据名称、描述、观察到的例子,示范例子。

一个问题是,软弱、脆弱的术语不是特别富有表现力,少数之外的条款。一些术语有多种用途(如“溢出”和“泄漏),经常有角度问题,例如attack-focused”SQL注入”一词。

我们正在努力使CWE名称和描述更清楚的弱点,弱点本身和保持的角度,而不是攻击或后果。然而,保持CWE条目尽可能访问日常用户,我们想保留普遍术语,可行的。

我们试图改变名称,以便CWE消费者就不会如此依赖查找物品的描述和相关的笔记,只是为了找出项目正在谈论什么。

支持备用名称

有时,使用多个条件相同的弱点,如“跨站点请求伪造”和“跨站点伪造参考”。这些替代条件记录在CWE。极为常见的术语,我们包括在括号,如:

  • 未能Sanitize CRLF序列(又名“CRLF注入”)

  • 不一致的解释HTTP请求(又名“HTTP请求走私”)

指出一些条目包含术语描述条目的术语的问题和相关的弱点。

许多条目包含映射到不同的分类法。这些映射包含原始名称中使用这些分类法。

最后,当一个条目的名称变更,之前的节点名也被记录了。

好CWE的属性名称

一个好名字的标准包括:

  • 单一的解释

  • 避免混淆的术语

  • 避免含糊不清

  • 避免多用途或多角度的条款

  • 使用了术语如果可用

名称更改的试金石很简单:如果CWE分析师没有问题的一个好主意阅读这个名字之后,就需要改变。因此,我们删除了很多非特异性等术语“不安全”,“不当,”和“错误”。We are slowly building a more consistent vocabulary, but this is still a work in progress.

有问题的名字的例子

一些例子包括:

  • 危险的功能:这个短语最初是用于7 pk。CWE继承这个短语从7 pk,用它的名字cwe - 242草案9中,直到改名。7 pk和CWE描述试图弄清楚,这一类是函数的固有弱点,无法保证安全工作,如()。然而,它有时被人们解释为包括任何功能,有一定的风险,但如果使用得当,可以安全如strcpy ()。

  • 溢出的静态内部缓冲区:这句话是继承自扣和使用cwe - 500在早8和草案。这个词意味着通用类型的缓冲区溢出,但扣讨论的核心问题是一个对象包含一个字段,没有标记为决赛,这可能使修改的字段引发缓冲区溢出。据推测,其他攻击也成为可能。CWE的不是final字段被认为是一个主要的弱点在链可以有多个合成问题,比如一个溢出。在这种背景下,CLASP-style叫描述结果,而不是潜在的弱点。

  • 不当释放堆内存:这个名字是用于8版本的草案cwe - 590。在这里,“不当”词有多种解释:

    • 双重释放

    • 之前没有清算敏感的堆内存释放(堆检验)

    • 过早释放内存,因为它是引用后(使用后免费)

    • 运行自由分配的对象是()使用新的()

    • 在已分配内存运行delete()使用免费()

    另一个问题是,因为名字是按照行为的研究概念模型和资源,它可以被视为一个基准面的弱点与多个变种的孩子,如前所述。这将是一个错误的假设,因为所描述的核心问题cwe - 590实际上是一个变量,而不是基础。

    在草案9中,cwe - 590改名为“自由的无效指针不是在堆上。”

  • 经常滥用:身份验证:这句话是继承自7 pk和使用cwe - 247在早8和草案。如果只使用的名称,它可以被视为一个通用类别覆盖任何相关认证。仔细观察的描述,然而,清楚地表明这是一个特定于语言的,特定于操作系统、底层变体相关依赖getlogin()函数。

  • 移动代码:对象劫持:这句话是继承自7 pk中使用cwe - 491在早8和草案。然而,它是面向攻击的,没有指定的本质弱点,使这种攻击发生。在一个映射任务中,这使得多种解释的余地,增加映射错误的机会。至少,它迫使读者进行更多的研究,以找出被讨论。

  • 内存锁定:使用这个短语cwe - 591在早8和草案。这不是weakness-focused;它是关于一个行为没有任何规范的行为是错误的。所以它有多种解释,如:

    • 这可能是一个类别列出所有相关的弱点内存锁定

    • 这可能是一个程序,一个弱点不锁定内存时

    • 这可能是一个程序,一个弱点试图锁定正确记忆,但不

    • 这可能是一个程序,一个弱点锁内存,但不释放锁,使死锁条件

    在草案9,更名为“敏感数据存储在不当锁定内存。”

其他名称变化的例子可以发现通过回顾个人CWE的Previous_Entry_Names元素条目。

引用
引用

(7 pk)卡特里娜Tsipenyuk,布莱恩象棋,Gary McGraw。“七有害的王国:分类软件安全错误”。2005年11月。NIST研讨会软件安全保障工具,技术,和指标。http://cwe.mitre.org/documents/sources/SevenPerniciousKingdoms.pdf

(扣)约翰Viega。“扣应用程序安全性的过程”。2005年。http://searchsoftwarequality.techtarget.com/searchAppSecurity/downloads/clasp_v20.pdf

Krsul伊万Krsul。“软件脆弱性分析”。1998年。普渡大学的博士论文。ftp://ftp.cerias.purdue.edu/pub/papers/ivan-krsul/krsul-phd-thesis.pdf

后备军人Carl e .后备军人,阿兰·r·牛,约翰·p·麦克德莫特,蔡威廉s。“计算机程序安全漏洞的分类,例子”。1993年11月。海军研究实验室/ FR / 5542 - 93 - 9591。http://cwe.mitre.org/documents/sources/ATaxonomyofComputerProgramSecurityFlawswithExamples%5BLand..。

史蒂夫Christey珩科鸟。初步的漏洞列表示例研究人员(千鸟)。2005年8月。NIST研讨会上定义的软件安全工具的艺术。http://cwe.mitre.org/documents/sources/PLOVER.pdf

Vulncat增强软件安全研究小组,Gary McGraw博士。“加强分类:软件安全错误”。2008年。http://www.fortify.com/vulncat/en/vulncat/index.html

更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2018年3月30日