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智能小助手)
公众号二维码