> 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.
