> 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 で依存関係の問題を修正

### 前提条件

必要なもの：

* 1つの [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 > Manage Repos**。をクリックします。 **Add Repo**に移動します。求められた場合は、リポジトリを選択するための GitHub 権限を付与し、フォークした DVPWA リポジトリを選択してください。

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

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

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

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

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

右上隅で、次のように表示されているタイルを選択します： **1 Auto Ignored**。これにより、フィードの **Ignored** セクションに移動します。

問題名（`pyyaml`）、種類（Python パッケージ）、重大度（Critical）、および無視する理由を確認してください。これは大幅に古いパッケージにおける重大な脆弱性ですが、Aikido はその関数がコードベースのどこでも使用されていない（宣言されているだけである）ことを示しています。

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

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

公式な修正はバージョン 5.4 へのアップグレードですが、Aikido はこの問題を安全に無視できるものとしてマークしています。サブ問題のいずれかの下にある **Affected function not in use** というダウングレードメッセージをクリックしてください。これにより、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 %}

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

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

対照例として、メインの Aikido refined 問題フィードに戻ります。重大な脆弱性を持つ `aiohttp` パッケージをクリックしてください。問題の詳細には多数の CVE が表示されます。CVE-2024-23334 について、クリックします **View reachability analysis**。ここでは、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/autofixto/overview-aikido-autofix.md) AutoFix について。
{% endhint %}

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

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

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

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

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

をクリックしてください。その後、GitHub リポジトリ（dvpwa のフォーク）でオープン状態の PR に移動します。Aikido は、この変更によって解決される脆弱性についての詳細な説明を記入しています。また、 **Files changed** タブをクリックすると、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.
