Modern Frontend CVEs

対象CVE: CVE-2026-42353

[緊急速報] i18next-http-middlewareに深刻なパス・トラバーサルとSSRFの脆弱性(GHSA-jfgf-83c5-2c4m)

i18next-http-middlewareのバージョン3.9.3未満に、サーバー上の機密ファイルを読み取られたり、内部システムへの不正なリクエストを許してしまう深刻な脆弱性が発見されました。情報漏洩やシステム侵害のリスクがあるため、対象のライブラリは直ちに最新バージョンへアップデートしてください。

はじめに:i18next-http-middlewareの深刻な脆弱性

フロントエンド開発において、多言語対応は避けて通れない要件の一つです。そして、その国際化(i18n)をサーバーサイドで行う際に便利なのが、`i18next-http-middleware`ではないでしょうか。しかし、この度、`i18next-http-middleware`のバージョン3.9.3未満において、深刻なセキュリティ脆弱性(GHSA-jfgf-83c5-2c4m / CVE-2026-42353)が発見されました。この脆弱性は、悪意のあるユーザー入力によって、サーバー上の機密情報が漏洩したり、外部からアクセスできない内部システムへの不正なリクエストが実行される可能性があります。

本記事では、この脆弱性の詳細、具体的な攻撃手法と影響、そしてフロントエンドエンジニアとして取るべき対応策について、技術的に解説します。

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

この脆弱性は、`i18next-http-middleware`がユーザーから送られてくる`lng`(言語)や`ns`(名前空間)といったパラメータの値を、適切にサニタイズ(無害化)することなく、バックエンドコネクタ(例:`i18next.services.backendConnector.load()`)に直接渡してしまうことに起因します。これにより、攻撃者は意図しないファイルパスやURLを生成させ、本来アクセスできない情報やシステムに到達できてしまいます。

具体的な攻撃経路と影響

もし、`i18next-http-middleware`が`i18next-fs-backend`のようにファイルシステムを扱うバックエンドと組み合わせて使用されている場合、攻撃者は`lng`や`ns`パラメータに`../../etc/passwd`のようなパスを操作する値を指定することができます。これにより、サーバー上の任意のファイル(例:`/etc/passwd`、設定ファイル、ソースコード、秘密鍵、`.env`ファイルなど)を読み取られ、システムの設定情報、認証情報、その他機密データが漏洩するリスクがあります。

これは、例えばフロントエンドで言語切り替えを行う際に、`GET /locales/../../../../etc/passwd/translation.json` のようなリクエストがサーバーに送信され、`i18next-fs-backend`がこのパスを解釈して `/etc/passwd` の内容を返してしまう、といったイメージです。

`i18next-http-middleware`が`i18next-http-backend`のようにHTTPリクエストを扱うバックエンドと組み合わせている場合、この脆弱性はさらに深刻なSSRF(Server-Side Request Forgery)攻撃に悪用される可能性があります。攻撃者はURLの構造を操作し、サーバー自身が外部からはアクセスできない内部ネットワーク上のシステムやサービスに対して、リクエストを送信させることができます。

例えば、クラウド環境では、`http://169.254.169.254/latest/meta-data/iam/security-credentials/` のようなメタデータエンドポイントにアクセスさせることで、一時的な認証情報を窃取される可能性があります。これにより、サーバーの権限を乗っ取られ、データベースへのアクセスやストレージからのデータ抽出など、より広範なシステム侵害に繋がる恐れがあります。

直接的なセキュリティ脆弱性とは少し異なりますが、修正前のバージョンでは、ユニークな`ns`値が無制限に`i18next.options.ns`配列に追加されてしまう問題も報告されていました。悪意のあるユーザーが繰り返し異なる`ns`値を送信し続けると、サーバーのメモリを使い果たしてしまい、結果としてサービス停止(DoS攻撃)に至る可能性もありました。

影響を受ける条件と確認方法

`i18next-http-middleware`のバージョンが**3.9.3未満**のアプリケーションが影響を受けます。特に、以下のバックエンドと組み合わせて使用している場合は、リスクが極めて高くなります。

あなたのプロジェクトでこのミドルウェアを使用しているか確認するには、`package.json`ファイルや`yarn.lock`/`package-lock.json`ファイルを確認してください。もし`i18next-http-middleware`が依存関係として含まれており、そのバージョンが3.9.3未満である場合は、すぐに対応が必要です。

緊急対応:すぐにアップデートしてください!

最も重要な対策は、`i18next-http-middleware`を**バージョン3.9.3以降**に即座にアップデートすることです。このバージョンでは、`utils.isSafeIdentifier`という新しい機能が導入されました。これにより、`lng`や`ns`の値から`..`、パス区切り文字(`/`、`\`)、制御文字、プロトタイプキー、空文字列、長すぎる値など、危険なパターンが厳しくフィルタリングされるようになりました。

アップデートコマンドの例:

(プロジェクトの依存関係によっては、`^3.9.3`のようにバージョンを指定する必要があります。)

可能であれば、使用しているバックエンドライブラリも最新バージョンにアップデートすることを検討してください。例えば、`i18next-fs-backend`は2.6.4以降、`i18next-http-backend`は3.0.5以降のバージョンが推奨されます。これにより、バックエンド側でも同様の脆弱性に対する修正が施されている場合があり、多層的な防御に繋がります。

もし可能であれば、アプリケーションのフロントにWAF(Web Application Firewall)やリバースプロキシを配置し、`lng`や`ns`パラメータに`..`、`/`、`\`などの危険な文字列が含まれるリクエストをブロックするルールを設定することも部分的な緩和策になります。しかし、これはあくまで補助的な対策であり、根本的な解決はライブラリのアップデートであることを忘れないでください。

まとめ

今回解説した`i18next-http-middleware`の脆弱性は、パス・トラバーサルやSSRFといった、サーバーサイドに大きな影響を与える危険な攻撃経路を提供してしまいます。フロントエンドエンジニアとしては、直接サーバーサイドのコードを書く機会が少ないかもしれませんが、依存するライブラリのセキュリティ情報は常に意識し、迅速な対応を心がけることが重要です。

プロジェクトの安全を確保するためにも、今すぐあなたのアプリケーションで`i18next-http-middleware`のバージョンを確認し、速やかなアップデートを実施してください。このアップデートには、プロトタイプ汚染やHTTPレスポンス分割/XSS回避に関する修正も含まれているため、まとめて対応することのメリットは大きいでしょう。

← ブログ一覧に戻る