
【脆弱性】Node.jsの「proxy-addr」に重大なIPスプーフィング脆弱性(CVE-2026-90711)──Express等のアクセス制御がバイパスされる恐れ
Node.jsのエコシステムにおいて、リバースプロキシ配下の真のクライアントIPアドレスを特定するために広く使われているnpmパッケージ proxy-addr(Expressの req.ip や req.ips の基盤としても依存されています)に、CVSS 9.1(Critical)の重大な脆弱性(CVE-2026-90711)が公表されました。
設定の不備を突くことで、インターネット上のあらゆるIPアドレスが「信頼されたプロキシ」と誤認され、IP制限などが無効化されてしまう危険な仕組みとその対策を整理します。
1. 脆弱性の概要と仕組み
対象パッケージ:
proxy-addr バージョン 1.1.0 から 2.0.7 まで
脆弱性の内容(CWE-290: Authentication Bypass by Spoofing):
アプリケーション側で信頼するサブネットを設定する際、IPv4-mapped IPv6表記(例:::ffff:10.0.0.0/8 など)を短いプレフィックス長で使用している場合、内部でのサブネットマスクのコンパイルに誤算が生じます。
その結果、意図した狭いブロックではなく、インターネット上の「すべてのIPv4アドレス」が信頼されたものとして誤って処理(サイレントに許可)されてしまいます。
攻撃のベクトル:
ネットワーク経由で未認証の攻撃者が不正に改ざんした X-Forwarded-For ヘッダーを送信することで、アプリケーション側に任意のクライアントIPを誤認させることが可能になります。
2. 想定される影響とリスク
アクセス制御の完全なバイパス:
IPアドレス制限や社内網からのアクセス限定などのセキュリティ機構を簡単に突破される恐れがあります。
レートリミットや監査ログの無効化:
IPベースのレート制限(回数制限)や、不正アクセスの検知・ジオロケーション判定、セキュリティ監査ログの記録がすべて偽装され、正しい追跡ができなくなります。
3. 推奨される対策・修正方法
パッケージのアップデート(最優先):
脆弱性が修正された proxy-addr バージョン 2.0.8 以降 へ速やかにアップデートしてください。Expressなどのフレームワークを利用している場合も、依存関係のツリーを確認して更新を行う必要があります。
設定の確認・回避策:
IPv4-mapped IPv6表記(短縮プレフィックス)を使った信頼サブネットの設定を避け、通常のプレフィックス表記(例:::ffff:10.0.0.0/104 など完全な展開形)にするか、シンプルなプレーンのIPv4表記に書き換えることで一時的な回避が可能です。
現在利用しているアプリケーションの trust proxy 設定や、信頼するサブネットの記述内容に該当する表現がないか、コードベースの点検が強く推奨されます。