主要内容

Polyspace 对 CWE 规则和类别的支持

R2026b

常见弱点枚举 (CWE™) 是软件架构、设计、代码或实现中可能出现的软件弱点类型的列表。这些弱点可能导致安全漏洞。

Polyspace 可以根据 CWE 列表的子集(包括特定于 C 或 C++ 代码的子集或弱点)检查您的代码。要激活 CWE 列表的子集,请使用分析选项 -cwe。Polyspace 支持 CWE 标准版本 4.17。

支持的 CWE 规则

常见弱点枚举 (CWE) 中指定的弱点包括可由 Polyspace® 精确检查的问题。Polyspace 可以检测标准中指定的这些 CWE 规则的所有违规。除了这些精确的检查项外,Polyspace 还部分支持其他 CWE 规则。在检查 CWE 规则违例时,您可以选择启用:

  • 所有支持的 CWE 规则

  • 仅精确的 CWE 规则

  • CWE 658 类别的规则

  • CWE 659 类别的规则

要查看所有支持的 CWE 规则,请参阅 常见弱点枚举 (CWE)。

要查找精确的检查项,请执行以下操作:

  1. 在工程配置中的配置节点上,找到静态分析选项卡。

  2. 在缺陷和编码标准中,选择使用自定义检查项文件。

  3. 点击打开 (),打开“检查项选择”对话框。

  4. 在“检查项选择”窗口中,点击新建以创建一个新的检查项文件。清除已选中的编码规则。

  5. 在编码标准和缺陷列表中选择 CWE。

  6. 选中 all-exact-checkers 复选框。精确 CWE 编码规则检查项随即被选中。

  7. 将您的选择保存为 XML 文件。

支持的 CWE 类别

CWE 规则按相关问题的类别进行分类整理。虽然这些类别本身并非弱点,但它们可以帮助您将结果按特定类型的弱点进行分类整理。例如,CWE 310 属于加密问题类别,它收集与加密相关的 CWE 规则。在运行 Polyspace Bug Finder™ 分析后,请使用 CWE 类别对代码中的 CWE 违规项按问题类型进行分组和整理。

此表列出了可映射到 Polyspace 缺陷检查项和 Polyspace CWE 编码规则检查项的 CWE 类别。

CWE IDCWE ID 描述缺陷或 CWE 编码规则检查项
189 Numeric Errors

CWE Rule 128

CWE Rule 190

CWE Rule 191

CWE Rule 193

CWE Rule 369

CWE Rule 839

CWE Rule 1335

227 Improper fulfillment of API contract

CWE Rule 242

CWE Rule 243

CWE Rule 244

CWE Rule 248

CWE Rule 250

CWE Rule 252

CWE Rule 558

251 Often misused: string management

字符串操作中目标缓冲区上溢

310 Cryptographic issues

常量块加密初始化向量

常量加密密钥

加密运算的上下文初始化不正确

未正确初始化摘要运算的上下文

对 RSA 算法运算使用不兼容的填充

加密算法的密钥不正确

RSA 算法缺失盲化

缺失块加密初始化向量

缺失证书认证中心列表

缺失加密算法

缺失加密密钥

缺失用于加密、解密或签名运算的数据

RSA 算法缺失填充

缺失密钥生成参数

缺失对等密钥

缺失私钥

缺失公钥

缺失 X.509 证书

不安全的哈希算法

不安全的密钥生成参数

不安全的 RSA 公钥指数

不安全的 SSL/TLS 协议

可预测的块加密初始化向量

可预测的加密密钥

弱加密算法

弱加密模式

对 RSA 算法使用弱填充

CWE Rule 325

CWE Rule 328

CWE Rule 335

CWE Rule 338

320 Key management errors

常量加密密钥

缺失加密密钥

缺失对等密钥

缺失私钥

缺失公钥

CWE Rule 322

CWE Rule 798

387 Signal errors

CWE Rule 364

从计算异常信号处理程序返回结果

从信号处理程序内部调用 signal

398 Indicator of poor code quality

CWE Rule 401

CWE Rule 404

CWE Rule 415

CWE Rule 416

CWE Rule 457

CWE Rule 474

CWE Rule 475

CWE Rule 476

CWE Rule 477

465

Pointer Issues

CWE Rule 466

CWE Rule 468

CWE Rule 469

CWE Rule 476

CWE Rule 587

CWE Rule 763

CWE Rule 822

CWE Rule 823

CWE Rule 824

CWE Rule 825

872 CERT C++ Secure Coding Section 04 - Integers (INT)

CWE Rule 20

CWE Rule 129

CWE Rule 190

CWE Rule 192

CWE Rule 197

CWE Rule 369

CWE Rule 466

CWE Rule 587

CWE Rule 606

CWE Rule 676

CWE Rule 681

CWE Rule 682

873 CERT C++ Secure Coding Section 05 - Floating point arithmetic (FLP)

浮点操作数被吸收

CWE Rule 369

浮点数溢出

使用相等运算符进行浮点比较

无效的标准库浮点例程使用

CWE Rule 681

CWE Rule 682

CWE Rule 686

896 SFP Primary Cluster:Tainted Input

CWE 和 DO 鉴定套件或 IEC 认证套件

CWE(常见弱点枚举)是一个由社区维护的软件弱点列表,但它并非官方标准,也不符合正式认证的标准。

以下几点解释了为何 CWE 检查项没有包含在 DO 鉴定套件和 IEC 认证套件中:

  1. 不是官方标准 - CWE 是由 MITRE 维护的参考列表,而不是认证机构认可的标准。

  2. 无版本控制 - CWE 条目在没有正式版本控制的情况下更新,难以实现可追溯性与合规性。

  3. 与语言无关的要求 - CWE 要求是通用的,并非特定于 C/C++,这限制了它们在语言特定的认证上下文中的适用性。

  4. Polyspace 专用实现 - CWE 并未提供必须检查的内容的严格定义,因此需要对基础弱点进行解释。Polyspace 检查项是基于这些解释设计的,可能无法完全映射到 CWE 要求,这妨碍了与认证标准的严格对齐。

因此,Polyspace 中的 CWE 检查项可作为额外的安全分析工具,但未包含在任何官方 DO 鉴定套件或 IEC 认证套件中。

另请参阅