日本語

CVEの悪用可能性分析

CVE Exploitability Analysisは、Aikido Agentを使用して、リポジトリやコンテナ内のオープンソース依存関係のCVEを評価します。すべてのCVEを同じ緊急度で扱うのではなく、Agentが脆弱なパッケージがコードやコンテナイメージ内でどのように使われているかを読み取り、その検出結果が実際に環境内で悪用可能かどうかを判断したうえで、許可されたトリアージアクションを実行します。

これはクレジットベースの自動化機能です(リポジトリ/コンテナごとに設定可能)。Triage Settingsで一度設定すれば、Aikidoが毎晩、条件に一致するオープンなCVE検出結果に対して分析を実行します。また、オンデマンドで実行をトリガーしたり、履歴ですべての実行を確認したりすることもできます。

ユースケース

  • ✨ 依存関係のノイズを削減:コードやコンテナで悪用できないCVEを自動的に無視、または重大度を引き下げます
  • 🎯 実際のリスクを優先:基本スコアが示すよりも悪用が容易だとAgentが判断した場合、重大度を引き上げます
  • ⚙️ 自動化を制御:自動実行するアクションと承認が必要なアクションを選択できます
  • 🔍 環境に特化した根拠を取得:汎用的なCVEの説明にとどまらず、パッケージの実際の使われ方に基づいた分析を得られます

仕組み

CVE Exploitability Analysisは、リポジトリおよびリンクされたコンテナ内の既存のオープンな依存関係の検出結果をトリアージします。Aikido Agentが各CVEを評価し、重大度の変更、スヌーズ、無視など、許可されたアクションを適用します。

  • リポジトリ:Agentは、脆弱なパッケージがコード内でどのように使われているかを読み取ります。
  • コンテナ:Agentは、Dockerfile、ベースイメージ、ディストリビューションなどのイメージのコンテキストに加え、コンテナの実行状況を使用します。

検出結果が無視されると、Issueの重大度の内訳に CVE determined not exploitable という理由が表示されます。

この機能は、脆弱なコードへの実行パスがない検出結果を除外する到達可能性分析を補完するものです。CVE Exploitability Analysisは、その上にコードとコンテナのコンテキストに基づいたAgentの推論を追加します。

クレジットと利用条件

  • CVEトリアージ1件につき1 Aikido Credit:Agentが分析するCVEごとに、検出結果がリポジトリとコンテナのどちらにあるかに関係なく、Aikido Walletから1クレジットが消費されます。
  • 管理者権限が必要:CVE Exploitability Analysisの設定を表示・変更できるのはワークスペース管理者のみです。

CVE Exploitability Analysisを設定する

  1. 設定を開く

    Settings → Triage に移動し、CVE Exploitability Analysis セクションを見つけて Manage をクリックします。

  2. CVE Exploitability Analysisを有効にする

    Enable CVE Exploitability Analysis をオンにすると、以下のフィールドを編集できます。有効にすると、Aikidoは設定した重大度、リポジトリ、コンテナの範囲に一致するすべてのオープンな検出結果に対して分析を実行します。

  3. 範囲を設定する

    • Minimum Severity:トリアージ対象の検出結果を選択します:Critical only、High and above、Medium and above、または All severities。
    • Repositories:分析を実行するリポジトリを選択します。一度に多くのクレジットを消費せずに機能を試すため、まずは小さな範囲から始めてください。
    • Containers:分析を実行するコンテナを選択します。対象となるのはリポジトリにリンクされたコンテナのみです。

    範囲には少なくとも1つのリポジトリまたはコンテナが必要です。

  4. 許可するアクションを選択する

    Allowed Actions で、各結果を Fully Automated または Human Approval に設定します:

    • Downgrade:環境内でCVEのリスクが低い場合に重大度を引き下げます
    • Upgrade:悪用可能性が基本スコアの示すよりも高い場合に重大度を引き上げます
    • Snooze:指定した日付まで検出結果を一時的に非表示にします
    • Ignore:環境内でCVEが悪用できない場合に、検出結果をフィードから削除します

    Fully Automated の場合、Agentは分析後すぐにアクションを適用します。Human Approval の場合、Agentはアクションを提案し、分析履歴からの承認を待ちます。


  5. 支出上限を設定する

    Spend Limit per Day を設定して、24時間で分析に使用できるクレジット数の上限を指定します(デフォルトは100)。この上限はリポジトリとコンテナのCVEで共有されます。Cost to Inbox Zero の見積もりには、選択したリポジトリとコンテナに一致するCVEの数と、完全な実行で使用されるクレジット数が、利用可能なクレジットとあわせて表示されます。

Agentが変更できる内容

アクション使用される場面表示される内容
DowngradeCVEは実在するが、環境内での悪用可能性が基本の重大度が示すよりも低い場合Agentが提示した理由とともに重大度スコアが低下します
Upgrade環境内でのCVEの悪用可能性が基本の重大度が示すよりも高い場合Agentが提示した理由とともに重大度スコアが上昇します
Snooze検出結果への対応が今ではなく後で必要な場合Agentが設定した日付まで、理由とともに検出結果がスヌーズされます
Ignore環境内でCVEが悪用できない場合CVE determined not exploitable という理由で検出結果が無視されます

重大度の変更は、検出結果の現在の重大度がAgentの分析時のものと一致している場合にのみ適用されます。分析からアクションまでの間に重大度が変わった場合(たとえば別のルールによって)、競合する更新を避けるために変更はスキップされます。

オンデマンドで分析を実行する

分析は毎晩自動的に実行されますが、夜間ジョブを待つ必要はありません。CVE Exploitability Analysis セクション(Settings/Triage)で Start Analysis をクリックすると、範囲に一致するCVEに対する実行がすぐにキューに追加されます。

各実行は、1日の支出上限と利用可能なクレジットに従います。一度に実行されるのは1件のみです。実行中は Start Analysis が無効になり、An analysis is already in progress と表示されます。実行する対象がない場合は、Aikidoがその理由を通知します(たとえば、クレジット不足、1日の支出上限に到達、一致するIssueが見つからないなど)。

分析履歴を確認する

すべての実行が記録されるため、Agentが何を分析し何を行ったかを確認できます。CVE Exploitability Analysisセクションで View History をクリックすると、CVE Exploitability History ページが開きます。

履歴テーブルには、各実行の日付、パッケージまたはコンテナ、リポジトリ、分析されたCVEの数が、実行されたトリアージアクション(ignore、snooze、upgrade、downgrade)とともに一覧表示されます。紫色の pending バッジは、Agentが提案したものの適用されていないアクションを示します。検索とリポジトリのフィルターを使用して一覧を絞り込めます。

任意の実行をクリックすると詳細が開き、以下が表示されます:

  • Agentが作成した実行の概要
  • 分析されたIssueと、各CVEに対して実行されたアクションおよびAgentの推論
  • 実行のタイムライン

提案されたアクションを承認する

アクションが Human Approval に設定されている場合、Agentは推奨内容を記録しますが適用はしません。実行の詳細では、保留中のアクションが Approve Ignore、Approve Snooze、Approve Downgrade、または Approve Upgrade として表示されます。バッジをクリックすると、Agentの推論が事前入力された該当のトリアージフローが開きます。確認すると、履歴でそのアクションが実行済みとしてマークされます。

重要な注意事項

  • 機能が有効なワークスペースでは、分析は毎晩実行され、オンデマンドで開始することもできます。設定に一致する新しい検出結果は、以降の実行で取り込まれます。
  • 1日の支出上限により、1日に分析で使用できるクレジット数が制限されます(デフォルトは100)。この上限はリポジトリとコンテナのCVEで共有されます。上限に達すると実行は停止し、翌日に再開されます。
  • コンテナ分析は、コードリポジトリにリンクされたコンテナでのみ実行されます。
  • パッケージの使われ方を分析するため、Agentには接続されたリポジトリへの読み取りアクセスが必要です。
  • 一度に実行されるのは、リポジトリとパッケージごと、またはコンテナごとに1つの分析タスクのみです。タスクが保留中の間は、重複した実行が防止されます。
  • アクションを Fully Automated から Human Approval に変更しても、Agentがすでに実行したアクションは元に戻りません。