SuperAPI AI 工具集

semgrep-rule-variant-creator

编程与开发

查看项目

更新于 10-16 02:28

技能介绍

用途:把已有 Semgrep 规则移植到新的目标语言,生成各语言专用变体,并做测试驱动验证。适用场景包括将规则移植到一或多门语言、为通用漏洞模式创建语言变体、扩展多语言代码库的规则覆盖。不适用于从零创建新规则(应使用 semgrep-rule-creator)、运行规则扫描代码、漏洞模式根本不适用该语言、或同一语言内的细微语法差异。

输入:已有 Semgrep 规则(YAML 文件路径或规则内容)、一个或多个目标语言。输出:对每个适用语言生成 <原规则ID>-<语言>/ 目录,内含移植后的 .yaml 规则和带注释的测试文件。

流程:对每种目标语言独立完成完整循环。阶段一适用性分析,判断漏洞类别是否存在、是否有等价构造、语义是否足够接近,结论为 APPLICABLE、APPLICABLE_WITH_ADAPTATION 或 NOT_APPLICABLE。阶段二测试先行,用目标语言习惯写测试,至少 2 个 ruleid 漏洞用例和 2 个 ok 安全用例,并包含语言特有边界情况。阶段三规则创建,先用 semgrep --dump-ast -l <lang> test-file 分析 AST,再翻译模式、更新 language、message、规则 ID。阶段四验证,要求 100% 测试通过,不接受“大部分通过”。

常用命令:semgrep --validate --config rule.yaml 校验 YAML;semgrep --test --config rule.yaml test-file 运行测试;semgrep --dump-ast -l <lang> <file> 查看 AST;semgrep --dataflow-traces -f rule.yaml test-file 调试污点流。

限制:工作流严格,不得跳过适用性分析,每种语言独立完成再进入下一种;必须测试先行。规则创建基础以 semgrep-rule-creator 为准。官方文档(规则语法、模式语法、按语言模式示例、测试规则、Trail of Bits 测试手册)在移植前需阅读。未提供具体价格、平台支持范围或额外安装步骤。