| Gói / sản phẩm | Phiên bản bị ảnh hưởng | Phiên bản đã vá |
|---|---|---|
| vite | ≥ 2.7.0, < 2.9.17≥ 3.0.0, < 3.2.8≥ 4.0.0, < 4.5.2≥ 5.0.0, < 5.0.12 | 2.9.173.2.84.5.25.0.12 |
| vite | ≥ 2.7.0, < 2.9.17≥ 3.0.0, < 3.2.8≥ 4.0.0, < 4.5.2≥ 5.0.0, < 5.0.12 | 2.9.173.2.84.5.25.0.12 |
Vite dev server option server.fs.deny can be bypassed on case-insensitive file systems using case-augmented versions of filenames. Notably this affects servers hosted on Windows.
This bypass is similar to https://nvd.nist.gov/vuln/detail/CVE-2023-34092 -- with surface area reduced to hosts having case-insensitive filesystems.
Fixed in [email protected], [email protected], [email protected], [email protected]
Since picomatch defaults to case-sensitive glob matching, but the file server doesn't discriminate; a blacklist bypass is possible.
See picomatch usage, where nocase is defaulted to false: https://github.com/vitejs/vite/blob/v5.1.0-beta.1/packages/vite/src/node/server/index.ts#L632
By requesting raw filesystem paths using augmented casing, the matcher derived from config.server.fs.deny fails to block access to sensitive files.
Setup
npm create vite@latest on a Standard Azure hosted Windows 10 instance.
npm run dev -- --host 0.0.0.0custom.secret and production.pemvite.config.js withexport default { server: { fs: { deny: ['.env', '.env.*', '*.{crt,pem}', 'custom.secret'] } } }
Reproduction
curl -s http://20.12.242.81:5173/@fs//
curl -s http://20.12.242.81:5173/@fs/C:/Users/darbonzo/Desktop/vite-project/vite.config.js
curl -s http://20.12.242.81:5173/@fs/C:/Users/darbonzo/Desktop/vite-project/custom.sEcReT
Bạn đang dùng một trong các sản phẩm này? Quét site để biết có đang lộ phiên bản có lỗ hổng không.
Quét site miễn phíProof
Who
What
server.fs.deny are both discoverable, and accessible