trailmark-review-gate について
trailmark-review-gateは、コード変更前後のTrailmarkの構造差分を比較するセキュリティレビュー用スキルです。構造上の回帰を見つけて証拠パケットを作成し、グラフ分析と行単位のレビューを区別します。
主な機能
- 01変更前後のグラフ証拠の比較
- 02ノード、エッジ、エントリーポイントの追跡
- 03汚染情報と権限境界の変化の評価
- 04PASS、WARN、FAIL、UNKNOWNの判定
- 05レビュー担当者向け証拠パケットの作成
活用シーン
- 01ブランチやプルリクエストのレビュー
- 02変更による攻撃対象領域の拡大確認
- 03到達可能な経路で削除された検証の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ trailofbits/ skills --skill trailmark-review-gateインストール後、Claude Code で/trailmark-review-gateを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlassets/trail-of-bits-mark.svgreferences/gate-rules.mdoutput-format.mdreview-integration.md詳細
Trailmark レビューゲート
Trailmark の構造差分の証拠に、決定論的なセキュリティゲートルールを適用します。 このスキルは、行単位のレビューに代わるものではありません。コードを確認する際にレビュー担当者が引用できる、簡潔な構造情報パケットを作成します。
使用する場面
- ブランチ、プルリクエスト、リリース差分、または修正コミットをレビューする場合
- 変更によって攻撃対象領域が拡大するか確認する場合
- 到達可能な経路で検証や認可が削除されていないか調べる場合
- taint、権限境界、影響範囲、複雑さのシグナルを変更前後で比較する場合
- 差分レビュー用のグラフ証拠を作成する場合
使用しない場面
- 単一スナップショットの分析。
trailmarkまたはtrailmark-structuralを使用してください。 - テキスト差分のみのレビュー。
differential-reviewを使用してください。 - 脆弱性の完全な検出。監査またはバグ検出のワークフローを使用してください。
- 単一の静的検出結果。
trailmark-finding-triageを使用してください。 - ツールを使用できず、ユーザーが手動レビューのみを求めている場合。
却下すべき合理化
| 合理化 | 誤りである理由 | 必須の対応 |
|---|---|---|
| 「行差分が小さいので、グラフゲートは必要ない」 | 小さな変更でも新しい呼び出し経路が生じることがあります | 変更前後のグラフを比較する |
| 「グラフゲートを通過したので、PR は安全だ」 | ゲートが確認するのは構造上のリグレッションのみです | 引き続き行単位のレビューを行う |
| 「Trailmark に失敗したので、ゲートを通過させる」 | ツールの失敗は不明なリスクであり、成功ではありません | UNKNOWN を出力する |
| 「テストに合格したので、検証を削除しても問題ない」 | テストでは影響を受けるエントリーポイント経路を見逃す可能性があります | 削除された経路を手動でレビューする |
| 「新しいコードだけが重要だ」 | 認可、検証、呼び出し元の削除は、追加よりもリスクが高い場合があります | 削除と経路の変更をレビューする |
ワークフロー
Review Gate Progress:
- [ ] Step 1: Resolve before/after inputs
- [ ] Step 2: Build graph-evolution evidence
- [ ] Step 3: Normalize structural changes
- [ ] Step 4: Apply gate rules
- [ ] Step 5: Emit review packet and actions
ステップ 1:入力を解決する
2 つの参照、ブランチ名、コミット範囲、または変更前後のディレクトリを受け付けます。
不要なブランチのチェックアウトは避けてください。graph-evolution のスナップショットワークフローに従い、git diff、git show、Git worktree を優先してください。
ステップ 2:グラフ証拠を作成する
graph-evolution または同等の Trailmark による変更前後のグラフ分析を実行します。
両方のスナップショットで engine.preanalysis() を実行し、taint、権限境界、影響範囲、複雑さ、エントリーポイントのシグナルを利用できるようにする必要があります。
Trailmark のバージョンと機能プローブを記録してください。グラフの構築に失敗した場合は、UNKNOWN を出力してください。
ステップ 3:変更を正規化する
証拠を以下の項目に正規化します。
- 追加、削除、変更されたノード
- 追加、削除されたエッジ
- エントリーポイント集合の変更
- taint メンバーシップの変更
- 権限境界メンバーシップの変更
- 影響範囲の変更
- 複雑さの変更
- 新たに到達可能になった機密シンク
- 未解決、プロキシ、または動的エッジの変更
ステップ 4:ゲートルールを適用する
references/gate-rules.md のルールを適用します。 ゲートの判定結果は次のとおりです。
| 判定 | 意味 |
|---|---|
FAIL | リスクの高い構造上のリグレッションがあり、承認前にレビューが必要です |
WARN | 意味のあるグラフ変更があり、レビュー担当者の注意が必要です |
PASS | 設定された構造ゲートには該当しませんでした |
UNKNOWN | Trailmark に失敗したか、証拠が不十分です |
ステップ 5:パケットを出力する
references/output-format.md に従ってパケットを作成し、ブランチのレビュー担当者に渡します。
このパケットを differential-review または別の PR レビュープロセスと組み合わせる場合は、references/review-integration.md を使用してください。
要件
- 参照を比較する際に、ユーザーの作業ブランチを変更しないでください。
- Trailmark に失敗した場合、
PASSを報告しないでください。 - グラフの証拠と手動によるセキュリティ判断を分けてください。
- すべての
FAILとWARNについて、変更されたノードまたは経路を正確に示してください。 - パーサー、プロキシ、未解決の呼び出し、または動的ディスパッチに関する不確実性が判定に影響する場合は、制限事項を記載してください。