Modern Frontend CVEs

対象CVE: CVE-2026-44495

[解説] Axiosにおけるプロトタイプ汚染連携の脆弱性 (GHSA-3g43-6gmg-66jw)

Axiosの特定の旧バージョンにおいて、他のライブラリによるプロトタイプ汚染と組み合わさることで、認証情報の窃取や通信内容の改ざんが発生する可能性がある脆弱性が発見されました。早急なバージョンアップが推奨されます。

はじめに

GHSA-3g43-6gmg-66jw (CVE-2026-44495) は、JavaScriptのHTTPクライアントライブラリであるAxiosに関する深刻度Highの脆弱性です。この脆弱性は、Axios自体がプロトタイプ汚染を引き起こすわけではありませんが、他のライブラリが引き起こしたプロトタイプ汚染と連動することで、機密情報の漏洩や通信の改ざんにつながる可能性があるため、日本のフロントエンドエンジニアの皆さんも注意が必要です。本記事では、この脆弱性の詳細、影響、そして推奨される対策について解説します。

脆弱性の概要と「プロトタイプ汚染ガジェット」

この脆弱性は、Axiosの旧バージョン(修正済みのリリース以前)において、リクエスト設定を処理する`mergeConfig()`関数に存在する「プロトタイプ汚染ガジェット」と呼ばれる悪用経路が原因です。

具体的には、アプリケーション内の別のJavaScriptライブラリなどによって`Object.prototype.transformResponse`などのプロパティが意図せず汚染された場合、Axiosがその汚染された値を正規のリクエスト設定として誤って処理してしまいます。`mergeConfig()`関数がオブジェクトのプロトタイプチェーンを辿ってしまうため、`Object.prototype`に設定された値がAxiosのデフォルト設定として読み込まれてしまうのです。

具体的な影響

攻撃者が`Object.prototype.transformResponse`を悪意のある関数で汚染できる場合、Axiosはリクエストの変換処理中にその不正な関数を実行してしまいます。この実行された関数は、URL、ヘッダー、そして`this.auth`に含まれるユーザー名やパスワードといった認証情報を含むリクエスト設定情報や、サーバーからのレスポンスデータを傍受・改ざんすることが可能です。

これにより、ユーザーの認証情報の窃取や、画面に表示されるデータの不正な変更といった重大なセキュリティインシデントに発展する可能性があります。

また、関数ではなく配列などの不適切な値でプロトタイプが汚染された場合は、Axiosがエラーを起こしてリクエストがクラッシュし、サービス停止(DoS攻撃)につながる可能性もあります。この脆弱性は、アプリケーション内でAxiosを使用するすべての通信に影響を及ぼし、意図しない場所でAxiosが利用されている場合でも危険性をはらんでいます。

影響を受ける条件

この脆弱性が悪用されるには、以下のすべての条件を満たす必要があります。

1. **脆弱性のあるAxiosバージョンを使用していること。**

2. **同じJavaScriptプロセスまたはブラウザコンテキスト内で、Axiosがリクエストを送信する前に`Object.prototype`が何らかの方法で汚染されていること。**

3. **特にAxiosの設定(例:`transformResponse`)に関連するプロパティが汚染されていること。**

これは、Axios単独ではこの脆弱性を引き起こさないものの、他のライブラリやアプリケーションコードの不備によってプロトタイプ汚染が発生した場合に、Axiosが悪用の「トリガー」となり得ることを意味します。

推奨される対策

最も重要かつ直接的な対策は、**Axiosを修正済みの最新バージョンにアップデートすること**です。修正済みのバージョンでは、プロトタイプチェーンの不正な参照を防ぐために、`hasOwnProperty`チェックの導入やnull-prototypeのconfigオブジェクトの利用により、継承された`Object.prototype`の値がAxiosの設定として扱われないようになっています。

具体的な修正バージョンは脆弱性情報源で確認し、可能な限り早くアップデートを実施してください。

また、アプリケーション全体でプロトタイプ汚染を引き起こす可能性のある他のライブラリや、そのようなコードパターンがないかを確認し、それらも最新の状態に保つことを強く推奨します。開発時には、信頼できないソースからの入力を直接オブジェクトプロパティに割り当てるような処理は避けるべきです。

まとめ

GHSA-3g43-6gmg-66jwは、Axios自体がプロトタイプ汚染の原因ではないものの、既存の汚染を利用して重大な影響を及ぼす可能性がある複雑な脆弱性です。日本のフロントエンドエンジニアの皆様は、ご自身のプロジェクトでAxiosを使用している場合、速やかにバージョンアップを行い、安全な状態を確保してください。

← ブログ一覧に戻る