triage-dependencies について
OpenTaint向けのセキュリティスキルです。プロジェクトモデルの依存ライブラリを調べ、攻撃者が制御するデータを導入し得るパッケージを記録します。結果は後続のソース探索に使われます。
主な機能
- 01モデル化された依存関係の確認
- 02信頼できないデータソースの可能性を評価
- 03coverage.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 にフラットリストとして記述します。
以前の実行で coverage.yaml がすでに存在する場合は、上書きせずに内容を調整します。記載済みのパッケージはすべて保持し、モデルに新たに追加された依存関係のうち、ソースを持ち込む可能性のあるものを追加します。フラグ付きパッケージの使用状況に変化があった場合(呼び出し箇所の追加やバージョンアップなど)でも、再度開く必要はありません。ソース検出時に、まだ判定されていない使用中のメンバーが自動的に計画されます。パッケージを含めるべきか迷った場合は、リストに含めてください。フラグの付けすぎによるコストは検出を1回行うだけですが、ライブラリを見落とすと、以降のすべてのステージでそのソースが失われます。
4. 返答前に確認する
依存関係の全リストと付けたフラグを再確認します。すべての依存関係を判定したことを確かめたうえで、フラグを付けなかったものを読み直し、実際にはソースを持ち込む可能性があるものがないか確認します。ここから漏れたライブラリは、以降のすべてのステージでそのソースが失われ、実行を通じて復旧できません。見落としたパッケージがあれば、リストに追加します。これはすでに確認した内容の再確認なので、簡単な grep や再読で十分です。スクリプトを使う必要はありません。
出力
実施内容を簡潔に報告します。
成果物:
.opentaint/tracking/coverage.yaml— フラグを付けたパッケージのリスト
概要:
- フラグを付けたパッケージごとに1行:パッケージ名と、フラグを付けた理由
Tracking
.opentaint/tracking/coverage.yaml — 汚染源を調査するためにフラグを付けた依存パッケージのフラットリストです。コメントは入れないでください。
packages:
- <dependency-package-a>
- <dependency-package-b>