> 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/hajimeni/reachability-analysis/reachability-engine-to-remove-false-positives.md).

# Aikidoにおける到達可能性分析の例

Aikido は 100 以上のカスタムルールを組み合わせ、誤検知や無関係なアラートを減らします。これらの基本ルールの多くは、独自の到達可能性解析エンジンによって支えられています。

Aikido は、依存関係またはファーストパーティコードに既知の脆弱性を検出すると、アプリケーションが実際にその脆弱なコードパスを呼び出せるかどうかを確認します。実際には、軽量な呼び出し/依存関係グラフを構築し、コードから影響があると判明している関数やクラスへの参照をたどります。脆弱なコードに到達できない場合（またはテストやツール類のような非本番コンテキストでのみ使用される場合）、アラートは重要度が下げられるか抑制されます。

その結果、使用状況に関係なく脆弱なパッケージをすべて報告する従来型スキャナーと比べて、大幅にノイズを削減できます。

{% hint style="info" %}
注: この仕組みは、ノイズ抑制をさらに改善するため、言語やエコシステムをまたいで継続的に拡張しています。
{% endhint %}

#### **例 1:** **影響を受ける関数を使用していません**

Aikido の内部ナレッジベースによると、 **CVE-2020-7774** が影響するのは `setLocale` 関数のみです。解析の結果、あなたのコードベースが `setLocale`を一度も参照していないことが分かれば、影響はありません。Aikido はこの問題を重要度下げし、その関数が使われ始める可能性に備えて今後の変更を引き続き監視します。

![セキュリティ分析では、リポジトリ内で CVE-2020-7774 の脆弱性の使用は検出されませんでした。](/files/6bab3372fb73e9fabec76511e4d484c7277db087)

#### **例 2:** **ツール類でのみ使用される脆弱なパッケージ**

JS パッケージ `minimatch` には脆弱性がありますが、私たちが検出したところ、これを取り込んでいるのは `eslint` に、 `mochajs`のみです。これらはリンティング/テスト用の依存関係であり、本番環境には出荷されないため、エンドユーザーに影響はありません。Aikido はそれに応じて問題の重要度を下げます。

#### **例 3:** 到達不能な依存関係パス

あるパッケージ（`path-parse`）に CVE があることが分かっており、 `pug`によって要求されています。私たちのトレースでは、 `pug` はもはやアプリケーションで使用されていないことが示されています（インポート/参照がない、またはビルドから除外されている）。この場合、CVE は安全に無視できます。

![CVE-2021-23343 の依存関係到達可能性分析。リポジトリ内の脆弱なパッケージ経路を示しています。](/files/3869d95ae2de0c26743e59e20f4ef21ab2762741)

***

### Aikido がどのように判定するか

* **呼び出し/依存関係グラフ化:** コードがどのようにパッケージをインポートし、そこへ呼び出しているかをマッピングし、CVE に関連する関数へ向かうエッジをたどります。
* **コンテキスト認識:** 本番実行コードと、開発・テスト用ツール（リンティング、テスト、ビルドコードなど）を区別するため、ツール専用の使用では本番に影響するアラートは発生しません
* **保護された重要度下げ:** 脆弱なシンボルに到達できないことが確実に証明された場合にのみ、検出結果は重要度下げまたは抑制されます。新しいインポートなどで証拠が変わると、重要度は自動的に再評価されます。

### 覚えておくべき追加事項

* **ヒューリスティックとビルド構成:** 非常に動的なパターン、カスタムローダー、または特殊なビルド手順は、呼び出しグラフを不明瞭にすることがあります。使用状況が不明確な問題は、より高い重要度のまま維持される場合があります。
* **推移的な変更:** 間接依存関係の更新によって、以前は到達不能だったコードが到達可能になることがあります。Aikido は、依存関係の更新とコード変更の後に継続的に再確認します


---

# 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/hajimeni/reachability-analysis/reachability-engine-to-remove-false-positives.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.
