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

Trail of Bits发布30条自定义Semgrep规则,用于检测Ansible剧本、Java/Kotlin代码、Shell脚本和Docker Compose配置文件中的安全漏洞,并深入解析Semgrep的通用模式和YAML支持两大高级特性。

新规则概览

我们发布了30条自定义Semgrep规则,覆盖以下技术栈的安全审计:

  • Ansible剧本
  • Java/Kotlin代码
  • Shell脚本
  • Docker Compose配置文件

这些规则聚焦于以下安全问题:

  • 未加密网络传输(HTTP/FTP等)
  • 禁用SSL证书验证
  • 常见命令行工具的不安全参数
  • 无限制的IP地址绑定
  • Java/Kotlin相关隐患

规则示例

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

Semgrep进阶特性

通用模式(Generic Mode)

  • 优势:支持任意文本搜索,可跨多种文件格式(Jinja模板/NGINX配置等)
  • 局限性:可能产生误报(如匹配注释内容)
  • 典型应用:ssh-disable-host-key-checking规则可同时检测Bash脚本/Dockerfile/CI配置中的SSH安全配置

YAML支持

  • 覆盖场景:Kubernetes/AWS CloudFormation/GitHub Actions/Ansible等主流配置格式
  • 技术实现:通过YAML块样式指示符解析嵌套结构,例如检测Docker Compose中服务绑定所有接口的配置:
1
2
3
4
5
6
patterns:
  - pattern-inside: |
      services:
        ...
  - metavariable-regex:
      regex: '^(?!127.\d{1,3}.\d{1,3}.\d{1,3}:).+'

实践应用

使用以下命令运行这些规则:

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

延伸阅读

我们此前已将Semgrep应用于:

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

如需为您的项目定制Semgrep规则,欢迎联系我们

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计