supply-chain-advisory について
supply-chain-advisory は、Python プロジェクトの依存関係におけるサプライチェーン攻撃の検知、防止、対応を支援するスキルです。既知の不正バージョン一覧と、ロックファイルやアーティファクトの確認手順を提供します。
主な機能
- 01既知の不正バージョンの確認
- 02ロックファイルと仮想環境のスキャン
- 03uv.lock のハッシュ整合性確認
- 04バージョン除外の追加手順
- 05不審なアーティファクトの確認
活用シーン
- 01サプライチェーン勧告後の依存関係確認
- 02新規または既存プロジェクトの依存監査
- 03依存関係の侵害が疑われる事案の調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ athola/ claude-night-market --skill supply-chain-advisoryインストール後、Claude Code で/supply-chain-advisoryを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
known-bad-versions.jsonmodules/incident-response.mdscanning-patterns.md詳細
概要
サプライチェーン攻撃は、上流の依存関係を侵害することで、従来のコードレビューを回避します。このスキルでは、Python エコシステムで侵害されたパッケージを検出、防止し、対応するためのパターンを提供します。
使用する場面
- サプライチェーンに関する勧告が公開された後
- 新規または既存のプロジェクトの依存関係を監査するとき
- 侵害が疑われるインシデントに対応するとき
- SessionStart フックをプロジェクトに追加するとき
使用しない場面
- 依存関係のサプライチェーンとは無関係な一般的な CVE トリアージ
- アプリケーションレベルの脆弱性スキャン(SAST ツールを使用してください)
- ライセンスコンプライアンス監査(別の懸念事項です)
既知の悪意あるバージョンのブロックリスト
ブロックリストは ${CLAUDE_SKILL_DIR}/known-bad-versions.json にあります。
次の用途で使用されます。
- SessionStart フック:侵害されたバージョンが検出された場合、セッションごとに警告します
make supply-chain-scan:CI/ローカルスキャンのターゲットです- このスキル:手動監査のガイダンスです
ブロックリストの形式
{
"package_name": [{
"versions": ["x.y.z"],
"date": "YYYY-MM-DD",
"description": "What the attack did",
"indicators": ["files or patterns to search for"],
"source": "advisory URL",
"severity": "critical|high|medium"
}]
}
新しいエントリーの追加
${CLAUDE_SKILL_DIR}/known-bad-versions.jsonにエントリーを追加します- 影響を受ける
pyproject.tomlファイルにバージョン除外(!=x.y.z)を追加します docs/dependency-audit.mdの Supply Chain Incidents に記録しますmake supply-chain-scanを実行して、検出が機能することを確認します
クイックスキャンコマンド
マシン上のすべてのロックファイルで既知の悪意あるバージョンを確認する
# Scan uv.lock files for a specific compromised version
grep -r "package_name.*version" --include="uv.lock" /path/to/projects
# Search for malicious artifacts
find /path/to/projects -name "suspicious_file.pth" 2>/dev/null
# Check installed versions in virtualenvs
find /path/to/projects -path "*/.venv/lib/*/PACKAGE*/METADATA" \
-exec grep "^Version:" {} +
ロックファイルのハッシュ整合性を検証する
uv.lock には、すべてのパッケージの SHA256 ハッシュが含まれています。同じバージョンのままパッケージが異なる内容で再公開された場合、uv sync はハッシュ不一致で失敗します。これは最も強力な自動防御策です。
防御レイヤー
| レイヤー | ツール | 検出対象 |
|---|---|---|
| ロックファイルのハッシュ | uv.lock SHA256 | 改ざんされた再公開バージョン |
| バージョン除外 | pyproject.toml != | 新規解決時の既知の悪意あるバージョン |
| SessionStart フック | sanctum hook | 侵害された依存関係をセッションごとに警告 |
| CI スキャン | OSV、Safety | CVE データベースおよび勧告との照合 |
| アーティファクトスキャン | make supply-chain-scan | 悪意のあるファイル(.pth、スクリプト) |
制限事項
- ゼロデイのサプライチェーン攻撃には事前の勧告がありません。攻撃期間中の自動防御策はロックファイルのハッシュのみです
- Safety/CVE データベースは、実際の侵害の情報反映に遅れがあります
- OSV はより広範囲をカバーしますが、依然として事後対応型です
完了条件
-
${CLAUDE_SKILL_DIR}/known-bad-versions.jsonを対象範囲内のすべてのロックファイルと照合し、一致があればパッケージ名、悪意のあるバージョン、重大度、勧告 URL を報告している - 新しい既知の悪意あるエントリーを追加した場合、影響を受ける
pyproject.tomlにバージョン除外(!=x.y.z)を追加し、エントリーをdocs/dependency-audit.mdに記録し、検出が機能することを確認するためにmake supply-chain-scanを実行している -
uv.lockの SHA256 ハッシュ整合性を検証している。ハッシュ不一致によるuv syncの失敗が、一般的なインストールエラーではなく、明示的なサプライチェーン警告として表示される - セッションを続行する前に、アーティファクトスキャンで仮想環境のパス内にある悪意のあるファイルのパターン(
.pthファイル、予期しないスクリプト)を確認している
コメント
Markdown 対応