技術 約4分で読めます

Svelte/SvelteKitに5件の脆弱性、今すぐアップデートを

最近Svelteで開発を始めたら、ちょうど脆弱性の話が流れてきた。2026年1月、Svelte公式ブログで5件のCVEが一斉に公開されている。DoS・SSRF・XSSと深刻度の高いものが含まれているので、まとめておく。

影響サマリー

CVE対象種別深刻度修正バージョン
CVE-2026-22775devalueDoS(CPU/メモリ枯渇)高 (7.5)5.6.2
CVE-2026-22774devalueDoS(メモリ枯渇)高 (7.5)5.6.2
CVE-2026-22803@sveltejs/kitDoS(メモリ増幅)高 (8.2)2.49.5
CVE-2025-67647@sveltejs/kitDoS / SSRF2.49.5
CVE-2025-15265svelteXSS中 (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のキーにユーザー入力を使用しない

参考リンク