本文へ移動
情シスのミカタ
ニュース約4分で読めます

Vitestの開発サーバーで.envや鍵が見える欠陥 5.0.5へ、UIを外に出さない

テストの道具Vitestで、UIやブラウザのモードなどで動く開発サーバーから、.envや秘密鍵、.gitが読める欠陥(CVE-2026-112948)と、モックの登録の窓口からコードを差し込める欠陥(CVE-2026-112949)が公表されました。開発者のパソコンやCIで確かめること、修正版を整理します。

公開 情シスのミカタ編集部AIにより執筆チェック済み
文字
Vitestの開発サーバーで.envや鍵が見える欠陥 5.0.5へ、UIを外に出さない

この記事のまとめ

  • JavaScriptのテストの道具Vitestで、2件の欠陥が10月22日(日本時間)に公表されました。CVE-2026-112948(Medium、CVSS 6.5)は、Vitest 5の開発サーバーが.envや秘密鍵、.git、自分の認証の鍵のファイルを読ませてしまうもので、vitest 5.0.5で直っています。
  • 影響があるのは、UI(--ui)、ブラウザのモード、APIを有効にして、Vitestが通信の待ち受けをしているときだけです。ふつうのvitestやvitest runは待ち受けをしないので対象外です。
  • CVE-2026-112949(Medium、CVSS 4.7)は、開発サーバーにつなげる人が、モックの登録の窓口から任意のコードを差し込めるもので、@vitest/mocker 4.1.12・5.0.3で直っています。開発用のサーバーを外に出さないことと、更新が対策です。
こんな方に#20代#30代#40代実務

JavaScriptのテストの道具「Vitest」で、開発サーバーに関わる欠陥2件が、10月22日(日本時間)に公表されました。1件は、Vitest 5の開発サーバーから、.envや秘密鍵、.gitなどが読めてしまうものです。もう1件は、モックの登録の窓口から、任意のコードを差し込めるものです。どちらも、Vitestが通信の待ち受けをしているときに、そのサーバーに届く人がいると起きます。開発者のパソコンやCIで、待ち受けを外に出していないかを確かめてください。

CVE-2026-112948: .envや鍵、.gitが読める

VitestのGitHubのセキュリティ勧告の要約。Vitest 5では、Viteのserver.fs.denyがVitestの開発サーバーで思ったとおりに効かず、サーバーによっては.env、秘密鍵や証明書、.npmrc、.git、Vitestの認証の鍵のファイルが、サーバーに届く人からふつうのHTTPで読めること。ブラウザのモードでtest.projectsを使うと、悪いWebサイトから開発者のブラウザを通して.envを読まれうること。UI、ブラウザのモード、APIを有効にして待ち受けるときだけで、ふつうのvitestとvitest runは対象外。修正はvitestに入り、@vitest/uiと@vitest/browserも同じ版のvitestが要ること、が書かれている
Vitestの勧告の要約(英語)。UI・ブラウザのモード・APIで待ち受けるときだけ出典: Vitest「Servers misapply server.fs.deny」(GHSA-p458-7748-mcp3)(引用)

Vitestの勧告によると、Vitest 5では、Viteの「この場所のファイルは出さない」という設定(server.fs.deny)が、Vitestの開発サーバーで思ったとおりに効いていませんでした。そのため、サーバーによっては、Viteがふだん出さないファイルが、ふつうのHTTPで読めました。

  • 読めるもの: .env、秘密鍵や証明書、.npmrc、.git、Vitest自身の認証の鍵のファイル(.vitest-secret-token)
  • 起きる場面: UI(--ui)、ブラウザのモード、APIを有効にして、Vitestが待ち受けをしているとき。ふつうのvitestとvitest runは待ち受けをしないので対象外
  • ブラウザのモードで複数のプロジェクト(test.projects)を使う場合: 開発者が別の悪いWebサイトを開くと、そのサイトから.envの値の一部を読まれうる
  • 認証の鍵を取られると: UIやAPIを使えるようになり、設定によってはテストのファイルを書き換えて動かせる

勧告は、影響を受けるのはVitestを動かしている機械だけで、作ったアプリには影響しないとしています。Vitest 4以前は対象外です。

部品 対象 修正版
vitest(@vitest/ui、@vitest/browser) 5.0.0-beta.6以上5.0.5未満 5.0.5
vite-plus 1.0.0-rc.0以上1.3.0未満 1.3.0

CVE-2026-112949: モックの登録からコードを差し込める

もう1件は、テストのためにモジュールを差し替える部品(@vitest/mocker)の欠陥です。開発サーバーの通信の窓口(WebSocket)が、モックの登録を認証なしで受け付け、登録された値を確かめずにコードの中に入れていました。そのため、開発サーバーにつなげる人は、プロジェクトの好きなモジュールの中身を任意のJavaScriptに差し替えられ、それが開発者のブラウザで動きます。

勧告は、ほかのWebサイトのブラウザからは、Vite 8がこの窓口への接続を断るため届かず、届くのはサーバーのポートに直接つなげる人だとしています。ファイルは書き換えないため、リポジトリに跡が残らない点に注意が要ります。修正版は@vitest/mocker 4.1.12と5.0.3です。

影響する会社・しない会社

  • 影響する: 社内でJavaScript・TypeScriptを開発し、テストにVitest 5を使っている会社です。とくに、UIやブラウザのモードを使い、開発用のコンテナのポートを公開したり、リモートの開発環境で待ち受けを外に出したりしている場合です。
  • 影響する: @vitest/mockerを直接使う(mockerPlugin()やinterceptorPlugin())開発をしている会社です。Vitest 4系でも4.1.12未満は対象です。
  • 影響しない: Vitestを使っていない会社です。ふつうのvitest・vitest runだけで、UIやブラウザのモード、APIを使っていない場合も、CVE-2026-112948は対象外です。

同じ週には、土台のViteの開発サーバーの欠陥も公表されています(Viteに開発サーバーの脆弱性3件、ファイル露出などの条件を確認)。

情シスが今日やること

  1. 使っているプロジェクトを洗い出す。 開発部門に、package.jsonやロックファイルにvitest、@vitest/ui、@vitest/browser、@vitest/mocker、vite-plusがあるかと、その版を確かめてもらいます。
  2. 修正版に上げる。 vitestは5.0.5以上、@vitest/mockerは4.1.12か5.0.3以上、vite-plusは1.3.0以上に上げます。@vitest/uiと@vitest/browserは、vitestと同じ版にそろえる必要があります。
  3. 待ち受けを外に出さない。 UIやAPIの待ち受け(api.hostなど)を、社内の他の人や社外から届く場所に出していないか、開発用のコンテナやリモートの開発環境のポートの公開を確かめます。
  4. .envの中身を見直す。 開発者のパソコンの.envに、本番の鍵やパスワードを置いていないかを確かめます。置いていた場合で、上の条件にあてはまっていたなら、その鍵を替えることも考えます(当社の見立て)。

よくある質問

Q本番のアプリにも影響しますか。

Aしません。Vitestの勧告は、影響を受けるのはVitestを動かしているパソコンや機械だけで、その間だけだとしています。プロジェクトから作ったり配ったりしたアプリは対象外です。CVE-2026-112949も、開発のときだけで、vite buildやvite previewでは動かないとしています。

QVitest 4を使っています。

ACVE-2026-112948は、Vitest 4以前は対象外です。認証の鍵を保存せず、server.fs.denyも上書きしないためです。CVE-2026-112949は、@vitest/mocker 2.1.0-beta.7以上4.1.12未満も対象なので、4.1.12以上に上げます。

Qすぐ上げられない場合は。

AVitestの勧告は、Vitestの設定のserver.fs.denyに、Viteの既定の一覧(.env、証明書や鍵、.npmrc、.gitなど)と認証の鍵のファイルを自分で書く回避策を示しています。あわせて、UIやAPIの待ち受けを社外や社内の他の人から届く場所に出さないようにします。

出典・参考

チェック済み。この記事は監修者によってチェックされました。(2026年10月22日)

執筆

情シスのミカタ編集部AIにより執筆

書いた AI: AI記者(解説)

法令・官公庁の発表・企業の公式発表などの一次情報を調べて、情シス向けの解説・比較・テンプレの記事を書きます。数字と日付は出典と照らして確かめ、記事の最後に出典を載せています。使っているAI: Anthropic Claude。

監修

佐々木 航株式会社Game

代表取締役。工学部出身で、21歳で起業してからシステム会社の経営一筋で8期目。アプリの受託開発から始め、いまはAIを使ったシステムソリューションを手がけています。150社以上の企業とのプロジェクトで培った開発と情報システムの現場の経験と声を形にし、激動の時代を乗り越えたいと考えています。

メモ: 掲載時に自動で(しばらくの間)

記事は AI が一次情報を調べて書き、機械の検査を通してから公開しています。人が見ているもの・見ていないものはAI の使い方に書いています。まちがいに気づいたら訂正・ご指摘からお知らせください。直したら、記事の最後に何を直したかを書きます。

役に立ったら、いいねと共有をお願いします