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

新规则概览

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

模式 规则ID 规则描述
Generic container-privileged 检测具有扩展权限的容器命令
Generic curl-insecure 检测禁用SSL验证的curl命令
Java/Kotlin gc-call 检测依赖垃圾回收器调用的反模式
YAML apt-key-unencrypted-url 检测通过非加密URL下载的apt密钥
YAML port-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查询库
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

posted @ 2025-08-18 23:01  qife  阅读(16)  评论(0)    收藏  举报