跳到主要内容
哒哒星球DADA PLANET

Skill · 已公开版本

semgrep · 把安全规则扫描整理成 SARIF

识别语言和规则集,经确认后运行 Semgrep 并合并扫描输出。

先看看示例

作者提供的示例,实际效果取决于你的输入和使用工具。

输入

示例命中:server.py第42行使用输入值拼接SQL;规则执行完成,尚未人工追踪输入来源。

输出

编辑示例 · 未运行
待复核:server.py:42可能存在SQL注入路径。

观察:查询字符串包含外部变量拼接。

下一步:追踪变量是否来自不可信输入,确认执行API是否参数化。

修复方向:若输入可控,使用参数绑定并加入回归用例。

状态:扫描命中,尚未确认可利用性。

方法说明

识别语言和规则集,经确认后运行 Semgrep 并合并扫描输出。

具体任务

规划规则扫描:识别语言、扫描范围与规则集,按上游流程审阅计划。

整理扫描发现:保留各规则执行状态,将结果汇总到SARIF供复核。

复核已有扫描覆盖:结合scans.json、原始发现及日志检查成功、失败和跳过规则,并回到对应代码确认发现。

必需材料

获准审查的代码版本、语言与文件范围

本次扫描模式、引擎和规则集清单

Semgrep输出SARIF或原始JSON、scans.json与完整运行日志(缺失项明确填写)

可选材料

已有人工作出的发现处置记录

忽略项、排除路径与Pro可用性说明

使用门槛

首次复核需要已有扫描产物和对应代码版本;仅凭扫描摘要不能确认全部规则完成。新扫描另需兼容Semgrep CLI并按固定源审阅扫描计划。

这个 Skill 额外提供的方法

将“跑过扫描”拆成哪些规则真的完成、哪些报错、哪些发现值得处理。

编辑示例(未运行)

如何描述一条未经复核的扫描命中

任务:把虚构扫描命中整理为审查记录

输入:
示例命中:server.py第42行使用输入值拼接SQL;规则执行完成,尚未人工追踪输入来源。

结果片段:
待复核:server.py:42可能存在SQL注入路径。

观察:查询字符串包含外部变量拼接。

下一步:追踪变量是否来自不可信输入,确认执行API是否参数化。

修复方向:若输入可控,使用参数绑定并加入回归用例。

状态:扫描命中,尚未确认可利用性。

以下为官方编辑构造的示例,未运行上游 Skill。记录是编辑小样,未运行任何安全扫描,也不将规则命中直接标为漏洞。

首次任务

任务:复核我提供的Semgrep扫描流程、覆盖状态与发现,结合日志、scans.json和SARIF判断哪些结论有证据支持。
任务重点:识别语言、扫描范围与规则集,按上游流程审阅计划。

必需材料:
- 获准审查的代码版本、语言与文件范围:[填写或粘贴我的材料;未具备则说明]
- 本次扫描模式、引擎和规则集清单:[填写或粘贴我的材料;未具备则说明]
- Semgrep输出SARIF或原始JSON、scans.json与完整运行日志(缺失项明确填写):[填写或粘贴我的材料;未具备则说明]

可选补充:
- 已有人工作出的发现处置记录:[可填写,未提供不应假定存在]
- 忽略项、排除路径与Pro可用性说明:[可填写,未提供不应假定存在]

请交付有材料依据的分析报告,列出发现、证据、建议与未覆盖范围。仅依据这些材料处理;缺少决定结果的信息时先说明缺口,不补造事实。未执行的检查、修改或外部操作明确标为未执行。

使用前提:首次复核需要已有扫描产物和对应代码版本;仅凭扫描摘要不能确认全部规则完成。新扫描另需兼容Semgrep CLI并按固定源审阅扫描计划。
处理边界:复核既有结果不自动启动新扫描;若需新扫描,固定入口要求先明确目标、规则集、引擎与模式并取得计划批准。;新扫描须关闭遥测并记录失败、跳过或降级的规则;静态命中仍需结合代码复核,不直接等同于已确认漏洞。

验收要求:
1. 规则清单与scans.json、完整日志对应,成功失败和跳过状态分别记录。
2. 每条待处理发现包含SARIF或原始输出位置、代码版本与复核依据。
3. 失败、降级、排除范围及无法核验的产物缺口明确列出。

验收方法

规则清单与scans.json、完整日志对应,成功失败和跳过状态分别记录

每条待处理发现包含SARIF或原始输出位置、代码版本与复核依据

失败、降级、排除范围及无法核验的产物缺口明确列出

依赖与准备

Semgrep CLI、完整扫描脚本和规则集;跨文件能力可能需要Pro订阅与授权,按源流程关闭遥测。

使用边界

复核既有结果不自动启动新扫描;若需新扫描,固定入口要求先明确目标、规则集、引擎与模式并取得计划批准。

新扫描须关闭遥测并记录失败、跳过或降级的规则;静态命中仍需结合代码复核,不直接等同于已确认漏洞。

排错

结果为空:先确认规则是否成功运行以及排除范围。

Pro能力不可用:记录降级原因和实际覆盖,不能声称跨文件分析完成。

固定来源

https://github.com/trailofbits/skills/blob/0cc1c73a5e96749ab32d7ea5e14892fafa6972ae/plugins/static-analysis/skills/semgrep/SKILL.md