依存関係セキュリティ:制御仕様
サードパーティ依存関係のアドバイザリは、所有者の承認、補償的制御、およびCI強制を伴う期限付きのアップグレードまたは例外記録を推進し、既知の重大なCVEが静かに出荷されることを防ぎ、正当な例外は監査可能かつ期限切れとなるようにします。
パッケージステータス: AI支援の参照パッケージ。静的パッケージ検証は合格していますが、実装シナリオは未実行であり、安定採用前に人間のドメインレビューが必要です。
決定
プロファイルスキャナからの依存関係アドバイザリは、重大度閾値に基づくマージブロックチェックにフィードされます。例外は正確なlockfile_path、sbom_component_id、およびcomponent_digestに紐づけられ、CIは免除がスキャンされた検出結果をカバーし、異なるインストールパスやバージョンをカバーしていないことを検証できます。例外には所有者の承認、補償的制御の説明、および厳格な期限切れが必要です。
範囲
- アドバイザリの取り込み、重大度閾値、アップグレードSLA、例外記録、CIバインディング検証、SBOMまたはlockfileの相関。
このブロックの対象外
- リポジトリプロファイルの明示的な範囲外の場合、プラットフォームチームが所有するコンテナベースイメージのパッチ適用。
- セキュリティアドバイザリに関連しないライセンスコンプライアンススキャン。
- ランタイム侵入検知およびWAFルール調整。
契約
- 公開されたエクスプロイトシグナルを持つ重大度クリティカルのアドバイザリは、critical_sla_hours内のリリースビルドをブロックします。ただし、有効かつ期限切れでない例外が正確なcve_id、lockfile_path、sbom_component_id、およびcomponent_digestをカバーしている場合は除きます。
- 例外記録にはすべてのexception_bind_fieldsを含める必要があり、フィールドが欠けている場合はレジストリコミットが拒否されます。
- ci_verifies_exception_bindingは、すべてのリリースビルドでスキャナ出力と例外バインディングフィールドを比較します。
- 期限切れの例外は、期限切れ前に新しい承認記録が置き換えられない限り、猶予なしに即座にCI失敗となります。
- アップグレードマージは対象パッケージのアドバイザリ数を減少させる必要があり、マージ後の再スキャンでCVEが適用されなくなったか、明示的に例外扱いであることを証明します。
- 推移的な脆弱性は、lockfileパスエントリに紐づく例外で免除されない限り、同じSLAを継承します。
- スキャナの誤検知は、抑制前にベンダーアドバイザリIDまたはNVD参照を異議記録に含める必要があります。
- リポジトリごとの例外数にはプロファイル上限があり、上限を超えるとポリシーレビューゲートが失敗します。
実装ガイダンス
- CIログにスキャナバージョンとアドバイザリデータベースの最新日時を固定表示します。
- exception-record.yamlのエントリをセキュリティ所有者がレビューする専用レジストリディレクトリに保存します。
- OWASP Dependency-Checkまたは同等のエコシステム向け主要ツールを統合し、プロファイルにスキャナ選択を文書化します。
- owner_notification_half_lifeがtrueの場合、例外期限の半分の期間で所有者に通知します。
障害処理と安全策
- release_branch_blockingがtrueの場合、スキャナ障害はリリースブランチでクローズドフェイルします。develop_branch_warn_onlyにより開発ブランチは警告のみとなる場合があります。
- 緊急のブレークグラス例外は二次承認者を必要とし、プロファイルで短縮指定がない限り7日以内に自動期限切れとなります。
- 依存関係をアップグレードせずに削除する場合でも、lockfileエントリに紐づくアドバイザリ検出結果はクリアする必要があります。
検証と運用
- CIフィクスチャには既知のCVE座標と不一致のsbom_component_idを含み、ブロックおよびバインディング強制パスを証明します。
- メトリクスは例外の経過時間、SLA違反、平均修復時間を追跡します。
- 月次監査では例外の補償的制御の妥当性をサンプル検査し、法的認証は行いません。
採用前提
- example.yamlおよびexception-record.yamlの名前や数値は採用プロファイルであり、普遍的なデフォルトではありません。
- 採用チームがスキャナツール、重大度マッピング、所有者名簿を選択します。