用户工具

站点工具


cwe:cn:start

什么是通用弱点枚举(CWE)

通用弱点枚举(Common Weakness Enumeration)是一个软件社区项目,它的定位在于创建一个软件弱点和漏洞的类目。项目的目标是让人们更好地理解软件的缺陷并创建能够识别、修复以及阻止此类缺陷的自动化工具。

CWE的为程序员和安全从业者提供了一个有条理的软件弱点类型,其目的在于:

  • 作为一种通用的语言用来描述软件在架构、设计以及编码等环节存在的安全弱点。
  • 作为安全工具在处理这些弱点所使用的通用标尺。
  • 为弱点的识别、缓解以及预防提供一种通用的基线标准。
下面是一些常见的软件弱点:
  • 缓冲区溢出、格式化字符串等
  • 结构化及有效性问题(Structure and Validity Problems)
  • 常见的特殊元素操作(Common Special Element Manipulations)
  • 通道和路径错误(Channel and Path Errors)
  • 处理器错误(Handler Errors)
  • 用户界面错误
  • 路径遍历和类似的错误
  • 身份认证错误
  • 资源管理错误
  • 对数据的验证不充分
  • 代码执行和注入
  • 随机性与可预测性(Randomness and Predictability)

介绍

组织机构希望他们获取和开发的软件产品远离已知类型的安全漏洞。当前出现了一些用来发现代码中的安全漏洞和弱点的高品质工具和服务,但是想要判断哪个工具/服务更适合某一项具体工作却很难,因为在代码审计领域缺少标准化的架构和定义。CWE是专为解决这类问题而创立的。

MITRE早在1999年启动CVE列表项目的时候便开始了对软件弱点类目问题的研究。在过去的5年多时间里,作为CVE开发的一部分,MITRE的CVE团队初步开发出一种对漏洞、攻击、错误以及其它概念的分类和编目方法。然而,虽然这些分组足够CVE使用,但是如果将此方法用在代码安全审计领域却显得非常粗糙。为了支持在代码审计中的应用,需要更精确、更简练,而且需要为每个不同节点和分组提供更多细节和描述,如影响、行为以及实现细节等。

为了实现这一目标MITRE首先尝试对CVE内部的分类机制进行修订以使其适用于代码审计行业,这是MITRE参与美国国土安全部(DHS)国家网络安全局(NCSD)资助的美国国家标准研究院(NIST)软件质量度量和评估工具(SAMATE)项目的一部分工作内容。这项工作最终形成了一篇名为“Preliminary List Of Vulnerability Examples for Researchers (PLOVER)”的文章。这篇文章列举了现实世界中1500多种不同的漏洞样本,以它们的CVE名称作为标识。PLOVER中的漏洞使用一种细节化的概念框架进行分类,这一框架包含了290种不同类别的软件弱点、idiosyncrasies、错误和缺陷,每个类别中包含了大量现实世界中真实存在的例子。PLOVER是第一次自下而上的尝试,它努力将现实世界代码中存在的错误和弱点抽象化,组织成为不同类别以表达代码中可能会出现的潜在问题。最终PLOVER将这些类别组织成适当的结构从而让它们能够在不同的场景和目的中得到应用。

PLOVER项目之后,NIST的SAMATE项目社区对这些通用的弱点建立了一套可接受的定义和描述,这意味着CWE列表和相关的分类方法的创建。CWE列表和它的分类机制现在能够为各种覆盖了不同CWE定义的需求提供代码审计描述。而且CWE未来能够针对不同的语言、框架、平台和机器架构进行扩展。

为什么需要CWE

面临的挑战

软件采购方希望他们获取的软件产品能够针对已知的安全缺陷类型进行审查,而且在大型政府和企业的采购方希望将这些类型的审查作为他们后续采购合同的一部分。然而,能够执行此类审查的工具和服务是新兴的事物,当前没有能够对这些工具和服务的性能和覆盖面进行规范的命名法、分类法和标准。这导致很难对这些工具/服务进行比较以确定它是否最适用于某一项具体的工作。需要一种针对软件安全弱点标准的列表和分类,作为软件和服务的统一描述语言和度量标尺。

解决方案

CWE是一个社区开发的常见软件弱点的正式列表。它是一种用来描述软件安全弱点的通用语言,一个安全软件用来定位漏洞的标准量尺,以及一个用于弱点识别、缓解和预防所使用的基线标准。CWE作为统一的标准,它无论在广度还是深度方面统一了这一领域最有价值的内容,平衡了学术界、商业界以及政府在思维和认识方面的不同。CWE的目标是促进代码审计行业的标准化和成熟化,同时大力推进各类组织对他们采购或开发的软件质量进行审查的能力。

如上所述,MITRE的PLOVER项目是创建正式的CWE的起始点。CWE不仅仅涵盖了CVE列表的15000余条CVE名称1),它同时包含了从其它行业和学术界的数据源和样本得到的细节和分类结构数据,如McGraw/Fortify “Kingdoms”分类2);Howard、LeBlanc和Viega的“19 Deadly Sins”3)以及Secure Software的CLASP项目4)等等。

CWE的定义和描述更多地支持发现而不是防范这些常见的软件安全漏洞代码。这意味着,无论是软件评估工具/服务的用户还是开发人员现在拥有能够描述覆盖不同CWE的行业软件安全漏洞代码评估机制。如果有必要,CWE也可以限定在特定的语言、框架、平台和机器架构的范围内。 CWE列表提供(1)一个包含其枚举弱点的高层字典视图,(2)适用于各种潜在用户便于访问特定弱点更为简单的分类树视图,以及(3)一个纯粹图形分类树视图,能够让用户通过弱点更为广泛的背景和关系更好地了解它们。

此外,目前MITRE正协同研究人员和软件提供商确定哪一种元数据和资源(如代码样本、模式、可能的解决方案等)对于更加清晰地理解和支撑工具识别代码中的CWE更具有价值。这项工作也将配合和使用的SAMATE项目的各类成果,包括其开发的一个通过代码审计类软件发现的CWE项目的精确度和覆盖度来确定其执行效率的语料库(corpus)。

CWE兼容性

除了上述的创建CWE的原因之外,一个最终的目标是实现CWE兼容性认证机制,以便于组织选择和使用安全评估软件对已知类型的弱点进行评估。

CWE兼容性认证机制允许一个服务或产品获取“CWE兼容(CWE-Comaptible)”或“CWE有效(CWE-Effective)”的官方认证。这种机制能够帮助组织选择正确的软件工具以及了解可能存在的弱点和可能产生的影响。

为了获取CWE兼容性认证,产品或服务必须至少满足以下6项要求中的4项:

CWE可查询用户能够使用CWE标识查询安全元素
CWE输出向用户展现的安全元素包含或允许用户获取与CWE标识有关的内容
精确映射安全元素精确地链接到相应的CWE标识
CWE文档功能的文档描述CWE、CWE兼容性以及功能中使用到与CWE相关的部分
CWE覆盖for CWE-Compatibility and CWE-Effectiveness, the capability's documentation explicitly lists the CWE-IDs that the capability claims coverage and effectiveness against locating in software
CWE测试结果 for CWE-Effectiveness, test results from the capability showing the results of assessing software for the CWEs are posted on the CWE Web site

参考

其它链接

cwe/cn/start.txt · 最后更改: 2014/09/04 16:53 (外部编辑)