> 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の脆弱性の使用は確認されませんでした。](https://715870456-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyKbzcQGrx7UtrG0nPZZ7%2Fuploads%2Fgit-blob-08c143960fd7b7eb4055bd4942556f0d419e69b1%2Fucarecdn-2ab4f164-e024-42a0-8bf2-d050225cdf03.png?alt=media)

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

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

#### **例3:** 不要になった依存関係パス

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

![CVE-2021-23343の依存関係到達可能性分析。リポジトリ内で脆弱なパッケージパスを示しています。](https://715870456-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyKbzcQGrx7UtrG0nPZZ7%2Fuploads%2Fgit-blob-04dc8499ce0f042d9e139978b0990ffdae5b4049%2Fucarecdn-fda1c7f6-1cba-439e-af75-38faf58cca3e.png?alt=media)

***

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