本文へ移動
技術を、自社の仕事に。
判断と実行を助けるメディア

記事を検索

Vite開発サーバーの脆弱性7件 .envが返る条件と修正版

目次 · 6項目

スマートフォンの実機で表示を確かめるために、npm run dev -- --host で開発サーバーを社内のネットワークに公開する。デザイナーや顧客に見せるために、検証用のサーバーで開発サーバーをそのまま動かす。どちらも、Vite の --host の設定で開発サーバーをネットワークに公開する使い方です。

2026年10月20日から29日にかけて、この Vite の開発サーバーと、ブラウザからエディタを開く部品(launch-editor)について、GitHub Advisory Database にアドバイザリが計7件登録されました。うち Vite の3件は、「開発サーバーをネットワークに公開している場合」に、APIキーなどを書いた .env のような、本来は返さないファイルの中身(または一部)が返りうるというものです。

Astro・Nuxt・SvelteKit は Vite を依存に持ち、React のプロジェクトでも Vite で開発する構成があります。本記事では、7件の当たる条件を整理し、修正前後の版を手元で動かした結果を示します。

7件の内容と当たる条件

7件はいずれも開発サーバー(vite / vite dev)とその周辺の問題で、アドバイザリの条件は開発サーバーの起動・公開・ミドルウェアの使い方に関するものです。

アドバイザリ重大度何が起きうるか当たる主な条件
GHSA-rq7h-c2jc-7f22MODERATEserver.fs.allow の外のファイルが返る--host 等で公開、Windows 以外、ホストの絶対パスと同じ形のファイルをインポート
GHSA-vfpm-58rq-9qcgMODERATE?vite-wasm-instance でファイルの先頭4バイトが返る--host 等で公開、Node.js か Deno で動かす(8.2・8.3系)
GHSA-8g5g-mxqh-grgjMODERATE?raw などを付けると server.fs.deny の対象(.env 等)が返る--host 等で公開(6.4.4 だけ)
GHSA-9jrq-w75r-8gcwLOW悪意のあるサイトから、開発サーバーのページでスクリプトを実行されるmiddlewareMode: true や appType: 'custom' で、ブラウザの URL をそのまま transformIndexHtml に渡す
GHSA-r825-w8mm-5pxwMODERATEエディタが引数をオプションと解釈し、コマンドが実行されうるWSL、Vim・Emacs 等を使う、+ - で始まるファイルを作られる
GHSA-698v-4r3x-3vcvMODERATEWindows で % が扱われず、コマンドが実行されうるWindows、細工した名前のファイルを置かれる 等
GHSA-587h-7wmj-h5pmHIGH上の条件の「ファイルを置く」必要がなくなるWindows

最初の3件は、どれも「開発サーバーを --host や server.host でネットワークに公開している」ことが条件です。Vite の server.host の既定値は 'localhost' で、--host を付けたり 0.0.0.0 や true を設定したりすると、LAN や公開のアドレスでも待ち受けます。

下の3件は launch-editor の問題で、Vite もこの部品を使っているため影響を受けます。Windows や WSL で開発している人がいるチームでは、ネットワークに公開していなくても確認の対象です。

修正版

どの系列にも修正版があります。npm への公開は、6.4.5 を除いて10月6日で、アドバイザリの登録はその後でした。11月9日には各系列の新しい版も出ています。11月11日の時点で、これらの版を修正版とするアドバイザリはありません。上げるなら、系列の最新版にそろえるのが簡単です。

系列修正版(この版以上)系列の最新版(11月11日時点)
8.38.3.38.3.7
8.28.2.48.2.6
8.0・8.18.1.68.1.7
77.3.77.3.8
66.4.5(6.4.4 は GHSA-8g5g の対象)6.4.6

Vite を含むツールチェーンの Vite+(npm の vite-plus)も、GHSA-8g5g を除く6件の対象として挙がっており、1.1.0 で修正されています。

6系は注意が必要です。6.4.4 は10月6日の修正版ですが、修正の一部が移植されていなかったため、?raw などのクエリで server.fs.deny を回避できる状態になっていました。これが10月29日の GHSA-8g5g で、6.4.5 で直っています。

Astro 7.4.10 は vite: ^8.3.6、Nuxt 4.6.4 の @nuxt/vite-builder は ^8.3.5 を依存に指定しています(npm registry の2026年11月11日時点)。フレームワークを新しい版に上げると Vite も修正版以上になりますが、ロックファイルで古い版に固定されたままになることがあるため、次の手順で実際の版を確かめます。

手元で確かめた結果

編集部の検証環境(Linux、Node.js v22.23.4)で、Vite 8.3.2・8.3.3・6.4.4・6.4.5 を版ごとに入れ、ダミーの .env(SECRET_KEY=abc123)を置いて開発サーバーを起動し、curl で要求しました。ネットワークには公開せず、localhost だけで確かめています。

Viteの版ごとに.envへの要求の結果を比べた表。8.3.2では?vite-wasm-instanceの要求で先頭4バイト(SECR)がエラーに出た。6.4.4では?rawなどの3つの要求で.envの中身が200で返った。8.3.3と6.4.5ではすべて403だった

  • 8.3.2:/.env?vite-wasm-instance が 500 を返し、エラーの本文とサーバーのログに「expected magic word 00 61 73 6d, found 53 45 43 52」と出ました。53 45 43 52 は文字にすると「SECR」で、.env の先頭4バイトです。
  • 6.4.4:/.env?raw・/.env?import&raw が 200 で export default "SECRET_KEY=abc123\n" を返し、/.env?import&url&inline は中身を base64 にして返しました。/.env そのものは 403 でした。
  • 8.3.3・6.4.5:試した5つの要求はすべて 403 でした。

localhost での確認なので、これは「ネットワーク越しに攻撃が成立する」ことを示すものではありません。ただ、開発サーバーを公開していれば、同じ要求は社内の別の端末からも届きます。Windows・WSL での launch-editor の3件と、middlewareMode の件は再現していません。

確認と更新の手順(編集部の提案)

ここからは編集部の提案です。

1. 実際に入っている版を確かめる。 プロジェクトのディレクトリで次を実行し、上の修正版の表と比べます。フレームワークの中に入っている Vite も表示されます。

npm ls vite

2. 上げる。 フレームワークを使っている場合はフレームワークを上げ、もう一度 npm ls vite で確かめます。Vite を直接使っている場合は、系列の修正版以上に上げます。

3. 開発サーバーを公開する場面を決める。 --host を付けるのは実機の確認など必要なときだけにし、package.json の dev のスクリプトに常に付けない。検証用のサーバーで顧客に見せる場合は、開発サーバーではなく vite build の結果を配信する、というルールにすると、今回のような開発サーバーの問題の影響を受けにくくなります。

4. server.fs.deny を自分で設定している場合は見直す。 Vite のドキュメントには、11月5日に「この設定は既定の一覧を置き換える。残したい既定のパターンは自分の一覧に含める」と追記されました。既定の一覧は .env、.env.*、証明書や鍵の拡張子、.npmrc、.yarnrc.yml、.git の中です。また、public のディレクトリにはこの一覧が効かないため、秘密の情報を置かないようにします。

フレームワーク側の脆弱性の確かめ方は、Next.jsの10月のアドバイザリの記事で扱いました。Astro の環境変数の扱いは、Astro 7.4.5の記事も参考になります。

確認した範囲

2026年11月11日に、GitHub Advisory Database の7件のアドバイザリ(画面と API)、vitejs/vite のタグ・CHANGELOG と v8.3.7 のドキュメント(vite.dev の公開ページを含む)、npm registry の公開日時と各フレームワークの依存を確認しました(資料調査)。11月11日の時点で、10月29日より後に登録された Vite のアドバイザリはありません。あわせて、Vite 8.3.2・8.3.3・6.4.4・6.4.5 を localhost で起動し、ダミーの .env への5種類の要求の結果を比べました(実機検証。Linux、Node.js v22.23.4。手順と出力は記事の根拠記録に保存)。

制作中のサイトの依存の更新や、開発・検証環境の運用ルールづくりは、グリームハブの開発・AI・自動化のご相談で承っています。構成によって進め方が変わるため、お問い合わせからご相談ください。

参考資料

この記事を共有XFacebook
鈴木 翔

技術の可能性に魅了され、学生時代からプログラミングとデジタルアートの分野に深い関心を持つ

この記事のテーマを、自社の次の一歩へ

Webサイトで、実現したいことから。

使う人の目的、必要な機能、更新の体制を整理し、制作・改善で最初に取り組むことを考えます。

  • サイトの目的
  • 機能と使いやすさ
  • 公開後の運用
Web制作・改善を相談する

構想段階からご相談いただけます。この記事の情報を相談フォームに引き継ぎます。

最新記事をメールで受け取る・Web制作ガイドを読む
無料ダウンロード

Web制作 費用・発注・集客 完全ガイド【2026年版】

費用相場・制作会社の選び方・集客戦略をPDFにまとめました。

The PDF and newsletter emails are currently in Japanese.

メルマガにも登録されます。いつでも解除可能です。