概要
Qwik は 高速 な Web アプリケーション 開発 を 目指す JavaScript フレームワーク です。バージョン 1.19.2 より 前 の Qwik に おいて、FormData の パース 処理 に 型 混同(CWE-843)および プロトタイプ 汚染(CWE-1321)に 関連 する 脆弱性 が 存在 します。この 脆弱性 の CVSS スコア は 7.5 で あり、High と 評価 されて います。
問題 の 原因 は、FormData の フィールド 名 に ドット 記法(例: user.name、items.0.value)が 使用 された 場合 の パース ロジック に あります。Qwik は ドット で 区切られた キー を ネスト された オブジェクト や 配列 に 変換 しますが、配列 インデックス と オブジェクト プロパティ キー が 同じ パス に 対して 混在 する ケース の 処理 が 不適切 です。
具体的 に は、あるパス に 対して まず 配列 として 推論 された 値 に、後 から オブジェクト プロパティ として の キー が 適用 される と、ユーザー が 制御 する プロパティ が 配列 と して 期待 されて いる 値 の 上 に 書き込まれます。この 挙動 は プロトタイプ 汚染 に 類似 した 影響 を もたらし、アプリケーション の 内部 状態 を 予期 しない 形 で 変更 する こと が 可能 です。
この 脆弱性 の 影響 は アプリケーション の ロジック に 依存 しますが、フォーム データ の パース 結果 が 認可 チェック、データ フィルタリング、ビジネス ロジック の 判定 に 使用 される 場合、攻撃者 は 意図 しない データ を 注入 したり、条件 分岐 を 操作 したり する こと が 可能 です。サーバーサイド の フォーム 処理 で この パーサー が 使用 される すべて の Qwik アプリケーション が 潜在的 な 影響 を 受けます。
Qwik は サーバーサイド レンダリング(SSR)を 基本 と する フレームワーク で ある ため、この 脆弱性 は サーバー プロセス の コンテキスト で 悪用 される 可能性 が あり、影響 は クライアントサイド に 留まりません。フォーム を 持つ すべて の ページ が 攻撃 対象 と なり得ます。
CVSS ベクトル
| 項目 | 値 |
|---|---|
| CVSS スコア | 7.5 |
| 深刻度 | High |
| CWE | CWE-843(型 混同)、CWE-1321(プロトタイプ 汚染) |
| 攻撃元 | ネットワーク |
| 攻撃 条件 | 低 |
影響 を 受ける ソフトウェア
| 製品 | 影響 バージョン | 修正 バージョン |
|---|---|---|
| Qwik | 1.19.2 より 前 | 1.19.2 |
修正 バージョン と 回避策
Qwik バージョン 1.19.2 に アップデート する こと で、FormData の パース 処理 に おける 配列 と オブジェクト の 型 推論 が 修正 され、混在 した キー パス に よる 型 混同 が 防止 されます。すぐ に アップデート できない 場合 は、フォーム データ の パース 結果 を 使用 する 前 に、期待 する データ 型 の バリデーション を 独自 に 実装 する こと が 推奨 されます。特に、配列 で ある こと を 期待 する 値 に 対して Array.isArray() を 使った 型 チェック を 追加 する こと で、型 混同 の 影響 を 軽減 できます。また、フォーム フィールド 名 に ドット 記法 を 使用 しない 設計 に 変更 する こと も 有効 な 回避策 です。
関連 リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説 は Claude API に より 自動生成 されています。正確性 に ついては 原文 を ご確認 ください。
