Svelte/SvelteKitに5件の脆弱性、今すぐアップデートを
最近Svelteで開発を始めたら、ちょうど脆弱性の話が流れてきた。2026年1月、Svelte公式ブログで5件のCVEが一斉に公開されている。DoS・SSRF・XSSと深刻度の高いものが含まれているので、まとめておく。
影響サマリー
| CVE | 対象 | 種別 | 深刻度 | 修正バージョン |
|---|---|---|---|---|
| CVE-2026-22775 | devalue | DoS(CPU/メモリ枯渇) | 高 (7.5) | 5.6.2 |
| CVE-2026-22774 | devalue | DoS(メモリ枯渇) | 高 (7.5) | 5.6.2 |
| CVE-2026-22803 | @sveltejs/kit | DoS(メモリ増幅) | 高 (8.2) | 2.49.5 |
| CVE-2025-67647 | @sveltejs/kit | DoS / SSRF | 高 | 2.49.5 |
| CVE-2025-15265 | svelte | XSS | 中 (5.3) | 5.46.4 |
CVE-2026-22775: devalue.parseでCPU/メモリ枯渇
影響バージョン: devalue 5.1.0 〜 5.6.1
ArrayBufferのハイドレーション処理がBase64エンコードされた文字列を期待するが、デコード前に入力の検証を行っていない。悪意のある入力によりdevalue.parseが過剰なCPU時間やメモリを消費し、サーバーをダウンさせることができる。
SvelteKitのRemote Functions等でユーザー入力をparseしている場合に影響を受ける。
GHSA: GHSA-g2pg-6438-jwpf
CVE-2026-22774: devalue.parseでメモリ枯渇
影響バージョン: devalue 5.3.0 〜 5.6.1
CVE-2026-22775と同様にdevalue.parseの入力検証不備に起因する。特定の入力によりメモリ枯渇を引き起こす。認証不要、ユーザー操作不要でネットワーク経由から攻撃可能。
GHSA: GHSA-vw5p-8cq8-m7mv
CVE-2026-22803: SvelteKit Remote Functionsでメモリ増幅DoS
影響バージョン: @sveltejs/kit 2.49.0 〜 2.49.4
Remote Functionエンドポイントへのフォーム送信時、SvelteKitクライアントはapplication/x-sveltekit-formdata形式でデータを送信する。リクエストボディの最初の数バイトがデータ長を指定するが、SvelteKitはその長さのArrayBufferを先行して作成する。
攻撃者は大きなデータ長を指定する小さなペイロードを送信し、接続を停止させることで、サーバーのメモリを枯渇させることができる。
experimental.remoteFunctionsを有効にしている場合のみ影響を受ける。
GHSA: GHSA-j2f3-wq62-6q46
CVE-2025-67647: prerenderでDoS、条件次第でSSRF
影響バージョン:
- DoS: @sveltejs/kit 2.44.0 〜 2.49.4(プリレンダリングルートが1つ以上ある場合)
- SSRF: @sveltejs/kit 2.19.0 〜 2.49.4(adapter-node使用、ORIGIN未設定、Hostヘッダー検証なしのリバースプロキシ)
origin構築時の不十分な検証に起因する。単一リクエストでサーバーをクラッシュさせることが可能。
さらに、Hostヘッダーのスプーフィングにより、SvelteKitサーバーから内部サービスへのSSRFが可能。fetch APIはデフォルトでHTTPリダイレクトを自動追従するため、302リダイレクトを返す中間サーバーを設置することで任意のパスへのSSRFに発展する。
adapter-node使用時はORIGIN環境変数を必ず設定すること。
GHSA: GHSA-j62c-4x62-9r35
詳細な技術解説: Avoiding the paradox: A native full read SSRF and oneshot DoS in SvelteKit
CVE-2025-15265: hydrationでXSS
影響バージョン: svelte 5.46.0 〜 5.46.3
hydratable関数使用時(特にexperimental.async有効時)に発生する。hydratableの第1引数(キー)がサーバーレンダリングされた<head>内の<script>ブロックに直接埋め込まれるが、安全でない文字の適切なエスケープが行われていない。
このキーに信頼できないユーザー入力が含まれる場合、攻撃者はスクリプトコンテキストから脱出する入力を作成し、任意のJavaScriptを注入できる。セッション窃取やアカウント乗っ取りにつながる可能性がある。
GHSA: GHSA-6738-r8g5-qwp3
対処法
今すぐやること
# devalueのアップデート
npm update devalue
# または
pnpm update devalue
# SvelteKitのアップデート
npm update @sveltejs/kit
# または
pnpm update @sveltejs/kit
# Svelteのアップデート
npm update svelte
# または
pnpm update svelte
修正バージョン:
- devalue: 5.6.2以上(5.7.0推奨)
- @sveltejs/kit: 2.49.5以上
- svelte: 5.46.4以上
アップデートできない場合の回避策
- 信頼できないソースからのデータを
devalue.parseで処理しない experimental.remoteFunctionsを無効にする- adapter-node使用時は
ORIGIN環境変数を設定する - Hostヘッダーを検証するリバースプロキシを使用する
hydratableのキーにユーザー入力を使用しない