For the complete documentation index, see llms.txt. This page is also available as Markdown.

AutoTriage と AutoFix で依存関係の問題を修正する

このチュートリアルでは、Aikido を設定してコードベース内の脆弱な依存関係をスキャンし、誤検知を自動的にトリアージし、依存関係ファイルにワンクリック修正を適用する方法を説明します。

前提条件

必要なもの:

サンプルリポジトリを Aikido に接続

このチュートリアルでは、次の公開リポジトリを使用します: Damn Vulnerable Python Web App、人気のある Damn Vulnerable Web Application の派生版で、セキュリティツールのデモに使われます。

まず、 fork して DVPWA リポジトリをあなたの GitHub 名前空間に置いて、作業用の個人コピーを用意します。その後、Aikido のワークスペースにログインし、 リポジトリ > リポジトリを管理。次をクリックします: リポジトリを追加に移動します。求められた場合は GitHub にリポジトリの選択権限を付与し、fork した DVPWA のリポジトリを選択してください。

Aikido にリダイレクトされ、スキャンするリポジトリを尋ねられた場合は、DVPWA のリポジトリを選択してください。次に、 次へ、詳細をクリックします。するとワークスペースのフィードに移動します。

初期の検出結果と誤検知を分析する

フィードには、リポジトリに対するスキャン結果の概要が表示されます。デフォルトのフィルターが Aikido refined された検出結果であることに注目してください。フィルター選択にカーソルを合わせると、Aikido が誤検知をどのように減らしたかを示すファネルチャートが表示されます。このデモアプリには意図的に非常に悪用しやすい脆弱性が含まれているため、トリアージ後もその多くが残ります。ただし、Aikido は通常のコードベースでは誤検知ノイズを 90% 以上削減することがよくあります。

右上で、 1件 自動で無視と表示されたタイルを選択します。すると 無視済み セクションに移動します。

問題名(pyyaml)、種類(Python パッケージ)、重大度(Critical)、および無視する理由に注目してください。これは古くなったパッケージに対する重大な脆弱性ですが、Aikido は、その関数が(宣言されている以外に)コードベース内のどこでも使われていないと示しています。

問題をクリックして、詳細を表示するドロワーを開きます。パッケージの宣言バージョン 3.13 には、サブイシューとしてマークされた 2 つの重大な CVE が影響しています。

公式の修正は 5.4 へのアップグレードですが、Aikido はこの問題を安全に無視できるとマークしています。サブイシューの下にある 影響を受ける関数は使用されていない というダウングレードメッセージをクリックしてください。これにより、Aikido が 到達可能性分析 を行い、そのパッケージがコード内のどこでも使われていないと判断したことが確認できます。

到達可能性は、Aikido がセキュリティ問題の関連性と影響を評価するうえで中核となるものです。 詳細を読む Aikido の到達可能性エンジンについて。

問題の詳細に戻り、 到達可能性分析を表示をクリックします。フローチャートには、影響を受ける pyyaml, が requirements.txt で宣言されている一方で、コード内のどこでも使用されておらず、それに依存する関数もないことが示されています。

対照例として、メインの Aikido refined 問題フィードに戻ります。重大な脆弱性のある aiohttp パッケージをクリックします。問題の詳細には多数の CVE が表示されます。CVE-2024-23334 については、 到達可能性分析を表示をクリックしてください。ここでは、aiohttp に依存している 2 つの異なるパッケージが、コードベース内の 2 つの異なるファイルで使用されていることがわかります。

問題の詳細に戻り、 優先度上昇 CVE-2024-23334 のメッセージをクリックしてください。Aikido は、重大度が引き上げられた理由として 2 つ挙げています。(1)悪用コードが GitHub に存在するため見つけやすいこと、(2)実際の世界でその脆弱性が現在進行形で悪用されていることです。

AutoFix を使ってセキュリティ問題を解決する

Aikido AutoFix は、最先端の LLM を活用して、セキュリティ問題に対するワンクリック修正をインラインまたはプルリクエスト経由で提供するエージェントです。 詳細を見る AutoFix について。

引き続き aiohttp の問題の詳細ドロワーで、 どうすれば修正できますか?、次をクリックします: AutoFixの横にあります。これにより AutoFix ページに移動します。ここで Aikido は、requirements.txt 内の aiohttp のバージョンを 3.5.3 から 3.12.14 に引き上げることを提案します。

新しいプルリクエスト経由で修正を適用するには、ステータス列の横にあるケバブメニューを開いて PR を作成 をクリックします。(注:Aikido にリポジトリへの書き込み権限を付与するよう求められる場合があります。これは、Aikido があなたに代わってプルリクエストを作成するために必要です)。

すべてのパッケージに修正を適用するか、特定のパッケージに適用するかを求められた場合は、 すべてのパッケージを選択してください。Aikido は PR 作成の処理中にダイアログウィンドウを開きます。完了したら、 PR を表示.

をクリックします。すると、GitHub リポジトリ(あなたの dvpwa fork)のオープンな PR に移動します。Aikido は、この変更で解決される脆弱性についての詳細な説明を入力済みです。また、 変更されたファイル タブをクリックして、requirements.txt の更新されたパッケージバージョンを確認することもできます。

この時点で、プルリクエストを閉じるか、あるいは破棄するかを選べます(将来のテスト用に脆弱性を残しておきたい場合)。

やりました! このチュートリアルでは、以下を行いました:

  • リポジトリを Aikido に接続し、最初のセキュリティスキャンを実行した

  • コードベース内での重大度と露出状況に基づいて脆弱性を自動トリアージした

  • AutoFix を使って、脆弱な依存関係への修正を提案・適用した

最終更新

役に立ちましたか?