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

Skill · 已公开版本

codeql · 用数据流追踪检查代码漏洞

构建 CodeQL 数据库,选择查询与模式,分析跨过程污点传播。

先看看示例

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

输入

日志显示数据库构建完成;编译过程使用缓存;扫描输出0项。

输出

编辑示例 · 未运行
暂不宣布安全通过。

  1. 检查数据库实际包含的源文件与提取诊断。
  2. 确认缓存构建是否跳过需要提取的编译。
  3. 核对明确查询套件及成功执行数量。
  4. 检查项目自定义请求包装器和数据库调用是否需要数据扩展模型。

方法说明

构建 CodeQL 数据库,选择查询与模式,分析跨过程污点传播。

具体任务

构建有效的代码分析数据库:确认语言与构建方式,避免缓存构建导致空提取。

分析数据流路径:选择明确查询套件,并补项目专属输入源或敏感操作模型。

复核数据库与查询覆盖:结合数据库诊断、查询日志和SARIF核对实际提取范围、运行套件及模型缺口。

必需材料

获准审查的仓库版本、语言与构建方法

本次扫描模式、明确查询套件和数据扩展模型

CodeQL数据库诊断、提取及查询运行日志、SARIF输出(缺失项明确填写)

可选材料

已有数据库路径与生成环境

check_db_quality.py和verify_query_suite.py的执行记录

使用门槛

复核既有扫描流程需要数据库诊断、日志、SARIF与对应代码版本;若只解析现成SARIF,应转用上游sarif-parsing入口。新扫描还需CodeQL和语言构建环境。

这个 Skill 额外提供的方法

不仅查规则命中,还检查代码有没有被真正纳入分析以及自定义封装是否被识别。

编辑示例(未运行)

扫描零发现时先看提取质量

任务:为一次虚构CodeQL结果写复核清单

输入:
日志显示数据库构建完成;编译过程使用缓存;扫描输出0项。

结果片段:
暂不宣布安全通过。
1. 检查数据库实际包含的源文件与提取诊断。
2. 确认缓存构建是否跳过需要提取的编译。
3. 核对明确查询套件及成功执行数量。
4. 检查项目自定义请求包装器和数据库调用是否需要数据扩展模型。

以下为官方编辑构造的示例,未运行上游 Skill。示例展示零发现的核验逻辑,不是实际扫描报告。

首次任务

任务:复核我提供的CodeQL数据库质量、查询覆盖和发现,结合数据库诊断、运行日志及SARIF列出证据与缺口。
任务重点:确认语言与构建方式,避免缓存构建导致空提取。

必需材料:
- 获准审查的仓库版本、语言与构建方法:[填写或粘贴我的材料;未具备则说明]
- 本次扫描模式、明确查询套件和数据扩展模型:[填写或粘贴我的材料;未具备则说明]
- CodeQL数据库诊断、提取及查询运行日志、SARIF输出(缺失项明确填写):[填写或粘贴我的材料;未具备则说明]

可选补充:
- 已有数据库路径与生成环境:[可填写,未提供不应假定存在]
- check_db_quality.py和verify_query_suite.py的执行记录:[可填写,未提供不应假定存在]

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

使用前提:复核既有扫描流程需要数据库诊断、日志、SARIF与对应代码版本;若只解析现成SARIF,应转用上游sarif-parsing入口。新扫描还需CodeQL和语言构建环境。
处理边界:数据库构建成功不代表代码提取完整;日志或SARIF缺失时必须列明无法核验范围,不能把零发现当作无漏洞。;仅解析现成SARIF不是本入口的完整扫描流程;重新构建、执行查询及补模型需按固定源流程与实际许可、资源范围进行。

验收要求:
1. 数据库提取范围与目标代码版本一致,数据库质量检查有实际记录。
2. 明确查询套件、验证记录和每项执行状态可追溯。
3. SARIF传播路径与建模假设结合代码复核,缺少证据的结论保留未确认。

验收方法

数据库提取范围与目标代码版本一致,数据库质量检查有实际记录

明确查询套件、验证记录和每项执行状态可追溯

SARIF传播路径与建模假设结合代码复核,缺少证据的结论保留未确认

依赖与准备

CodeQL、jq、uv及语言构建环境;配套references/workflows,工具许可和算力按场景确认。

使用边界

数据库构建成功不代表代码提取完整;日志或SARIF缺失时必须列明无法核验范围,不能把零发现当作无漏洞。

仅解析现成SARIF不是本入口的完整扫描流程;重新构建、执行查询及补模型需按固定源流程与实际许可、资源范围进行。

排错

构建成功但代码量异常少:检查缓存与实际编译命令,重新建立有效提取。

自定义API没有命中:评估source/sink模型缺口并验证扩展影响。

固定来源

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