JVNDB-2026-020217 | |
i18nextのi18next-fs-backendにおけるオブジェクトプロトタイプ属性の不適切に制御された変更に関する脆弱性 | |
| 概要 | |
バージョン2.6.6以前のi18nextには、不正に作成されたmissing-key文字列を介してプロトタイプ汚染が発生する脆弱性があります。この脆弱性は、不足している翻訳キーを永続化する際に使用された場合に影響し、例えばuntrustedな入力に公開されたi18next-http-middlewareのmissingKeyHandlerを介するケースが挙げられます。Backend.writeFile()は、内部のsetPath()ウォーカーを呼び出す前に、キーワード区切り文字(デフォルトはドット)でキューに入った各missing-key文字列を分割します。しかし、ウォーカー(lib/utils.jsのgetLastOfPath)は安全でないセグメントに対する保護を行わないため、"__proto__.polluted"のようなキーは["__proto__", "polluted"]に分割され、そのままObject.prototypeにアクセスしてしまいます。その結果、攻撃者がグローバルオブジェクトのプロトタイプ上に任意のプロパティを書き込むことが可能になります。ホストアプリケーションによっては、汚染されたプロトタイプのプロパティによりクラッシュ、翻訳の破損、設定の汚染、またはプロパティベースのセキュリティチェックの回避が引き起こされる可能性があります。影響を受けるのは、missingKeyHandler(または他のルートでuntrustedなリクエストボディをi18next.t(..., {...})にforwardし、saveMissing: trueを使用しているもの)がuntrustedユーザーに到達可能であり、missing-key文字列の分割にデフォルトのkeySeparatorが使用されている場合のみです(すなわち、keySeparatorがfalseでない場合です)。untrustedな入力に対してmissing-keyの永続化を公開していないアプリケーションには、この攻撃経路による直接の影響はありません。この問題はバージョン2.6.6で修正されました。直ちにアップグレードできない開発者は、次の対策を行うべきです。i18next-http-middlewareのmissingKeyHandlerをuntrustedユーザーに公開しないこと(認証の背後に設置するかルートを削除する)、untrustedな入力からの書き込みを受け入れる場合はmissing-key永続化を無効にすること(saveMissing: falseまたはbackend.create実装なしを利用する)、およびi18nextのオプションでkeySeparatorをfalseに設定してbackendのキー分割を無効にすること(注意:これによりネストされた翻訳キーも無効になります)。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 9.1 (緊急) [その他]
| |
| 影響を受けるシステム | |
|
| |
i18next | |
本脆弱性の影響を受ける製品の詳細については、ベンダ情報および参考情報をご確認ください。 | |
| 想定される影響 | |
・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
ベンダ情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
GitHub | |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
|
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/06/15 |
| 登録日 | 2026/06/22 |
| 最終更新日 | 2026/06/22 |



