下表包含 <INSTALL_DIR>\configs\builtin 目录中提供的测试配置。
静态分析
该分组包含通用的静态分析测试配置。有关执行安全编码标准的测试配置,请参阅 Security Compliance Pack。
内建测试配置 | 说明 |
---|---|
Android Guidelines | 包括为 Android 开发人员推荐的规则,基于 Google Java Style Guide(https://google.github.io/styleguide/javaguide.html)。 |
Code Smells | 基于 Kent Beck 和 Martin Fowler 编写的 Code Smells 文档(http://xp.c2.com/CodeSmell.html)的规则。 |
Critical Rules | 包括大多数严重度为 1 的规则,以及 Flow Analysis Fast 配置中的规则。 |
Demo Configuration | 包括用于演示各种代码分析技术的规则。可能不适合大型代码库。 |
Find Duplicated Code | 应用报告重复代码的静态代码分析规则。重复代码可能表明应用程序设计不佳,并导致可维护性问题。 |
Find Memory Problems | 包括用于在代码中查找内存管理问题的规则。 |
Find Unused Code | 包含识别未使用代码/死代码的规则。 |
Flow Analysis Standard | 无需测试用例或应用程序执行即可检测复杂的运行时错误。检测到的缺陷包括使用未初始化或无效的内存、空指针解引用、数组和缓冲区溢出、除零、内存和资源泄漏以及死代码。此测试配置需要一个特殊的流分析许可证选项。 |
Flow Analysis Aggressive | 包括对代码进行深度流分析的规则。运行此配置可能需要花费较长时间。 |
Flow Analysis Fast | 包括用于浅层流分析的规则,会限制报告的潜在可接受缺陷的数量。 |
Internationalize Code | 应用静态代码分析来发现可能阻碍国际化工作的代码。 |
Metrics | 计算多种代码指标的值。 |
Recommended Rules | 推荐规则的默认配置。涵盖大多数严重度 1 和严重度 2 的规则。包含 Flow Analysis Fast 配置中的规则。 |
Thread Safe Programming | 包含的规则能够发现在多线程环境中运行存在危险的代码,并有助于避免常见的线程问题,如死锁、竞争条件、错过通知、无限循环和数据损坏。 |
TDD Best Practices | TDD(测试驱动开发)Best Practices 配置包括基于 Code Smells 文档(http://xp.c2.com/CodeSmell.html)的规则、检查 JUnit 测试类对于被测试类是否全面的规则,以及 Critical Rules 测试配置中的规则。 |
JUnit 4 Best Practices | 包括帮助您提高 JUnit 4 单元测试质量的规则。 |
JUnit 5 Best Practices | 包括帮助您提高 JUnit 5 单元测试质量的规则。 |
Security Compliance Pack
此合规性包提供有助于实施安全编码标准和实践的测试配置。有关各项标准如何映射到 Jtest 规则的信息,请参阅 Compliance Pack 规则映射。
Security Compliance Pack 需要激活专用的许可证功能。有关许可的更多详细信息,请联系 Parasoft 支持。
内建测试配置 | 说明 |
---|---|
CWE 4.15 | 包含的规则可检测 4.15 版 CWE 标准中定义的问题。
|
CWE Top 25 2023 | 包含的规则可检测 2023 版 CWE 标准 Top 25 Most Dangerous Programming Errors 分类中的问题。
|
CWE Top 25 2022 | 包含的规则可检测 2022 版 CWE 标准 Top 25 Most Dangerous Programming Errors 分类中的问题。
|
CWE Top 25 + On the Cusp 2023 | 包含的规则可检测 2023 版 CWE 标准 Top 25 Most Dangerous Programming Errors 分类或 CWE Weaknesses On the Cusp 列表中的问题。
|
CWE Top 25 + On the Cusp 2022 | 包含的规则可检测 2022 版 CWE 标准 Top 25 Most Dangerous Programming Errors 分类或 CWE Weaknesses On the Cusp 列表中的问题。
|
DISA-ASD-STIG | 包含的规则可检测国防信息系统局提供的 Application Security and Development STIG(Security Technical Implementation Guides)中定义的问题。另请参阅 DISA-ASD-STIG 已知局限性。 |
HIPAA | 包含的规则可检测 HIPAA(健康保险可携性和责任法案)法规中定义的问题。 |
OWASP API Security Top 10-2023 | 包含的规则可检测 2023 版 OWASP API Security Top 10 标准中定义的问题。
|
OWASP API Security Top 10-2019 | 包含的规则可检测 2019 版 OWASP API Security Top 10 标准中定义的问题。
|
OWASP ASVS 4.0.3 | 包含用于实施 ASVS(应用程序安全性验证标准)中定义的要求的规则。 |
OWASP Top 10-2021 | 包含用于检测 OWASP Top 10 - 2021 中列出的 Web 应用程序安全风险的规则。
|
OWASP Top 10-2017 | 包含用于检测 OWASP Top 10 - 2017 中列出的 Web 应用程序安全风险的规则。
|
PCI DSS 4.0 | 包含的规则可检测 4.0 版 PCI Data Security Standard 中的问题。 |
PCI DSS 3.2 | 包含的规则可检测 3.2 版 PCI Data Security Standard 中的问题。 |
CERT for Java | 检查 CERT 标准中的规则。该标准提供了安全编码指南。 |
CERT for Java Guidelines | 检查 CERT 标准的规则和建议。该标准提供了安全编码指南。 |
UL 2900 | 包含的规则可检测 UL-2900 标准中明确的问题。 |
VVSG 2.0 | 包括实施 Voluntary Voting System Guidelines 2.0 所定义规范和要求的规则。 |
单元测试和覆盖率收集
这一组测试配置可运行单元测试和收集覆盖率数据。
内建测试配置 | 说明 |
---|---|
Calculate Application Coverage | 处理应用程序覆盖率数据以生成 coverage.xml 文件。请参阅应用程序覆盖率。 |
Unit Tests | 在生成的报告文件中包括单元测试执行数据 |
Compliance Pack 规则映射
该部分包含 CWE 标准的规则映射。其他标准的映射信息可在 Compliance Pack 随附的 PDF 规则映射文件中查看。
CWE Top 25 2023 映射
ID | 名称/说明 | Parasoft 规则 ID |
---|---|---|
CWE-787 | 越界写 |
|
CWE-79 | 网页生成时对输入的转义处理不当('跨站脚本') |
|
CWE-89 | 对 SQL 命令中使用的特殊元素转义处理不当('SQL 注入') |
|
CWE-416 | 释放后使用 |
|
CWE-78 | 对 OS 命令中使用的特殊元素转义处理不当('OS 命令注入') |
|
CWE-20 | 输入验证不当 |
|
CWE-125 | 越界读 |
|
CWE-22 | 对受限目录路径名的限制处理不当('路径遍历') |
|
CWE-352 | 跨站请求伪造(CSRF) |
|
CWE-434 | 无限制的危险类型文件上传 |
|
CWE-862 | 授权缺失 |
|
CWE-476 | 空指针解引用 |
|
CWE-287 | 身份验证不当 |
|
CWE-190 | 整数溢出或回绕 |
|
CWE-502 | 不可信数据的反序列化 |
|
CWE-77 | 对命令中使用的特殊元素转移处理不当('命令注入') |
|
CWE-119 | 对内存缓冲区边界内的操作限制处理不当 |
|
CWE-798 | 使用硬编码凭据 |
|
CWE-918 | 服务器端请求伪造(SSRF) |
|
CWE-306 | 关键功能的身份验证缺失 |
|
CWE-362 | 使用共享资源的并发执行未正确同步('竞态条件') |
|
CWE-269 | 权限管理不当 |
|
CWE-94 | 代码生成控制不当('代码注入') |
|
CWE-863 | 授权不正确 |
|
CWE-276 | 默认权限不正确 |
|
CWE Top 25 2022 映射
CWE ID | CWE 名称/说明 | Parasoft 规则 ID |
---|---|---|
CWE-787 | 越界写 |
|
CWE-79 | 网页生成时对输入的转义处理不当('跨站脚本') |
|
CWE-89 | 对 SQL 命令中使用的特殊元素转义处理不当('SQL 注入') |
|
CWE-20 | 输入验证不当 |
|
CWE-125 | 越界读 |
|
CWE-78 | 对 OS 命令中使用的特殊元素转义处理不当('OS 命令注入') |
|
CWE-416 | 释放后使用 |
|
CWE-22 | 对受限目录路径名的限制处理不当('路径遍历') |
|
CWE-352 | 跨站请求伪造(CSRF) |
|
CWE-434 | 无限制的危险类型文件上传 |
|
CWE-476 | 空指针解引用 |
|
CWE-502 | 不可信数据的反序列化 |
|
CWE-190 | 整数溢出或回绕 |
|
CWE-287 | 身份验证不当 |
|
CWE-798 | 使用硬编码凭据 |
|
CWE-862 | 授权缺失 |
|
CWE-77 | 对命令中使用的特殊元素转移处理不当('命令注入') |
|
CWE-306 | 关键功能的身份验证缺失 |
|
CWE-119 | 对内存缓冲区边界内的操作限制处理不当 |
|
CWE-276 | 默认权限不正确 |
|
CWE-918 | 服务器端请求伪造(SSRF) |
|
CWE-362 | 使用共享资源的并发执行未正确同步('竞态条件') |
|
CWE-400 | 不受控制的资源消耗 |
|
CWE-611 | XML 外部实体引用限制处理不当 |
|
CWE-94 | 代码生成控制不当('代码注入') |
|
CWE Weaknesses On the Cusp 2023 映射
ID | 名称/说明 | Parasoft 规则 ID |
---|---|---|
CWE-617 | 可达的断言 |
|
CWE-427 | 对搜索路径元素未加控制 |
|
CWE-611 | XML 外部实体引用限制处理不当 |
|
CWE-770 | 资源分配没有限制或调节机制 |
|
CWE-200 | 向未经授权的参与者披露敏感信息 |
|
CWE-732 | 关键资源的权限分配不正确 |
|
CWE-601 | URL 重定向至不可信站点('开放式重定向') |
|
CWE-1321 | 未正确控制的对象原型属性修改('原型污染') |
|
CWE-295 | 证书验证不当 |
|
CWE-522 | 凭据保护不足 |
|
CWE-401 | 有效生命周期结束后缺少内存释放 |
|
CWE-400 | 不受控制的资源消耗 |
|
CWE-639 | 通过用户控制密钥绕过授权 |
|
CWE-59 | 文件访问前的链接解析不当('链接跟随') |
|
CWE-668 | 将资源暴露到错误范围 |
|
CWE Weaknesses On the Cusp 2022 映射
CWE ID | CWE 名称/说明 | Parasoft 规则 ID |
---|---|---|
CWE-295 | 证书验证不当 |
|
CWE-427 | 对搜索路径元素未加控制 |
|
CWE-863 | 授权不正确 |
|
CWE-269 | 权限管理不当 |
|
CWE-732 | 关键资源的权限分配不正确 |
|
CWE-843 | 使用不兼容类型访问资源('类型混淆') |
|
CWE-668 | 将资源暴露到错误范围 |
|
CWE-200 | 向未经授权的参与者披露敏感信息 |
|
CWE-1321 | 未正确控制的对象原型属性修改('原型污染') |
|
CWE-601 | URL 重定向至不可信站点('开放式重定向') |
|
CWE-401 | 有效生命周期结束后缺少内存释放 |
|
CWE-59 | 文件访问前的链接解析不当('链接跟随') |
|
CWE-522 | 凭据保护不足 |
|
CWE-319 | 敏感信息明文传输 |
|
CWE-312 | 敏感信息明文存储 |
|
CWE 4.15 映射
ID | 名称/说明 | Parasoft 规则 ID |
---|---|---|
CWE-6 | J2EE 配置错误:会话 ID 长度不足 |
|
CWE-7 | J2EE 配置错误:缺少自定义错误页面 |
|
CWE-8 | J2EE 配置错误:Entity Bean 被声明为 Remote |
|
CWE-9 | J2EE 配置错误:EJB 方法的弱访问权限 |
|
CWE-15 | 系统或配置设置的外部控制 |
|
CWE-22 | 对受限目录路径名的限制处理不当('路径遍历') |
|
CWE-61 | UNIX 符号链接跟踪 (Symlink) |
|
CWE-64 | Windows 快捷方式跟随 (.LNK) |
|
CWE-78 | 对 OS 命令中使用的特殊元素转义处理不当('OS 命令注入') |
|
CWE-79 | 网页生成时对输入的转义处理不当('跨站脚本') |
|
CWE-80 | 网页中与脚本相关的 HTML 标签的转义处理不当 (基本 XSS) |
|
CWE-81 | 错误消息网页中脚本的中和不当 |
|
CWE-83 | 在网页属性中对脚本的不恰当中和 |
|
CWE-89 | 对 SQL 命令中使用的特殊元素转义处理不当('SQL 注入') |
|
CWE-90 | LDAP 查询中使用的特殊元素转义处理不当 ('LDAP 注入') |
|
CWE-91 | XML 注入 (又称盲注 XPath 注入) |
|
CWE-94 | 代码生成控制不当('代码注入') |
|
CWE-95 | 动态评估代码中指令转义处理不当 ('Eval 注入') |
|
CWE-99 | 资源标识符控制不当 ('资源注入') |
|
CWE-102 | Struts: 重复验证表单 |
|
CWE-103 | Struts: 不完整的 validate() 方法定义 |
|
CWE-104 | Struts: 表单 Bean 不继承验证类 |
|
CWE-106 | Struts: 未使用的插件框架 |
|
CWE-109 | Struts: 验证器关闭 |
|
CWE-111 | 直接使用不安全的 JNI |
|
CWE-113 | HTTP 标头中 CRLF 序列的不正确中和 ('HTTP 请求/响应拆分') |
|
CWE-114 | 过程控制 |
|
CWE-117 | 不恰当的日志输出中和 |
|
CWE-125 | 越界读 |
|
CWE-128 | 回绕错误 |
|
CWE-129 | 对数组索引的验证不恰当 |
|
CWE-131 | 缓冲区大小计算错误 |
|
CWE-134 | 使用外部控制的格式字符串 |
|
CWE-173 | 候选编码方案处理不当 |
|
CWE-176 | Unicode 编码处理不当 |
|
CWE-185 | 不正确的正则表达式 |
|
CWE-190 | 整数溢出或回绕 |
|
CWE-191 | 整数下溢 (隐藏或环绕) |
|
CWE-193 | 大小差一错误 |
|
CWE-198 | 使用不正确的字节顺序 |
|
CWE-209 | 包含敏感信息的错误消息的生成 |
|
CWE-212 | 在存储或传输之前不正确地删除敏感信息 |
|
CWE-213 | 因政策不兼容而暴露敏感信息 |
|
CWE-215 | 将敏感信息注入调试代码 |
|
CWE-245 | J2EE 不良实践: 直接管理连接 |
|
CWE-246 | J2EE 不良实践: 直接使用套接字 |
|
CWE-250 | 以不必要的特权执行 |
|
CWE-252 | 未检查的返回值 |
|
CWE-256 | 明文存储密码 |
|
CWE-258 | 配置文件中的空密码 |
|
CWE-260 | 配置文件中的密码 |
|
CWE-261 | 密码的弱编码 |
|
CWE-276 | 默认权限不正确 |
|
CWE-279 | 执行分配权限不当 |
|
CWE-290 | 通过欺骗绕过身份验证 |
|
CWE-295 | 证书验证不当 |
|
CWE-297 | 不正确的证书验证与主机不匹配 |
|
CWE-306 | 关键功能的身份验证缺失 |
|
CWE-307 | 对过多的身份验证尝试的限制不当 |
|
CWE-311 | 敏感数据缺少加密 |
|
CWE-312 | 敏感信息明文存储 |
|
CWE-313 | 文件或磁盘上的明文存储 |
|
CWE-315 | 敏感信息的明文传输 |
|
CWE-319 | 敏感信息明文传输 |
|
CWE-321 | 使用硬编码加密密钥 |
|
CWE-325 | 缺少加密步骤 |
|
CWE-327 | 使用破碎或危险的加密算法 |
|
CWE-328 | 弱哈希的使用 |
|
CWE-329 | 在 CBC 加密模式中使用可预测的 IV 向量 |
|
CWE-336 | 伪随机数生成器 (PRNG) 中的相同种子 |
|
CWE-337 | 伪随机数生成器 (PRNG) 中的可预测种子 |
|
CWE-338 | 使用密码弱伪随机数生成器 (PRNG) |
|
CWE-346 | 来源验证错误 |
|
CWE-347 | 密码签名的不正确验证 |
|
CWE-350 | 依靠反向 DNS 解析来执行安全关键操作 |
|
CWE-352 | 跨站请求伪造(CSRF) |
|
CWE-359 | 向未授权的参与者泄露个人隐私信息 |
|
CWE-362 | 使用共享资源的并发执行未正确同步('竞态条件') |
|
CWE-367 | 检查时间与使用时间 (TOCTOU) 竞争条件 |
|
CWE-369 | 除以零 |
|
CWE-375 | 将可变对象返回给不受信任的调用者 |
|
CWE-377 | 不安全的临时文件 |
|
CWE-382 | J2EE 不良实践: 使用 System.exit() |
|
CWE-383 | J2EE 不良实践: 直接使用线程 |
|
CWE-384 | 会话固定 |
|
CWE-390 | 无动作检测错误条件 |
|
CWE-391 | 未检查的错误情况 |
|
CWE-395 | 使用 NullPointerException 异常捕获检测空指针解引用 |
|
CWE-396 | 通用异常捕获声明 |
|
CWE-397 | 通用异常抛出声明 |
|
CWE-400 | 不受控制的资源消耗 |
|
CWE-404 | 不正确的资源关闭或释放 |
|
CWE-413 | 锁定资源不当 |
|
CWE-416 | 释放后使用 |
|
CWE-426 | 不可信的搜索路径 |
|
CWE-427 | 对搜索路径元素未加控制 |
|
CWE-434 | 无限制的危险类型文件上传 |
|
CWE-456 | 变量未经初始化 |
|
CWE-457 | 使用未初始化的变量 |
|
CWE-459 | 不完全清理 |
|
CWE-470 | 使用外部控制输入来选择类或代码 ('不安全反射') |
|
CWE-476 | 空指针解引用 |
|
CWE-477 | 使用过时的功能 |
|
CWE-478 | 多重条件表达式缺少 default 分支 |
|
CWE-481 | 赋值而不是比较 |
|
CWE-483 | 不正确的代码块分界 |
|
CWE-484 | 在 switch 中省略了 break 语句 |
|
CWE-486 | 按名称比较类 |
|
CWE-487 | 依赖于包的级别范围 |
|
CWE-491 | 没有 Final ('Object Hijack') 的公共 cloneable() 方法 |
|
CWE-492 | 内部类包含敏感数据的使用 |
|
CWE-495 | 从 public 修饰的方法返回的私有数组类型字段 |
|
CWE-496 | public 修饰的数据赋值给了 private 修饰的数组类型字段 |
|
CWE-497 | 将敏感系统信息暴露给未经授权的控制域 |
|
CWE-499 | 包含敏感数据的可序列化类 |
|
CWE-500 | public static 修饰的字段未标记为 final 类型 |
|
CWE-501 | 信任边界违规 |
|
CWE-502 | 不可信数据的反序列化 |
|
CWE-506 | 嵌入式恶意代码 |
|
CWE-511 | 逻辑/潜在破坏因素 |
|
CWE-521 | 弱密码需求 |
|
CWE-523 | 不受保护的凭证传输 |
|
CWE-532 | 在日志文件中包含敏感信息 |
|
CWE-543 | 在多线程上下文中使用不带同步的单例模式 |
|
CWE-546 | 可疑注释 |
|
CWE-555 | J2EE 配置错误:配置文件中的纯文本密码 |
|
CWE-561 | 无用代码 |
|
CWE-563 | 无需使用即可给变量赋值 |
|
CWE-568 | finalize()方法没有 super.finalize() |
|
CWE-570 | 表达式始终为 False |
|
CWE-571 | 表达式始终为 True |
|
CWE-572 | 调用线程 run() 而不是 start() |
|
CWE-576 | EJB 不良实践: Java I/O 的使用 |
|
CWE-577 | EJB 不良实践: 套接字的使用 |
|
CWE-578 | EJB 不良实践: 类加载器的使用 |
|
CWE-579 | J2EE 不良实践: 非序列化对象被存储在 session 中 |
|
CWE-580 | clone() 方法没有 super.clone() |
|
CWE-581 | 对象模型违规: 只定义了 Equals 和 Hashcode 中的一个 |
|
CWE-582 | 数组被声明为 public、final 和 static |
|
CWE-583 | finalize() 方法被声明为 public |
|
CWE-584 | finally 块中的 return |
|
CWE-585 | 空的同步块 |
|
CWE-586 | 显式调用 finalize() 方法 |
|
CWE-594 | J2EE 框架: 将不可序列化的对象保存到磁盘 |
|
CWE-595 | 对象引用的比较而不是对象内容 |
|
CWE-600 | Servlet 中未捕获异常 |
|
CWE-601 | URL 重定向至不可信站点('开放式重定向') |
|
CWE-605 | 同一端口的多个绑定 |
|
CWE-607 | public static final 修饰的字段引用可变对象 |
|
CWE-609 | 双重检查锁定 |
|
CWE-611 | XML 外部实体引用限制处理不当 |
|
CWE-613 | 会话有效期不足 |
|
CWE-614 | HTTPS 会话中的 cookie 敏感数据没有 'Secure' 属性 |
|
CWE-617 | 可达的断言 |
|
CWE-643 | XPath 表达式中数据的不正确中和 ('XPath Injection') |
|
CWE-644 | 脚本语法的 HTTP 响应头不正确中和 |
|
CWE-652 | XQuery 表达式中不正确的数据中和 ('XQuery Injection') |
|
CWE-662 | 不正确的同步 |
|
CWE-667 | 加锁不当 |
|
CWE-674 | 不受控制的递归 |
|
CWE-676 | 潜在危险方法的使用 |
|
CWE-680 | 整数溢出到缓冲区溢出 |
|
CWE-681 | 数字类型之间的不正确转换 |
|
CWE-691 | 控制流管理不足 |
|
CWE-704 | 类型转换或强制转换不正确 |
|
CWE-749 | 暴露的危险方法或功能 |
|
CWE-755 | 对特殊情况的不当处理 |
|
CWE-759 | 使用不加 salt 的单向哈希 |
|
CWE-764 | 关键资源的多重锁定 |
|
CWE-770 | 资源分配没有限制或调节机制 |
|
CWE-771 | 缺少对活动分配资源的引用 |
|
CWE-772 | 有效生命周期后缺少资源释放 |
|
CWE-778 | 不足的记录 |
|
CWE-787 | 越界写 |
|
CWE-789 | 内存分配使用过大的值 |
|
CWE-798 | 使用硬编码凭据 |
|
CWE-806 | 使用源缓冲区的大小进行缓冲区访问 |
|
CWE-807 | 依赖安全决策中不受信任的输入 |
|
CWE-829 | 包含来自不受信任控制范围的功能 |
|
CWE-832 | 解锁未锁定的资源 |
|
CWE-833 | 死锁 |
|
CWE-835 | 具有无法到达的退出条件的循环(“无限循环”) |
|
CWE-836 | 使用密码哈希而不是密码进行身份验证 |
|
CWE-838 | 对输出上下文进行不适当的编码 |
|
CWE-841 | 行为工作流的不恰当执行 |
|
CWE-843 | 使用不兼容类型访问资源('类型混淆') |
|
CWE-862 | 授权缺失 |
|
CWE-863 | 授权不正确 |
|
CWE-918 | 服务器端请求伪造(SSRF) |
|
CWE-1004 | 没有 'HttpOnly' 标记的敏感 cookie |
|
CWE-1046 | 使用字符串连接创建不可变文本 |
|
CWE-1051 | 使用硬编码的网络资源配置数据进行初始化 |
|
CWE-1066 | 缺少序列化控件元素 |
|
CWE-1069 | 空异常块 |
|
CWE-1075 | 开关块外部无条件控制流转移 |
|
CWE-1077 | 使用不正确的比较运算符比较浮点值 |
|
CWE-1102 | 依赖于机器相关的数据表示 |
|
CWE-1106 | 符号常量使用不足 |
|
CWE-1115 | 源代码元素没有标准序言 |
|
CWE-1126 | 使用不必要的大范围声明变量 |
|
CWE-1385 | WebSockets 中缺少来源验证 |
|