> 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`です。これらはLint/テスト用の依存関係であり、本番環境には含まれないため、エンドユーザーは影響を受けません。Aikidoはそれに応じてこの問題の重要度を下げます。

#### **例3：** 使われていない依存関係パス

あるパッケージ（`path-parse`）にはCVEがあることが知られており、次によって必要とされています `pug`。トレースの結果、 `pug` は、もはやアプリケーションで使用されていません（インポート/参照がない、またはビルドから除外されている）。この場合、そのCVEは安全に破棄できます。

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

***

### Aikidoが判断する方法

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

### 留意すべき追加事項

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