规则更新
版本 2.2.0 中的规则更新
- 新规则
| 语言 | CWE | 描述 |
|---|---|---|
| CSS | 改进了 CSS 扫描程序的性能,使其在处理超大 HTML 文件时能够避免占用过多时间。 | |
| Delphi,包括 Object Pascal1 | CWE-22 | 不当地将路径名限制为受限目录 |
| CWE-77 | 对命令中使用的特殊元素中和不当 | |
| CWE-78 | 对操作系统命令中使用的特殊元素中和不当 | |
| CWE-79 | 对 Web 页面生成期间的输入的中和不当(跨站点脚本编制) | |
| CWE-89 | 对 SQL 命令中使用的特殊元素中和不当 | |
| CWE-94 | 对代码生成的控制不当(“代码注入”) | |
| CWE-99 | 对资源标识符的控制不当(“资源注入”) | |
| CWE-119 | 对内存缓冲区边界内的操作限制不当 | |
| CWE-120 | 未检查输入大小的缓冲区复制 | |
| CWE-200 | 信息泄露 | |
| CWE-266 | 权限分配不正确 | |
| CWE-295 | 证书验证不当 | |
| CWE-312 | 敏感信息的明文存储 | |
| CWE-327 | 使用损坏或有风险的加密算法 | |
| CWE-328 | 使用弱哈希 | |
| CWE-330 | 使用不够随机的值 | |
| CWE-338 | 使用了加密强度弱的伪随机数生成器 (PRNG) | |
| CWE-345 | 数据真实性验证不足 | |
| CWE-434 | 未限制上载危险类型的文件 | |
| CWE-497 | 将系统数据暴露给未经授权的控制范围 | |
| CWE-502 | 反序列化不受信任的数据。 | |
| CWE-614 | HTTPS 会话中的敏感 Cookie 没有“Secure”属性 | |
| CWE-643 | 对 XPath 表达式中数据的中和不当(“Xpath 注入”) | |
| CWE-760 | 使用带可预测盐的单向哈希 | |
| CWE-780 | 使用不带 OAEP 的 RSA 算法 | |
| CWE-787 | 越界写入 | |
| CWE-798 | 使用硬编码的凭证 | |
| CWE-942 | 包含不受信任域的宽松跨域策略 | |
| CWE-1004 | 无“HttpOnly”标志的敏感 Cookie | |
| CWE-120 | 检查 StrCopy、StrCat、StrPCopy、lstrcpy 和 lstrcat 的不安全用法。1 |
|
| CWE-143 | 检查格式化字符串使用中的不安全格式。1 | |
| CWE-295 | 检查禁用 SSL 证书验证的设置。1 | |
| CWE-33 | 检查 RandSeed 的使用情况。1 | |
| CWE-367 | 检查文件中是否存在 TOCTOU(检查时间\使用时间)竞争条件。1 | |
| CWE-522 | 检查加密密钥是否为空或为 Null。1 | |
| CWE-522 | 检查数据库连接字符串中是否存在硬编码的凭证。1 | |
| CWE-539 | 检查是否存在过长的 Cookie 到期时间。1 | |
| CWE-693 | 检查是否使用了已弃用的 X-XSS-Protection 标头。1 | |
| CWE-693 | 检查是否禁用了安全编译器指令。1 | |
| CWE-703 | 检查是否存在不当的异常重新抛出。1 | |
| CWE-732 | 检查新 Cookie 中是否存在不安全的域名条目。1 | |
| CWE-732 | 检查是否存在不安全的 Cookie 路径条目。1 | |
| HTML | CWE-798 | 添加了针对包含硬编码值的硬编码输入元素类型密码字段的检查。 注: 已添加到源代码扫描程序和混合扫描程序中。 |
| Java | CWE-502 | 添加了针对不安全反序列化的额外检查。1 |
| CWE-532 | 添加了对敏感日志记录缺陷的额外检查。1 | |
| CWE-1004 | 添加了对 Cookie 上缺少 HttpOnly 标志的全新检查。1 | |
| CWE-79 | 检查 SpringBoot 控制器的 HTTP 响应中是否存在未清理的用户输入。1 | |
| CWE-208 | 检查是否存在涉及潜在敏感字符串的计时攻击。1 | |
| CWE-215 | 检查是否存在暴露敏感信息的 SpringBoot 配置。1 | |
| CWE-338 | 增强了用于检测弱随机数生成器的规则检查所查找的 API | |
| CWE-502 | 检查是否存在 XStream 反序列化的不安全使用情况。1 | |
| CWE-611 | 增强了用于同时检查是否存在不安全的 XMLInputFactory 配置的规则。 | |
| CWE-614 | 检查新 Cookie 上缺少的安全标志。1 | |
| CWE-749 | 检查 Spring 应用程序中是否存在不安全的 RequestMapping 注释。1 | |
| CWE-76 | 检查单向哈希算法中是否存在可预测的盐。1 | |
| CWE-922 | 检查是否在 HTTP 会话中存储敏感数据。1 | |
| CWE-1275 | 检查 Cookie 中是否存在安全的 SameSite 设置。1 | |
| CWE-22 | 扩展了 java.nio.file.Path 和 java.io.File API 的覆盖范围 |
|
| CWE-611 | 现已正确处理了 XMLReaderFactory.createXMLReader() 和 sxabuilder.setXMLReaderFactory 样式调用,以实现安全的设置验证。 |
|
| 移除了 Java 计时攻击规则,因为相关底层问题在 Java 中无法被利用,并且该规则对安全代码生成了误报。 | ||
| Javascript | CWE-521 | 增强了对 JavaScript 对象中字面量(如 JSON 对象)的检测能力。 |
| MuleSoft1 | CWE-22 | 不当地将路径名限制为受限目录(“路径遍历”) |
| CWE-78 | 对操作系统命令中使用的特殊元素中和不当(“操作系统命令注入”) | |
| CWE-79 | 对 Web 页面生成期间的输入中和不当(“跨站点脚本编制”) | |
| CWE-89 | 对 SQL 命令中使用的特殊元素中和不当(“SQL 注入”) | |
| CWE-94 | 对代码生成的控制不当(“代码注入”) | |
| CWE-306 | 关键功能缺少认证 | |
| CWE-319 | 敏感信息的明文传输 | |
| CWE-326 | 不充分的加密强度 | |
| CWE-338 | 使用了加密强度弱的伪随机数生成器 (PRNG) | |
| CWE-359 | 向未经授权的参与者公开个人隐私信息 | |
| CWE-497 | 将敏感的系统信息暴露给未经授权的控制范围 | |
| CWE-532 | 将敏感信息插入日志文件 | |
| CWE-611 | XML 外部实体引用的限制不当 | |
| CWE-942 | 包含不受信任域的宽松跨域安全策略 | |
| CWE-1287 | 对指定输入类型的验证不当 | |
| PHP | CWE-79 | 对 Web 页面生成期间的输入中和不当(“跨站点脚本编制”) |
| 密钥 | CWE-798 | 使用硬编码的凭证 |
| 将超时设置为一秒以加快扫描速度。 | ||
添加了 .properties 文件,用于查找硬编码机密。 |
||
| CWE-798 | 优化了检查硬编码凭证时的机密性能。 | |
| CWE-798 | 添加了对 JWT 硬编码凭证的检查。 | |
| CWE-798 | 添加了对通过 Base64.encode 调用传递的硬编码凭证的检查。 |
版本 2.1.0 中的规则更新
注:
- 新规则
| 语言 | CWE | 描述 |
|---|---|---|
| Android Java | CWE-319 | 新增覆盖范围:检查在 AndroidManifest.xml 文件中是否将 usesCleartextTraffic 或 cleartextTrafficPermitted 设置为 true,这是一种不安全的做法。 |
| C# | CWE-89 | 减少 SQLi 检测中的误报。 |
| CWE-215 | 检查日志调用中是否存在包含敏感信息的可疑变量。1 | |
| CWE-397 | 检测常规抛出异常(如 throw new Exception 或 throw new SystemException)的潜在安全隐患。 | |
| CWE-89 | 新增覆盖范围:新增 SQL 注入检测,除原有模式外新增 += 模式及部分存储过程模式。 | |
| CWE-89 | 新增覆盖范围:强化检测约束条件,确保仅在查询语句中触发以减少干扰。 | |
| CWE-1004 | 误报减少:检测 http=true 设置,若存在则避免生成问题。 | |
| CSS | CWE-79 | 减少对 .css 文件进行硬编码变量检查时的误报。 |
| Dart | CWE-943 | 查找 NoSQL 注入。1 |
| CWE-338 | 查找弱伪随机数。1 | |
| CWE-116 | 查找 File.writeAs 风格调用。1 | |
| CWE-79 | 审查 Response.ok 及类似调用的潜在不安全用法。1 | |
| CWE-348 | 查找潜在的不安全目录列表。1 | |
| CWE-78 | 检查 Process.ru 的不安全用法。1 | |
| CWE-89 | 覆盖 SQL 注入风险的 query/execute/prepare 风格调用。1 | |
| Dart:Flutter(新增框架支持,新增覆盖项) | CWE-35 | 检查 MethodChannel 是否使用可能受用户操控的路径参数。 |
| CWE-78 | 检测 MethodChannel 调用中潜在的操作系统注入风险。 |
|
| CWE-80 | 检查 WebView 或 InAppWebView 是否存在未受限制的 JavaScript 执行,此为危险做法。 |
|
| CWE-89 | 支持 Flutter 专属的 sqflite 数据库 API | |
| CWE-117 | 发现未被调试控制包裹的 print 及类似语句。此类调用通常不应出现在调试分支外的生产代码中。 | |
| CWE-312 | 规则检查 FlutterSecureStorage 是否存储疑似私密信息,如密码或其他会话数据。 |
|
| CWE-598 | 检查导航器对象中查询参数的潜在不安全用法。 | |
| CWE-918 | 在 MethodChannel.invokeMethod 中查找用户可控 URL 作为 SSRF 攻击载体。 |
|
| Go | CWE-79 | 减少 fprintf 检查中产生的误报。 |
| IaC Docker | CWE-22 | 检查在 DockerFile 中添加的敏感路径。1 |
| IaC Kubernetes | CWE-209 | 已添加一项检查,用于查找遗留在 .yaml 配置文件中的堆栈跟踪代码。1 |
| Java | CWE-209 | 检查代码中 System.out 和 System.err 的使用情况(这些是应从生产代码中移除的调试调用)。1 |
| CWE-78 | 查找 Runtime.getRunTime() 的内联调用。 |
|
| CWE-757 | 增强了对不安全和已损坏项的检查列表。 | |
| CWE-916 | 检查 PBEKeySpec 和 PBEParameterSpec 的迭代计数是否过低。1 |
|
| CWE-1188 | 针对使用大值或用户可控值的 StringBuilder 构造函数进行拒绝服务检查。1 |
|
| CWE-215 | 检查日志调用中是否存在包含敏感信息的可疑变量。1 | |
| CWE-397 | 查找常规且潜在危险的抛出异常模式,如 throws Exception 或 throws Throwable。 | |
| CWE-396 | 查找常规 catch 块,如 catch(Exception e) 或 catch (Throwable t)。1 | |
| JavaScript | CWE-397 | 查找常规且潜在危险的抛出语句,如 throw "message"。 |
| CWE-80 | 修复了使用 @if 模式但非 Handlebars 模板的缺陷。 | |
| JavaScript:Angular | CWE-80 | 误报减少:检查确保不在 @if 模板中 |
| NodeJS | CWE-78 | 新增对危险 child_process.exec 调用的检测。 |
| Perl | CWE-732 | 为 IO::File::open 调用提供更完整的覆盖。 |
| CWE-89 | 减少 SQL 注入规则中的干扰,此类规则曾错误地针对参数化语句产生问题。 | |
| CWE-732 | 减少使用 STDIN 作为输入的开放调用噪声。 | |
| CWE-397 | 查找常规且潜在不安全的通用抛出异常,例如 throw Error("foo")。 | |
| PHP | CWE-89 | 已为 sqlite_escape_string 添加验证器检查。 |
| CWE-213 | 新增对 PHP 代码中残留 phpInfo 调用的检查。1 | |
| CWE-89 | 新增检查以通过 sqlite_escape_string 验证并排除问题。 |
|
| Python | CWE-397 | 查找常规且潜在不安全的通用抛出异常,例如 raise BaseException。 |
| 密钥 | CWE-798 | 新增针对硬编码机密的 privateKey 检测。 |
| CWE-798 | 新增覆盖范围:新增对 Tuleap 的支持。 | |
| CWE-798 | 新增覆盖范围:检查 equalsIgnoreCase 调用内部是否存在硬编码密码。 |
|
| CWE-798 | 误报减少:避免为机密扫描程序针对 C/C++ 注释代码添加问题。 | |
| CWE-798 | 一些无关模式被移除,不再作为结果。 | |
| CWE-798 | 在 web.config 文件中查找硬编码凭证。 |
|
| CWE-1051 | 对硬编码 IP 地址的检查已进行调整,可避免将貌似 IP 地址的非 IP 字符串误报。 | |
| CWE-1051 | 误报减少:硬编码 IP 地址检查可避免将疑似版本号的字符串误报 | |
| CWE-798 | 减少 Atlassian 机密检测中的误报。 | |
| CWE-798 | 减少机密信息中密钥/值对的误报。 | |
| CWE-798 | 新增检测范围,可查找字符串中包含“1234”作为其一部分的硬编码密码。 | |
| Swift | CWE-1188 | 新增覆盖范围:检查 info.plist 文件中是否存在 UIFileSharingEnabled 或 LSSupportsOpeningDocumentsInPlace 设置为 true 的不安全配置。 |
| TypeScript | CWE-94 | 新增检查:eval 表达式是否包含潜在用户可控变量。 |
此外,CWE-319 规则整体进行了更新。我们删除了用于查找代码中不安全 http 样式字符串的规则,因为其产生的误报过多。在混合扫描程序中,我们仍会针对合理场景(如 JavaScript 中的 fetch 调用)检测开放通信的具体实例。
本次 CWE-319 变更影响以下语言:
- ASP
- Golang
- Groovy
- Kotlin
- Objective-C
- PHP
- Scala
- Swift
- C#
- Dart
- RPG
- VB
- Xamarin