【活用ガイド】

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 (緊急) [その他]
  • 攻撃元区分: ネットワーク
  • 攻撃条件の複雑さ: 低
  • 攻撃に必要な特権レベル: 不要
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): なし
  • 完全性への影響(I): 高
  • 可用性への影響(A): 高
影響を受けるシステム


i18next
  • i18next-fs-backend 2.6.6 未満

本脆弱性の影響を受ける製品の詳細については、ベンダ情報および参考情報をご確認ください。
想定される影響

・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。
・当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。
・当該ソフトウェアが完全に停止する可能性があります。
対策

ベンダ情報を参照して適切な対策を実施してください。
ベンダ情報

GitHub
CWEによる脆弱性タイプ一覧  CWEとは?

  1. オブジェクトプロトタイプ属性の不適切に制御された変更 (プロトタイプの汚染)(CWE-1321) [その他]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-48713
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-48713
  2. 関連文書 : security: guard setPath/pushPath traversal against prototype pollution  i18next/i18next-fs-backend@3ab0448  GitHub
更新履歴

  • [2026年06月22日]
      掲載