用途:Opengrep 是 Semgrep CE(社区版)的开源分支,在 2025 年初由 JIT、Aikido Security、Endor Labs 等组成的联盟发起,原因是 Semgrep 的许可变更限制了社区贡献规则在商业产品中的使用。它用于基于规则的静态应用安全测试(SAST),适合快速安全扫描、基于模式的漏洞检测、在无许可顾虑下使用社区规则、需开源 SAST 的商业产品集成,以及文件内的数据流与污点分析,可作为深入工具之前的首轮安全分析。
主要能力:与 Semgrep CE 兼容,沿用相同的 YAML 规则语法、模式语言和命令行接口,可直接使用 Semgrep 规则;规则完全开源、无使用限制,社区驱动治理;支持多语言扫描,涵盖 Web、后端、系统、移动、脚本、基础设施配置等多种语言;支持数据流追踪与文件内污点分析、实验性功能;输出支持文本、SARIF、JSON、JUnit XML、GitLab SAST、Vim quickfix、Emacs 等格式,便于接入 CI/CD。
使用方式:可经 Homebrew(brew install opengrep)、pip(pip install opengrep)、pipx(pipx install opengrep,资料标注为推荐)、Docker(docker pull ghcr.io/opengrep/opengrep:latest)或源码安装,安装后可用 opengrep --version 验证。基本扫描为 opengrep scan .,可加 -f 指定规则集(如 p/security-audit、p/owasp-top-ten、p/cwe-top-25、p/python、p/javascript 等),可组合多个规则集,用 --sarif -o 输出 SARIF;支持 --dataflow-traces、--taint-intrafile、--experimental 等高级选项;可用本地规则文件或目录(-f /path/to/rules)、--exclude-rule 排除规则、--severity 过滤严重级别、--include/--exclude 限制范围、--timeout 设置单文件超时。项目可通过 .opengrepignore 与 .opengrep.yml 配置,支持自定义规则(pattern、patterns、pattern-either、pattern-not、pattern-inside、pattern-regex、metavariable-regex 等操作符)与 taint 模式(pattern-sources、pattern-sinks、pattern-sanitizers)。误报可用行内 # nosemgrep: rule-id 或配置中的 exclude-rules、exclude-paths 抑制。
适用场景与限制:文件内污点分析仅限单文件,跨文件数据流需求应改用 CodeQL;无法分析无源码的二进制或编译产物;不做深度语义与运行时漏洞检测;不用于密钥扫描(应用 Gitleaks)或依赖扫描(应用 OSV-Scanner、Depscan);基于模式,难以理解复杂程序语义;全功能开启时大型代码库可能较慢;实验性功能可能不完整或有缺陷。具体收费、价格与商业支持信息暂未提供。