CERT 和 CWE 之间有什么联系?
高达 90%的软件安全问题是由编码错误引起的,这就是实践安全编码规范必不可少的原因。本文将讨论编码标准其中的两种:CWE 和 CERT,并解释它们之间的联系。
CWE 常见缺陷列表
“CWE™️是由社区开发,有关软件和硬件缺陷的类型列表,界定安全有关的词汇、作为安全工具的衡量标准,以及识别漏洞、修复和预防安全隐患的基准”。
因此业界对它有统一的名称和描述,利于软件分析工具识别导致安全缺陷的编码错误。CWE 枚举了设计和架构缺陷以及低级编码和设计错误的清单,使开发人员更好地设计应用程序的架构。
CERT 安全编码标准
CERT 是卡内基梅隆大学软件工程研究所的计算机应急响应小组为 C、C++和 Java 开发的编码规范。其中的内容是接纳了全球范围的软件工程师社区的贡献而实现的。这些规范有据可查,使软件开发团队中得以强制执行,从而确保创建高质量、安全的代码。通过遵循一套统一的规则,软件开发人员可以按照企业制定的指导方针工作,而不是根据程序员个人可能未经过充分的试验和测试的偏好。一旦在企业内建立了标准,就可以使用它们来定量评估源代码的质量和漏洞。这可以通过手动代码审查或使用代码分析工具自动审查来实现。
CERT 安全编码标准包括避免在编码和实现时的错误,以及其底层架构设计错误。
CERT 和 CWE 的关系
首先,它们都是编码标准,但处理问题的方式略有不同。
他们是互相支持的。CWE 是软件应用程序中已知安全漏洞的数据库。而 CERT 则提供编写代码和识别不安全编码结构的指南。CWE 涵盖了广泛的编程语言,因此不仅限于 CERT C 规则,因为不是所有漏洞都可以在一种语言中找到。此外,CWE 包括可能导致漏洞的高级设计问题。相反,并非所有 CERT 规则都映射到 CWE 的缺陷,因为编码错误不一定导致与安全相关的问题。因此,同时使用这两种标准能为应用程序开发提供更高级别的安全性。
CERT-CWE 映射
通过遵循 CERT 中规定的规则,开发人员可以直接解决 CWE 中发现的一些漏洞。这些映射关系的能力对于满足企业安全编码的要求很重要。例如,如果开发人员遵守 CERT 编码标准,他们可以完全或部分防止 CWE-734 中确定的漏洞。CWE-734 涵盖 CERT C 的 799 个有关 CWE 规则中的 103 个。静态代码分析工具根据它们涵盖的 CERT 规则的数量提供这样的映射关系。
CERT C 安全编码标准中的指南与 CWE 条目存在交叉引用。 这些交叉引用根据那些如果违反了 CERT C 规则,将直接导致对应 CWE 缺陷的指导方针创建。
总而言之,CWE 提供了软件中已知弱点的列表,而 CERT 规范确定了可能暴露软件漏洞的编码结构。由于它们的相互映射,弄清所有 CERT 示例以确保软件安全可靠是明智的,甚至是必要的。鉴释自主研发的静态代码工具——爱科识,为开发人员提供了创建安全代码所需的许多映射。
点击此处了解爱科识如何结合 CERT 和 CWE 标准进行静态代码分析,
以达到最佳实践和安全编码。
评论