30条新Semgrep规则发布:涵盖Ansible、Java、Kotlin和Shell脚本等场景

112 阅读1分钟

新规则概览

我们发布了30条针对Ansible剧本、Java/Kotlin代码、Shell脚本和Docker Compose配置文件的Semgrep规则。这些规则可用于审计以下常见安全问题:

模式规则ID规则描述
Genericcontainer-privileged检测具有扩展权限的容器命令
Genericcurl-insecure检测禁用SSL验证的curl命令
Java/Kotlingc-call检测依赖垃圾回收器调用的反模式
YAMLapt-key-unencrypted-url检测通过非加密URL下载的apt密钥
YAMLport-all-interfaces检测服务端口暴露在所有网络接口的情况

完整规则列表涵盖未加密网络传输、SSL验证禁用、命令行工具不安全标志等问题。

Semgrep进阶功能解析

通用模式(Generic Mode)

  • 优势:支持任意文本搜索,适用于非常规格式(如Jinja模板、NGINX配置)
  • 局限:可能产生误报(如匹配注释内容),缺乏语义理解
  • 案例ssh-disable-host-key-checking规则可跨Bash脚本、Dockerfile和CI配置检测SSH主机密钥验证禁用

YAML支持

  • 应用场景:覆盖Kubernetes、GitHub Actions、Ansible等主流YAML格式配置
  • 规则示例port-all-interfaces规则通过正则表达式检测非回环地址绑定:
    metavariable-regex:
      metavariable: $PORT
      regex: '^(?!127.\d{1,3}.\d{1,3}.\d{1,3}:).+'
    

使用方式

执行审计命令:

semgrep scan --config p/trailofbits /path/to/code

延伸应用

我们曾将Semgrep应用于:

  • 机器学习管道安全审计
  • Goroutine泄漏检测
  • Apollo GraphQL服务器加固

提示:如需定制规则,可联系Trail of Bits团队。所有规则已加入公开的CodeQL查询库