webpack-dev-middlewareにおいて、末尾にスラッシュがないpublicPathが原因で、パスのトラバーサル脆弱性が存在する。
> 【重要】
> この問題に関して、CVE-2026-76844が、webpackのメンテナやOpenJS Foundation(webpackプロジェクトのCVE番号発行権限を持つ)との事前の調整なしに、VulnCheckによって2026年8月24日に割り当てられ、公開された。メンテナにもOpenJS CNAにも公開前に通知は行われず、また、その時点では修正は提供されていなかった。このアドバイザリは、webpackのメンテナとOpenJS Foundation CNAによって共同で作成されたものである。
### 影響
`webpack-dev-middleware`は、`getFilenameFromUrl`でリクエストをローカルファイルに解決する。設定された`publicPath`が末尾にスラッシュがない場合(例:`/assets`)、そのプレフィックスを共有するが、その下にないリクエスト(例:`/assets../secret`)でも、隔離チェックを通過してしまう。`..`による保護は、`publicPath`のプレフィックスが取り除かれる前のパスで実行されるため、この脆弱性を検知できない。その結果、設定された出力ディレクトリを突破し、認証されていないリクエストが、出力ルート外のファイルを読み取ることができる。`webpack-dev-middleware`(または`webpack-dev-server`経由で)を使用しており、`publicPath`がスラッシュで終わらないアプリケーションが影響を受ける。ネットワーク上でアクセス可能な開発サーバーが、単一のリクエストで攻撃される可能性があり、ユーザーの操作は不要である。
### 修正
`webpack-dev-middleware`のバージョン8.3.0で修正された。5.x、6.x、および7.xのバージョンには、この修正は適用されていないため、これらのバージョンを使用しているユーザーは、8.3.0以降のバージョンにアップグレードする必要がある。
### 対策
`publicPath`に末尾にスラッシュを追加する(例:`/assets/`ではなく`/assets`)、または、修正されたバージョンにアップグレードする。
### 参照
- [CVE-2024-29180](https://www.cve.org/CVERecord?id=CVE-2024-29180) ([GHSA-wr3j-pwj9-hqq6](https://github.com/webpack/webpack-dev-middleware/security/advisories/GHSA-wr3j-pwj9-hqq6)):この問題が回避する、同じコンポーネントにおける以前のパスのトラバーサル脆弱性。
影響を受けるパッケージ:
- npm (JavaScript) webpack-dev-middleware: 影響を受けるバージョンは 8.0.0以上、8.3.0未満。8.3.0で修正済み。
- npm (JavaScript) webpack-dev-middleware: 影響を受けるバージョンは 7.4.5未満。7.4.6で修正済み。