> 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` には脆弱性がありますが、Aikidoの検出では `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.
