Modern Frontend CVEs

対象CVE: CVE-2026-44487

[緊急解説] AxiosのNode.js版におけるプロキシ認証情報漏洩脆弱性 (GHSA-p92q-9vqr-4j8v)

AxiosのNode.js環境において、特定の条件下で認証付きプロキシの認証情報がリダイレクト先の最終サーバーへ漏洩する脆弱性が見つかりました。Node.jsでAxiosを使用している日本のフロントエンドエンジニアは速やかに対応が必要です。

はじめに:Axiosの認証情報漏洩脆弱性について

日本のフロントエンドエンジニアの皆さん、こんにちは。今回は、皆さんのプロジェクトで広く利用されているHTTPクライアントライブラリ「Axios」に発見された、深刻度の高い脆弱性について解説します。この脆弱性(GHSA-p92q-9vqr-4j8v / CVE-2026-44487)は、AxiosのNode.js版を使用している場合に、認証付きプロキシの認証情報が意図しないサーバーへ漏洩する可能性があるものです。BFF(Backend for Frontend)などでNode.js環境をご利用のエンジニアは、速やかに内容を確認し、対応を検討してください。

脆弱性の概要と具体的な仕組み

この脆弱性は、AxiosのNode.js HTTPアダプターを使用している環境で発生します。具体的には、認証情報(`Proxy-Authorization`ヘッダー)を含むHTTPプロキシを経由して最初のHTTPリクエストを送信し、その後、プロキシの対象外となるURL(例: `http://`から`https://`へのリダイレクトなど)へリダイレクトされる際に問題が発生します。

Axiosはリダイレクトを追従する際、本来プロキシにのみ送られるべき「Proxy-Authorization」ヘッダーを、リダイレクト先の最終的なサーバー(オリジンサーバー)にも誤って送信してしまう可能性があります。これは、リダイレクト処理においてAxiosが以前のプロキシ認証情報を適切にクリアしない特定のパターンで発生し、ヘッダーが残存したままオリジンサーバーに到達してしまうためです。

影響を受ける条件

この脆弱性の影響を受けるのは、以下の全ての条件が揃った場合です。一つでも当てはまらない場合は、直接的な影響はありませんが、念のため内容をご確認ください。

<ul><li><strong>Node.js環境でのAxios使用:</strong> ブラウザ環境(XHR, fetch)やReact Nativeは影響を受けません。</li><li><strong>認証付きHTTPプロキシの設定:</strong> `config.proxy`または環境変数(例: `HTTP_PROXY`)を通じて、ユーザー名やパスワードを含む認証付きHTTPプロキシが設定されている必要があります。</li><li><strong>最初のリクエストが`http://`であること:</strong> 最初のHTTPリクエストがプロキシを経由して`http://`で送信される場合です。</li><li><strong>リダイレクト追従機能が有効:</strong> Axiosのデフォルト設定では有効です。</li><li><strong>リダイレクト先がプロキシの対象外:</strong> リダイレクト先のURLが、設定されたプロキシの対象外である場合(例: `HTTPS_PROXY`が設定されていないHTTPSサイトへのリダイレクト、または`NO_PROXY`に一致するURLなど)。</li><li><strong>特定のリダイレクトパターン:</strong> リダイレクト処理において、「Proxy-Authorization」ヘッダーが削除されない特定のリダイレクトパターンであること。</li></ul>

この脆弱性がもたらすリスク

もし、リダイレクト先のサーバーが悪意のある攻撃者が制御するサーバーだった場合、盗み取られた「Proxy-Authorization」ヘッダーを通じて、Axiosクライアントのプロキシ認証情報が漏洩します。この認証情報が再利用可能であり、かつプロキシサーバーが攻撃者からアクセス可能な場合、攻撃者は盗んだ情報を使って当該プロキシサーバーに不正にアクセスできる可能性があります。これは、組織内のネットワークセキュリティに重大な影響を及ぼす可能性があります。

推奨される対応策

皆さんのプロジェクトをこの脆弱性から保護するためには、以下の対応策を速やかに実施することを強く推奨します。

最も確実で推奨される対応策は、Axiosを脆弱性が修正されたバージョンにアップデートすることです。修正は以下のバージョンで適用されています。

<ul><li><strong>`1.x`系:</strong> `1.6.0`以降</li><li><strong>`0.x`系:</strong> `0.32.0`以降</li></ul>

ターミナルで以下のコマンドを実行して、アップデートしてください。 ```bash npm install axios@latest # または yarn upgrade axios --latest ```

すぐにアップデートができない場合でも、以下の回避策を検討してください。

<ul><li><strong>リダイレクト追従を無効にする:</strong> Axiosのリクエスト設定で`maxRedirects: 0`を設定し、リダイレクトを手動で処理します。ただし、この際、プロキシを経由しないリクエストに`Proxy-Authorization`ヘッダーを誤ってコピーしないよう、細心の注意を払う必要があります。</li><li><strong>認証情報の使用を制限する:</strong> 信頼できない、または外部のサーバーへのリクエストには、再利用可能な認証付きHTTPプロキシの認証情報を使用しないように設計を見直してください。</li><li><strong>認証情報のローテーション:</strong> もし、すでにプロキシ認証情報の漏洩が疑われる場合は、直ちにその認証情報を更新(ローテーション)し、影響範囲を確認してください。</li></ul>

まとめ

本脆弱性は、AxiosをNode.js環境で使用し、認証付きプロキシとリダイレクトを組み合わせている場合に発生する可能性があります。特にBFFとしてNode.jsを採用しているプロジェクトでは、重要なバックエンドシステムへのアクセス経路となりうるため、早急な対応が求められます。常に最新のセキュリティ情報にアンテナを張り、プロジェクトの依存関係を最新に保つことを心がけましょう。

この情報が、皆さんのプロジェクトのセキュリティ強化の一助となれば幸いです。

← ブログ一覧に戻る