用途:指导编写可检测安全漏洞、缺陷模式与代码模式的 Semgrep 规则,并完成测试与验证。
主要能力:优先使用 taint 模式处理不可信输入流向危险 sink 的数据流漏洞(如注入类),也支持简单语法模式匹配;要求采用“先写测试、再写规则”的流程,并迭代到全部测试通过后再优化。
使用方式:目录须以 rule-id 命名,恰好包含两个文件:<rule-id>.yaml(单个 YAML 只含一条规则)与 <rule-id>.<ext>(测试文件,用 # ruleid: 与 # ok: 标注)。示例规则使用 taint 模式,pattern-sources 为 request.args.get(...),pattern-sinks 为 eval(...)。从规则目录运行测试:semgrep --test --config <rule-id>.yaml <rule-id>.<ext>;编写前需用 WebFetch 阅读官方文档(规则语法、模式语法、Testing Handbook、常量传播、Writing Rules Index)。步骤:分析问题→先写测试→分析 AST→写规则→迭代至全部通过→优化→最终运行;要求 100% 测试通过。
适用场景:为特定缺陷模式、代码库安全漏洞、强制编码规范编写规则。
限制:不适用于运行已有规则集,或不需要自定义规则的通用静态分析;禁止使用 todoruleid/todook 注解,避免过于宽泛(如 $FUNC(...))或过于具体的模式,针对特定语言时避免 languages: generic。具体收费、平台与效果资料暂未提供。