> For the complete documentation index, see [llms.txt](https://help.aikido.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.aikido.dev/docs/docs-ja/wkufurtogaido/resolve-dependency-vulnerabilities-with-autotriage-and-ai-autofix.md).

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

### 前提条件

必要なもの：

* ある [Aikido アカウント](https://app.aikido.dev/login)
* 個人の [GitHubアカウント](https://github.com/login) （サンプルプロジェクトをフォークするため）

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

このチュートリアルでは、次の名前の公開リポジトリを使用します [Damn Vulnerable Python Web App](https://github.com/anxolerd/dvpwa)、人気のある [Damn Vulnerable Web Application](https://github.com/digininja/DVWA) の派生版で、

まず、 [フォークし](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) その [DVPWA](https://github.com/anxolerd/dvpwa) リポジトリをGitHubの名前空間に複製して、作業用の個人コピーを作成します。次にAikidoのワークスペースにログインし、 **Repositories > リポジトリを管理**。クリック： **リポジトリを追加**に移動します。求められたら、GitHubにリポジトリの選択を許可し、フォークしたDVPWAリポジトリを選択してください。

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

<figure><img src="/files/372358e865b5b5421ef6e21ba0af11920e5c4f94" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="/files/b483105d25b7ad8e7f7ead7eec7dea924953eeb3" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="/files/00a02f1ebcd6eb29f69e6871d1d7324a278e8bcb" alt=""><figcaption></figcaption></figure>

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

公式の修正はバージョン5.4へのアップグレードですが、Aikidoはこの問題を無視しても安全だと判断しています。 **影響を受ける関数は未使用** というサブ問題の下にあるダウングレードメッセージをクリックしてください。これにより、Aikidoが [到達可能性分析](/docs/docs-ja/hajimeni/reachability-analysis/reachability-engine-to-remove-false-positives.md) を実施し、このパッケージがコード内のどこでも使われていないと判断したことが確認できます。

<figure><img src="/files/2cac24a17cc5275ed7bef4c32f2903849869ee83" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="info" %}
到達可能性は、Aikidoがセキュリティ問題の関連性と影響を評価する方法の中核です。 [続きを読む](/docs/docs-ja/hajimeni/reachability-analysis/reachability-engine-to-remove-false-positives.md) Aikidoの到達可能性エンジンについて。
{% endhint %}

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

<figure><img src="/files/d642b8549aa8770e025893a3538857a7d4372fce" alt="" width="375"><figcaption></figcaption></figure>

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

<figure><img src="/files/1dd187ba75faa6cb215df55d564d38fbe6b98e32" alt="" width="375"><figcaption></figcaption></figure>

問題の詳細に戻り、 **アップグレード済み** というCVE-2024-23334のメッセージをクリックします。Aikidoが重大度を引き上げた理由として2つ挙げています。(1) 攻撃コードがGitHubに存在するため発見されやすいこと、(2) この脆弱性が現実世界で実際に悪用されていることです。

<figure><img src="/files/833332b6bdf564b03a1b407ce176e867553bad7f" alt=""><figcaption></figcaption></figure>

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

{% hint style="info" %}
Aikido AutoFixは、最先端のLLMを活用して、セキュリティ問題に対するワンクリック修正をインラインまたはプルリクエスト経由で提供するエージェントです。 [詳細を見る](/docs/docs-ja/autofix-to/overview-aikido-autofix.md) AutoFixについて。
{% endhint %}

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

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

<figure><img src="/files/fb5c4d3b32d74841f7a2c4aae668ac6b8f4b1a66" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/ddda4cbc0fa804f6e1f9020f2d65c7976deb3515" alt=""><figcaption></figcaption></figure>

をクリックします。すると、GitHubリポジトリ（あなたのdvpwaフォーク）内の開かれたPRに移動します。Aikidoは、この変更によって解決された脆弱性について詳細な説明を入力済みです。 **変更されたファイル** タブをクリックして、requirements.txt内で上げられたパッケージバージョンを確認することもできます

<figure><img src="/files/fd536167188dd44272f7ea7a09e3098d2d29ef2f" alt=""><figcaption></figcaption></figure>

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

やりました！このチュートリアルでは、次のことを行いました：

* リポジトリをAikidoに接続し、最初のセキュリティスキャンを実行した
* コードベース内での重大度と露出状況に基づいて脆弱性を自動トリアージした
* AutoFixを使って、脆弱な依存関係への修正案を提示し、適用した


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.aikido.dev/docs/docs-ja/wkufurtogaido/resolve-dependency-vulnerabilities-with-autotriage-and-ai-autofix.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
