UNKNOWNCVE-2026-35209

defu: `defaults`引数内の`__proto__`キーによるプロトタイプ汚染

プラットフォーム

nodejs

コンポーネント

defu

修正バージョン

6.1.5

### 影響 信頼できないソースからの未加工のユーザー入力(例:解析されたJSONリクエストボディ、データベースレコード、または設定ファイル)を`defu()`関数の第一引数として渡すアプリケーションは、プロトタイプ汚染の脆弱性があります。 `__proto__`キーを含む悪意のあるペイロードは、マージされた結果内の意図されたデフォルト値を上書きできます。 ```js import { defu } from 'defu' const userInput = JSON.parse('{"__proto__":{"isAdmin":true}}') const config = defu(userInput, { isAdmin: false }) config.isAdmin // true — 攻撃者がサーバーのデフォルトを上書き ``` ### 根本原因 内部の`_defu`関数は、`Object.assign({}, defaults)`を使用してデフォルトオブジェクトをコピーしていました。`Object.assign`は`__proto__`セッターを呼び出し、これにより結果オブジェクトの`[[Prototype]]`が攻撃者によって制御される値で置き換えられます。汚染されたプロトタイプから継承されたプロパティは、`for...in`ループ内の既存の`__proto__`キーガードをバイパスし、最終的な結果に到達します。 ### 修正 `Object.assign({}, defaults)`をオブジェクトスプレッド (`{ ...defaults }`)に置き換えます。オブジェクトスプレッドは`[[DefineOwnProperty]]`を使用し、`__proto__`セッターを呼び出しません。 ### 影響を受けるバージョン <= 6.1.4 ### クレジット [@BlackHatExploitation](https:/

修正方法

公式パッチはありません。回避策を確認するか、アップデートを監視してください。

依存関係を自動的に監視

新しい脆弱性がプロジェクトに影響を与えたときにアラートを受け取りましょう。

無料で始める