./x.js?foo=/../y.js
is resolved as ./y.js
instead of ./x.js
#19406
Labels
p2-edge-case
Bug, but has workaround or limited in scope (priority)
Describe the bug
For the following code, Vite resolves import differently from NodeJs.
This appears to be because Vite's fs resolution normalizes id via
path.resolve
without stripping off?
, such as:vite/packages/vite/src/node/plugins/resolve.ts
Line 283 in b44e3d4
Additional note: Going up parent directories with this trick only cheats resolution and the file content is still protected by the same
server.fs
mechanism, so this is not likely a security issue.Reproduction
https://stackblitz.com/github/hi-ogawa/reproductions/tree/main/vite-vitest-GHSA-jgmc-vvcc-xjmp?file=src%2Fmain.js
Steps to reproduce
[y.js]
node src/main.js
and it shows[x.js]
System Info
System: OS: Linux 5.0 undefined CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz Memory: 0 Bytes / 0 Bytes Shell: 1.0 - /bin/jsh Binaries: Node: 18.20.3 - /usr/local/bin/node Yarn: 1.22.19 - /usr/local/bin/yarn npm: 10.2.3 - /usr/local/bin/npm pnpm: 8.15.6 - /usr/local/bin/pnpm npmPackages: vite: ^6.1.0 => 6.1.0
Used Package Manager
npm
Logs
No response
Validations
The text was updated successfully, but these errors were encountered: