Axios の脆弱性レポート(CVE-2026-40175)
調査日: 2026-04-14 ステータス: Undergoing Analysis
概要
Axios(Node.js / ブラウザ向け Promise ベース HTTP クライアント)において、サードパーティの Prototype Pollution を Remote Code Execution(RCE)やクラウド環境の完全侵害(AWS IMDSv2 バイパス)にエスカレーションできる「ガジェット攻撃チェーン」の脆弱性が発見された。CVSS v3.1 スコア 10.0(Critical)の最高深刻度に分類される。
基本情報
| 項目 | 内容 |
|---|---|
| CVE ID | CVE-2026-40175 |
| GHSA ID | GHSA-fvcv-3m26-pcqx |
| CVSS v3.1 スコア | 10.0 (Critical) |
| CVSS ベクター | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| EPSS スコア | 0.239%(47th percentile) |
| CWE | CWE-113: HTTP ヘッダーの CRLF シーケンスの不適切な無害化, CWE-444: HTTP リクエスト/レスポンススマグリング, CWE-918: サーバーサイドリクエストフォージェリ (SSRF) |
| 公開日 | 2026-04-10 |
| 最終更新日 | 2026-04-13 |
| 報告者 | raulvdv |
影響を受けるソフトウェア
Axios (npm)
- ベンダー: axios
- 影響バージョン: < 1.15.0
- 修正バージョン: 1.15.0
- 修正コミット: axios/axios@3631854
- 修正 PR: #10660
脆弱性の詳細
この脆弱性は、Axios が「ガジェット(Gadget)」として悪用される攻撃チェーンに起因する。根本原因は lib/adapters/http.js における HTTP ヘッダーのサニタイズ不備である。攻撃の流れは以下の通り:
- Prototype Pollution の前提: 攻撃者がまず、アプリケーションの依存関係にある別のライブラリ(
qs、minimist、ini、body-parserなど)の Prototype Pollution 脆弱性を悪用し、Object.prototypeを汚染する - Axios のガジェット化: Axios は config マージ時に
Object.prototypeから継承されたプロパティを検証なしにリクエストヘッダーに取り込む。特に CRLF 文字(\r\n)のサニタイズが不十分であるため、ヘッダーインジェクションが可能になる - リクエストスマグリング / SSRF: 注入された CRLF を含むヘッダーにより HTTP リクエストスマグリングが発生。Axios は IMDS エンドポイント(
169.254.169.254)への内部 HTTP リクエストを送信し、AWS IMDSv2 のセキュリティ制御をバイパスして IAM クレデンシャルを窃取できる - RCE / クラウド侵害: 取得したクレデンシャルを使用して、クラウドインフラストラクチャ全体の制御を奪取する
この攻撃は 直接的なユーザー入力を一切必要としない 点が特に危険である。Prototype Pollution が発生した時点で Axios が自動的に攻撃ベクターとして機能する。
対策・推奨事項
- Axios を 1.15.0 以上にアップデートする(最優先)
- アプリケーションの全依存関係を監査し、Prototype Pollution の脆弱性がある既知のライブラリ(
qs、minimist、ini、body-parser等)を更新する Object.freeze(Object.prototype)の適用や--frozen-intrinsicsフラグの使用を検討する- クラウド環境では IMDSv2 を強制し、ネットワークレベルでメタデータサービスへのアクセスを制限する
- WAF やリクエスト検証レイヤーで CRLF インジェクションをブロックするルールを追加する
フロントエンド影響分析
Axios はフロントエンド・バックエンドの両方で広く使用される HTTP クライアントライブラリであるため、以下に構成別の影響度を記載する。なお、CVSS 10.0 は Node.js サーバー環境での最悪ケース評価であり、ブラウザ環境ではセキュリティ機構により攻撃チェーンが大幅に緩和される。
| 構成 | 影響度 | 対処要否 | 備考 |
|---|---|---|---|
| SPA(クライアントサイドのみ) | 🟢 低 | 推奨 | ブラウザのセキュリティ機構により攻撃チェーンが成立しない(詳細は判定の考え方を参照) |
| SSR(サーバーサイドレンダリング) | 🔴 高 | 要対処 | Node.js 環境で動作するため、SSRF → IMDSv2 バイパス → クレデンシャル窃取の攻撃チェーンが完全に成立する |
判定の考え方
1. ブラウザのセキュリティ境界(SPA 判定で最重要)
この CVE の攻撃チェーンは4段階で構成されるが、ブラウザ環境では複数のステップがセキュリティ機構により遮断される:
| 攻撃ステップ | ブラウザでの成立性 | 理由 |
|---|---|---|
| ① Prototype Pollution | ✅ 成立し得る | ブラウザの JS ランタイムでも Object.prototype の汚染は発生し得る |
| ② CRLF ヘッダーインジェクション | ❌ 遮断される | ブラウザの XMLHttpRequest・fetch API は CRLF を含むヘッダー値を拒否する(ブラウザレベルの防御) |
③ SSRF(169.254.169.254 へのアクセス) |
❌ 遮断される | 同一オリジンポリシーにより内部ネットワークへのリクエストが制限され、メタデータサービスは CORS ヘッダーを返さないためレスポンス読取も不可 |
| ④ クレデンシャル窃取 | ❌ 到達不可 | ステップ③が不成立のため到達しない |
2. 実行環境の違い
- SPA(ブラウザ): Axios はブラウザアダプター(
XMLHttpRequest)を使用する。ブラウザのネットワークスタックが不正なヘッダーや内部ネットワークへのアクセスをブロックするため、攻撃チェーンは成立しない。依存関係の衛生管理の一環としてバージョンアップを推奨 - SSR(Node.js): Axios は Node.js の
httpモジュールを使用する。ブラウザのようなセキュリティ境界が存在せず、CRLF インジェクションも SSRF もそのまま成立する。Next.js、Nuxt、Remix などの SSR フレームワークで Axios を使用している場合、即座のアップデートが必要
3. 攻撃ベクターと前提条件
- 攻撃ベクターはネットワーク経由(AV:N)で、認証やユーザー操作は不要(PR:N/UI:N)
- ただし、前提としてアプリケーションの依存関係に Prototype Pollution の脆弱性が存在する必要がある
4. ランタイム vs ビルドタイム
- Axios はランタイムライブラリであり、ビルド時のみの影響はない
参考リンク
情報ソース
| ソース | 取得状況 |
|---|---|
| NVD (NIST) | ✅ 取得済み |
| GitHub Advisory | ✅ 取得済み |
| Web検索 | ✅ 取得済み |