关于 triage-dependencies
用于 OpenTaint 的安全技能,检查项目模型中的依赖,并标记可能引入攻击者可控数据的包。它将标记结果写入 coverage.yaml,供后续发现污点源使用。
主要功能
- 01读取模型中的项目依赖
- 02评估库是否可能引入不可信数据源
- 03将标记包写入 coverage.yaml
- 04与已有覆盖标记进行核对
适用场景
- 01识别可能提供请求数据的依赖
- 02为后续污点源发现筛选依赖包
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ seqra/ opentaint --skill triage-dependencies安装后在 Claude Code 中输入/triage-dependencies确认已加载。
详细介绍
技能:依赖项分类
读取项目的依赖库,并标记可能引入污点源的库——也就是不可信数据进入的地方
输入
由调用方提供;未提供时使用默认值。仅当缺少必需输入且没有合理默认值时才询问
project-root(可选)——目标项目的根目录。Opentaint 会将所有分析产物保存在固定的<project-root>/.opentaint/目录下,因此下文中的每个.opentaint/...路径都会相对于该目录解析。默认值:当前目录
工作流
1. 列出依赖项
读取 .opentaint/project/project.yaml——每个语言项目条目下的 dependencies 列表包含模型解析出的所有第三方依赖项。确定每项对应的库。大型项目的大部分依赖项都是传递性基础设施
2. 标记每个库
判断每个库是否可能引入攻击者可控的数据源——即返回不可信数据的方法(HTTP/RPC 请求数据、消息代理负载、反序列化的不可信输入等)。根据库本身的身份进行判断;阅读源码以了解概况和文档
3. 编写标记列表
根据 Tracking 的说明,在 .opentaint/tracking/coverage.yaml 中写入一个扁平列表,列出已标记库的包
如果 .opentaint/tracking/coverage.yaml 已在之前的运行中创建,应进行协调而非覆盖:保留所有已列出的包,并添加模型中新加入且可能引入数据源的依赖项。如果某个已标记包的用法发生变化(新增调用点、版本升级),则无需重新检查——源发现会自动规划任何尚未裁定的已用成员。如果不确定某个包是否应列入,就将其列入:多标记只会多花一次发现流程,漏掉库则会导致其数据源在后续每个阶段都丢失
4. 返回前验证
对照标记结果重新检查完整依赖项列表:确认每个依赖项都已评估,然后重新阅读未标记的依赖项,确保它们确实都不可能引入数据源。漏掉的库会导致其数据源在后续每个阶段都丢失,且本次运行无法补救。将遗漏的包添加到列表中。这只是重新阅读已有内容——简单地使用 grep 或重新阅读即可,无需编写脚本
输出
简短明了地报告完成的工作
产物:
.opentaint/tracking/coverage.yaml— 已标记的包列表
摘要:
- 每个已标记包占一行:列出包及其被标记的原因
Tracking
.opentaint/tracking/coverage.yaml — 需要深入检查污点源的已标记依赖包扁平列表。不要添加注释
packages:
- <dependency-package-a>
- <dependency-package-b>