多言語化ライブラリi18nextに認証なしの重大脆弱性2件 CVE-2026-48714ほか
Webアプリの多言語化に広く使われるJavaScriptライブラリ『i18next』の関連部品2つに、危険度9.1の脆弱性(CVE-2026-48713/48714)。認証なしでアプリ内部の共通の土台を汚染され、ログイン審査の突破やサービス停止に連鎖する恐れがあります。修正版2.6.6/3.9.7へ更新を。

堀川 慎
Backend Engineer / AWS / Django / Go
Webアプリの多言語化に広く使われるJavaScriptライブラリ『i18next』の関連部品2つに、危険度9.1の脆弱性(CVE-2026-48713/48714)。認証なしでアプリ内部の共通の土台を汚染され、ログイン審査の突破やサービス停止に連鎖する恐れがあります。修正版2.6.6/3.9.7へ更新を。
Webアプリの画面を多言語に切り替えるために世界中で使われているJavaScriptライブラリ「i18next」の関連部品2つに、危険度9.1の脆弱性が見つかりました。番号はCVE-2026-48713とCVE-2026-48714です。ログインなしで、アプリ内部で共有されている設定を汚染され、ログイン審査のすり抜けやサービス停止、場合によっては乗っ取りにまで連鎖する恐れがあります。
対象は、ファイルから翻訳データを読み込むi18next-fs-backend(2.6.6で修正)と、サーバーでの言語判定を担うi18next-http-middleware(3.9.7で修正)です。いずれもnpmで配布される部品で、これらに依存しているアプリの開発者は速やかに更新してください。やっかいなのは、どちらも過去に出した修正をすり抜ける「二度目」の脆弱性だという点です。
i18nextと「プロトタイプ汚染」とは
i18nextは、アプリの画面を日本語・英語などに切り替える「多言語化(国際化)」を実現するためのJavaScriptライブラリです。ReactやVue、Node.jsで作られたWebアプリで定番として使われており、今回の2部品は、翻訳データをファイルから読み込んだり、アクセスしてきた利用者の言語を判定したりする補助的な役割を担います。
今回の脆弱性の種類はプロトタイプ汚染(CWE-1321)です。JavaScriptでは、すべてのオブジェクト(データのかたまり)が共通のひな型(プロトタイプ)を参照しています。攻撃者がこのひな型に勝手な値を書き込めると、アプリ全体が参照する共通の土台が書き換わってしまうため、影響が一か所にとどまりません。
きっかけになるのは、翻訳キーが見つからなかったときの処理(missingKeyHandler)など、外部から来た文字列がオブジェクトのキーとして使われる場面です。攻撃者が __proto__ のような特殊なキーを混ぜた文字列を送り込むと、それが共通のひな型への書き込みになってしまいます。
土台を書き換えられると、鍵をかけたはずの扉が開く
危険度9.1という数字より先に、「共通の土台が書き換わる」とは具体的に何が起きるのかを押さえておく必要があります。プロトタイプ汚染が怖いのは、データを1件盗まれるといった局所的な被害ではなく、アプリの判断の前提そのものを狂わせる点にあるからです。
この穴を突きに来るのは、公開されているWebアプリに片端からリクエストを投げて回る自動探索のボット、ログイン審査をすり抜けて管理者になりすましたい攻撃者、サービスを落として営業妨害や脅迫を狙う者、侵入の足がかりを作って転売する初期アクセスブローカーです。ログインも会員登録もいらず、アプリが言語を判定する通信や翻訳キーの処理に細工した文字列を紛れ込ませるだけで成立します。彼らが書き換えるのは具体的な1件のデータではなく、アプリが「この人は管理者か」「この値は安全か」を判断するときに参照する共通の前提です。この土台に手を入れられた瞬間、本来はじかれるはずの利用者が管理者として通ってしまったり、アプリそのものが落とされたり、別の弱点と組み合わされて乗っ取りにまで連鎖してしまいます。
セキュリティの言葉でいうと、プロトタイプ汚染は単独で完結するより、ほかの仕組みと組み合わさって被害を拡大させる「土台づくり」の攻撃です。たとえば if (user.isAdmin) のような権限チェックが、汚染によって誰に対しても成立してしまえば、認証回避が起こります。型の取り違えを誘ってアプリをクラッシュさせればサービス停止になり、後続の処理にコードを送り込む余地があれば、サーバー上での任意コード実行に発展しうると報告されています。入口が「誰でも触れる多言語化の処理」であるぶん、攻撃者にとっては自動化しやすい好条件です。
「9.1」という数字は技術的な深刻さの目盛りにすぎません。この部品を組み込んだアプリの運営者にとって本当に失われるのは、「ログイン審査は正しく働いている」という大前提、止まらないはずのサービス、そして利用者から預かったデータの安全性です。土台が信用できなくなるということは、その上に積み上げたすべての判断が揺らぐ、ということを意味します。
CVE-2026-48713:翻訳ファイル読み込み部品の汚染
CVE-2026-48713は、翻訳データをファイルから読み込む部品i18next-fs-backend(2.6.6より前)の脆弱性です。翻訳キーが見つからなかったときの処理(missingKeyHandler)に、外部から細工した文字列が渡ると、共通のひな型を書き換えられます。NVDによれば、これにより設定の汚染やプロパティを使った安全チェックの回避、クラッシュなどが起こりうるとされています。修正版の2.6.6へ更新してください。
CVE-2026-48714:言語判定ミドルウェアの汚染
CVE-2026-48714は、サーバー側で利用者の言語を判定する部品i18next-http-middleware(3.9.7より前)の脆弱性です。__proto__.polluted のようにドットでつないだ特殊なキーを使うことで、以前のバージョンで導入された防御(禁止リスト)をすり抜けてしまう点が新しい問題です。fs-backendのように区切り文字でキーを分解する部品と組み合わさると、汚染が成立します。修正版の3.9.7へ更新してください。
旧修正をすり抜ける「二度目」の脆弱性
i18next周辺では、このプロトタイプ汚染が繰り返し問題になっています。i18next-http-middlewareは以前にも同種の脆弱性が報告されてバージョン3.9.3で対策され、i18next-fs-backendも2.6.4で関連する不備が修正されていました。今回のCVE-2026-48713/48714は、その対策を別の書き方ですり抜ける「二度目」の脆弱性にあたります。禁止リストで特定の文字列をはじく方式は、表現を変えた入力で回避されやすく、いたちごっこになりやすいことを示す例です。
外部から取り込んだ部品(OSS)に脆弱性が潜む問題は、i18nextに限った話ではありません。本サイトでも、週間1億ダウンロードのaxiosにマルウェアが混入した事案や、TanStackからNx Consoleへ連鎖したサプライチェーン攻撃(CVE-2026-45321ほか)を取り上げてきました。自分のアプリがどの部品のどのバージョンに依存しているかを把握しておくことが、修正が出たときに素早く動く前提になります。npmやPythonの依存であれば、本サイトのOSS脆弱性スキャナーで貼り付けるだけのチェックができます。
対象バージョンと、いますぐやるべきこと
対応はシンプルで、依存している部品を修正版以降へ更新することです。直接使っていなくても、ほかのライブラリが内部で依存していることがあるため、依存ツリー全体を確認してください。
| CVE | 部品(npm) | 影響版 | 修正版(即更新) |
|---|---|---|---|
| CVE-2026-48713 | i18next-fs-backend | 2.6.6 より前 | 2.6.6 |
| CVE-2026-48714 | i18next-http-middleware | 3.9.7 より前 | 3.9.7 |
あわせて、翻訳キーや言語・名前空間の指定など、外部から来た値をそのままオブジェクトのキーや読み込みパスに使っていないかも見直しておくと、同種の問題への備えになります。ユーザーが指定できる値は、危険な文字(__proto__ や区切り文字、長すぎる文字列など)をはじいてから使うのが基本です。
悪用状況と、いま見ておくべきこと
2026年6月16日時点で、CVE-2026-48713/48714が実際の攻撃に使われたという報告はなく、米政府機関が攻撃に悪用されている脆弱性をまとめるCISAのKEVカタログにも登録されていません。攻撃に悪用されている脆弱性の最新状況は、本サイトのCISA KEV日本語ダッシュボードでまとめて確認できます。
ただし、プロトタイプ汚染は攻撃者にとって馴染み深く、ログイン不要で公開アプリから試せます。これらの部品は多くのアプリに広く組み込まれているため、悪用が始まれば影響範囲は広くなります。修正版が出ている今のうちに依存を更新しておくのが、最も確実な防御です。