概要
i18next-http-middleware の missingKeyHandler に、ドット区切りのプロパティ名(例: __proto__.polluted)をブロックしない不備がありました(CWE-1321)。バージョン 3.9.3 で __proto__・constructor・prototype のリテラルはブロックされるようになっていましたが、__proto__.polluted のようなドット区切りバリアントは見逃されていました。
i18next-fs-backend 2.6.5 以下との組み合わせで使用している場合、設定した keySeparator(デフォルト: .)でキー文字列が分割され、内部の setPath() ウォーカーが Object.prototype に書き込むリモートプロトタイプ汚染が可能になります。
影響としてクラッシュ、設定値の汚染、プロパティベースのセキュリティチェックのバイパスが考えられます。saveMissing: true を設定し、かつ missingKeyHandler が未認証エンドポイントとして公開されている場合に影響が大きくなります。
CVSSベクトル
| 項目 | 値 | 意味 |
|---|---|---|
| 攻撃経路(AV) | ネットワーク(N) | リモートから攻撃可能 |
| 攻撃の複雑さ(AC) | 低(L) | 特別な条件なし |
| 必要な権限(PR) | なし(N) | 認証不要 |
| ユーザー操作(UI) | なし(N) | ユーザー操作不要 |
| スコープ変更(S) | 変更なし(U) | — |
| 機密性影響(C) | 高(H) | — |
| 完全性影響(I) | 高(H) | — |
| 可用性影響(A) | 低(L) | — |
影響を受けるソフトウェア
| パッケージ | 影響バージョン | 修正バージョン |
|---|---|---|
| i18next-http-middleware (npm) | 3.9.7 未満 | 3.9.7 |
| i18next-fs-backend (npm) | 2.6.5 以下(組み合わせ) | — |
修正バージョンと対応策
修正:
npm install i18next-http-middleware@3.9.7
即時回避策(アップデートが困難な場合):
missingKeyHandlerを認証済みユーザーのみにアクセス制限する(app.use('/missing-key', authMiddleware, i18nMissingKeyHandler))saveMissing: falseを設定して未翻訳キーの保存を無効にするmissingKeyHandlerの前段でkeySeparatorでキーを分割した際に__proto__・constructor・prototypeを含むものを拒否するフィルターを実装する
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
