30秒で判断
- 対応すべき人: flatted 3.4.2 より前を直接/間接依存で利用している開発者・運用者
- 対応不要な人: flatted を使用していない場合、すでに 3.4.2 以降へ更新済みの場合
- 確認方法:
npm ls flattedで依存ツリー上のバージョンを確認する
概要
flatted は循環参照を含むオブジェクトを扱える JSON パーサです。3.4.2 より前の parse() は、パース対象の JSON に含まれる攻撃者制御下の文字列値を、数値であるかを検証せずに内部バッファ配列のインデックスキーとして扱います。内部バッファは JavaScript の Array であるため、"__proto__" キーでアクセスすると継承ゲッター経由で Array.prototype が返り、これが正当なパース結果として出力オブジェクトのプロパティに割り当てられます。結果として Array.prototype への生の参照が呼び出し側へ漏れ、そのプロパティへ書き込むとグローバルなプロトタイプ汚染(Prototype Pollution)を引き起こします。
CVSSベクトル
| 項目 | 評価 |
|---|---|
| CVSS スコア | 9.8(Critical) |
| 攻撃元区分 (AV) | ネットワーク |
| 必要な権限 (PR) | なし |
| ユーザー関与 (UI) | 不要 |
| CWE | CWE-1321(プロトタイプ汚染) / CWE-915 |
影響を受けるソフトウェア
| 製品 | ベンダー | 影響バージョン |
|---|---|---|
| flatted | WebReflection | < 3.4.2 |
修正バージョンと回避策
flatted 3.4.2 以降へアップデートしてください。多くのビルドツールやシリアライズ処理の間接依存として含まれるため、npm ls flatted で依存ツリーを確認し、ロックファイルを更新することを推奨します。
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
