Modern Frontend CVEs

対象CVE: CVE-2026-41690

[緊急セキュリティ情報] i18next-http-middlewareにおける深刻な脆弱性 (CVE-2026-41690) と対策

`i18next-http-middleware`の古いバージョンにプロトタイプ汚染やパス・トラバーサルを可能にする重大な脆弱性が発見されました。システムの乗っ取りや機密情報の漏洩に繋がる恐れがあるため、直ちにバージョン3.9.3以降へのアップデートを強く推奨します。

はじめに:`i18next-http-middleware`に潜む重大な脅威

日本のフロントエンドエンジニアの皆さん、こんにちは。今回は、多言語化ライブラリ`i18next`のExpress/Connectミドルウェアである`i18next-http-middleware`に発見された深刻な脆弱性(CVE-2026-41690)について解説します。この脆弱性は、悪意のあるユーザー入力によって、サーバーサイドの重要な設定が改ざんされたり、内部ファイルに不正にアクセスされたりする可能性があり、その影響は甚大です。

もしNode.jsでバックエンドやBFF(Backend for Frontend)を構築している場合、特に注意が必要です。直ちに内容を確認し、適切な対策を講じてください。

脆弱性の概要:なぜ危険なのか?

この脆弱性は、`i18next-http-middleware`のバージョン3.9.3より前のバージョンで、ユーザーが指定する言語(`lng`)や名前空間(`ns`)のパラメータが適切に検証されずに内部処理に渡されることに起因します。これにより、主に「プロトタイプ汚染」と「パス・トラバーサル / SSRF」の2つの深刻な問題が引き起こされます。

深刻な脆弱性 1: プロトタイプ汚染 (Prototype Pollution)

プロトタイプ汚染とは、JavaScriptのオブジェクトのプロトタイプチェーンを通じて、`Object.prototype`といったグローバルなオブジェクトに任意のプロパティを追加・変更できる脆弱性です。

`i18next-http-middleware`の`getResourcesHandler`で使われる`utils.setPath`関数や、`missingKeyHandler`がリクエストボディを処理する際に、`__proto__`、`constructor`、`prototype`といった特別なキーがフィルタリングされずに利用されていました。これにより、例えば攻撃者が`GET /locales/resources.json?lng=__proto__&ns=isAdmin`のようなリクエストを送るだけで、Node.jsプロセス内で後から作成される全てのJavaScriptオブジェクトに`isAdmin: true`のようなプロパティを追加できてしまう可能性がありました。

**具体的な影響**: これにより、`if (user.isAdmin)`のような認証チェックが容易に回避されたり、アプリケーションが予期せぬエラーでクラッシュしたり、最悪の場合、リモートコード実行(RCE)に繋がる可能性もありました。これは、サーバーサイドのロジック全体に影響を及ぼす非常に危険な脆弱性です。

深刻な脆弱性 2: パス・トラバーサル / SSRF (Server-Side Request Forgery)

パス・トラバーサルは、ファイルパスを操作して意図しないファイルにアクセスする攻撃です。SSRFは、サーバーに任意のURLへのリクエストを強制させ、内部ネットワークへのアクセスなどを試みる攻撃です。

`getResourcesHandler`では、`lng`や`ns`パラメータが未検証のまま、`i18next-fs-backend`や`i18next-http-backend`といったバックエンドコネクタに渡されていました。これらのバックエンドがパスやURLを構築する際にユーザー入力をそのまま利用したため、攻撃者は悪意のあるパスを挿入することが可能でした。

**具体的な影響**: 例えば、`ns=../../etc/passwd`のような値を指定することで、サーバー上の機密ファイル(例: Linuxのパスワードファイル)を不正に読み取られる可能性があります。また、`lng=internal-service`のような値を用いて、内部ネットワークに存在するシステムへアクセス(SSRF)し、さらに攻撃範囲を広げられる危険性もありました。

その他の潜在的な影響

上記の主要な脆弱性以外にも、`i18next.options.ns`リストが無限に成長する問題がありました。これをバックエンドの繰り返し呼び出しと組み合わせることで、攻撃者が大量のメモリやCPUリソースを消費させ、結果的にサービス停止(DoS)を引き起こす可能性も指摘されています。

影響を受けるバージョン

`i18next-http-middleware`の**バージョン3.9.3未満**がこの脆弱性の影響を受けます。

今すぐ取るべき対策:緊急アップデートを!

最も重要かつ推奨される対策は、**`i18next-http-middleware`を直ちにバージョン3.9.3以降にアップデートすること**です。

バージョン3.9.3では、プロトタイプ汚染の原因となる`__proto__`などの特殊なキーのブロック、危険なキーを考慮したリクエストボディの処理、そして`lng`/`ns`パラメータに対する安全な識別子チェックが導入されており、根本的な脆弱性が修正されています。

アップデートは以下のコマンドで実行できます。

`npm install i18next-http-middleware@latest`

または

`yarn add i18next-http-middleware@latest`

**一時的な緩和策(WAFなど)**: もし何らかの理由で直ちにアップデートができない場合、一時的なリスク軽減策としてWAF(Web Application Firewall)を利用することも考えられます。WAFで、`lng`や`ns`のクエリパラメータ、またはリクエストボディのキーに`__proto__`、`constructor`、`prototype`、`..`、または制御文字が含まれるリクエストをブロックするルールを設定してください。しかし、これはあくまで一時的な対策であり、根本的な解決にはなりませんので、できるだけ早くアップデートを実施してください。

まとめ

`i18next-http-middleware`の深刻な脆弱性(CVE-2026-41690)は、プロトタイプ汚染やパス・トラバーサル/SSRFを通じて、認証回避、機密情報漏洩、サービス停止、さらにはリモートコード実行といった壊滅的な影響をもたらす可能性があります。ご自身のプロジェクトで使用している場合は、この情報を真剣に受け止め、**バージョン3.9.3以降への緊急アップデート**を最優先で実施してください。

セキュリティは、開発プロセスにおいて最も重要な要素の一つです。常に最新の情報をキャッチアップし、安全な開発を心がけましょう。

← ブログ一覧に戻る