规则更新

版本 2.1.0 中的规则更新

注:
  1. 新规则
语言 CWE 描述
Android Java CWE-319 新增覆盖范围:检查在 AndroidManifest.xml 文件中是否将 usesCleartextTrafficcleartextTrafficPermitted 设置为 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 检查 WebViewInAppWebView 是否存在未受限制的 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.outSystem.err 的使用情况(这些是应从生产代码中移除的调试调用)。1
CWE-78 查找 Runtime.getRunTime() 的内联调用。
CWE-757 增强了对不安全和已损坏项的检查列表。
CWE-916 检查 PBEKeySpecPBEParameterSpec 的迭代计数是否过低。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 文件中是否存在 UIFileSharingEnabledLSSupportsOpeningDocumentsInPlace 设置为 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