Polyspace 对 CWE 规则和类别的支持
R2026b常见弱点枚举 (CWE™) 是软件架构、设计、代码或实现中可能出现的软件弱点类型的列表。这些弱点可能导致安全漏洞。
Polyspace 可以根据 CWE 列表的子集(包括特定于 C 或 C++ 代码的子集或弱点)检查您的代码。要激活 CWE 列表的子集,请使用分析选项 。Polyspace 支持 CWE 标准版本 4.17。-cwe
支持的 CWE 规则
常见弱点枚举 (CWE) 中指定的弱点包括可由 Polyspace® 精确检查的问题。Polyspace 可以检测标准中指定的这些 CWE 规则的所有违规。除了这些精确的检查项外,Polyspace 还部分支持其他 CWE 规则。在检查 CWE 规则违例时,您可以选择启用:
所有支持的 CWE 规则
仅精确的 CWE 规则
CWE 658 类别的规则
CWE 659 类别的规则
要查看所有支持的 CWE 规则,请参阅 常见弱点枚举 (CWE)。
要查找精确的检查项,请执行以下操作:
在工程配置中的配置节点上,找到静态分析选项卡。
在缺陷和编码标准中,选择
使用自定义检查项文件。点击打开 (
),打开“检查项选择”对话框。在“检查项选择”窗口中,点击新建以创建一个新的检查项文件。清除已选中的编码规则。
在编码标准和缺陷列表中选择 CWE。
选中 all-exact-checkers 复选框。精确 CWE 编码规则检查项随即被选中。
将您的选择保存为 XML 文件。
支持的 CWE 类别
CWE 规则按相关问题的类别进行分类整理。虽然这些类别本身并非弱点,但它们可以帮助您将结果按特定类型的弱点进行分类整理。例如,CWE 310 属于加密问题类别,它收集与加密相关的 CWE 规则。在运行 Polyspace Bug Finder™ 分析后,请使用 CWE 类别对代码中的 CWE 违规项按问题类型进行分组和整理。
此表列出了可映射到 Polyspace 缺陷检查项和 Polyspace CWE 编码规则检查项的 CWE 类别。
| CWE ID | CWE ID 描述 | 缺陷或 CWE 编码规则检查项 |
|---|---|---|
| 189 | Numeric Errors | |
| 227 | Improper fulfillment of API contract | |
| 251 | Often misused: string management | |
| 310 | Cryptographic issues | |
| 320 | Key management errors | |
| 387 | Signal errors | |
| 398 | Indicator of poor code quality | |
| 465 | Pointer Issues | |
| 872 | CERT C++ Secure Coding Section 04 - Integers (INT) | |
| 873 | CERT C++ Secure Coding Section 05 - Floating point arithmetic (FLP) | |
| 896 | SFP Primary Cluster:Tainted Input |
|
CWE 和 DO 鉴定套件或 IEC 认证套件
CWE(常见弱点枚举)是一个由社区维护的软件弱点列表,但它并非官方标准,也不符合正式认证的标准。
以下几点解释了为何 CWE 检查项没有包含在 DO 鉴定套件和 IEC 认证套件中:
不是官方标准 - CWE 是由 MITRE 维护的参考列表,而不是认证机构认可的标准。
无版本控制 - CWE 条目在没有正式版本控制的情况下更新,难以实现可追溯性与合规性。
与语言无关的要求 - CWE 要求是通用的,并非特定于 C/C++,这限制了它们在语言特定的认证上下文中的适用性。
Polyspace 专用实现 - CWE 并未提供必须检查的内容的严格定义,因此需要对基础弱点进行解释。Polyspace 检查项是基于这些解释设计的,可能无法完全映射到 CWE 要求,这妨碍了与认证标准的严格对齐。
因此,Polyspace 中的 CWE 检查项可作为额外的安全分析工具,但未包含在任何官方 DO 鉴定套件或 IEC 认证套件中。