chore(deps): update dependency vite to v5.0.5 [security]#5285
chore(deps): update dependency vite to v5.0.5 [security]#5285lukastaegert merged 1 commit intomasterfrom
Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
Thank you for your contribution! ❤️You can try out this pull request locally by installing Rollup via npm install rollup/rollup#renovate/npm-vite-vulnerabilityNotice: Ensure you have installed Rust nightly. If you haven't installed it yet, please first see https://www.rust-lang.org/tools/install to learn how to download Rustup and install Rust, then see https://rust-lang.github.io/rustup/concepts/channels.html to learn how to install Rust nightly. or load it into the REPL: |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #5285 +/- ##
=======================================
Coverage 98.86% 98.86%
=======================================
Files 232 232
Lines 8953 8953
Branches 2336 2336
=======================================
Hits 8851 8851
Misses 43 43
Partials 59 59 ☔ View full report in Codecov by Sentry. |
|
This PR has been released as part of rollup@4.7.0. You can test it via |
This PR contains the following updates:
5.0.4->5.0.5GitHub Vulnerability Alerts
CVE-2023-49293
Summary
When Vite's HTML transformation is invoked manually via
server.transformIndexHtml, the original request URL is passed in unmodified, and thehtmlbeing transformed contains inline module scripts (<script type="module">...</script>), it is possible to inject arbitrary HTML into the transformed output by supplying a malicious URL query string toserver.transformIndexHtml.Impact
Only apps using
appType: 'custom'and using the default Vite HTML middleware are affected. The HTML entry must also contain an inline script. The attack requires a user to click on a malicious URL while running the dev server. Restricted files aren't exposed to the attacker.Patches
Fixed in vite@5.0.5, vite@4.5.1, vite@4.4.12
Details
Suppose
index.htmlcontains an inline module script:This script is transformed into a proxy script like
due to Vite's HTML plugin:
https://github.com/vitejs/vite/blob/7fd7c6cebfcad34ae7021ebee28f97b1f28ef3f3/packages/vite/src/node/plugins/html.ts#L429-L465
When
appType: 'spa' | 'mpa', Vite serves HTML itself, andhtmlFallbackMiddlewarerewritesreq.urlto the canonical path ofindex.html,https://github.com/vitejs/vite/blob/73ef074b80fa7252e0c46a37a2c94ba8cba46504/packages/vite/src/node/server/middlewares/htmlFallback.ts#L44-L47
so the
urlpassed toserver.transformIndexHtmlis/index.html.However, if
appType: 'custom', HTML is served manually, and ifserver.transformIndexHtmlis called with the unmodified request URL (as the SSR docs suggest), then the path of the transformedhtml-proxyscript varies with the request URL. For example, a request with path/producesIt is possible to abuse this behavior by crafting a request URL to contain a malicious payload like
so a request to http://localhost:5173/?%22%3E%3C/script%3E%3Cscript%3Ealert(%27boom%27)%3C/script%3E produces HTML output like
which demonstrates XSS.
PoC
vite devmiddleware withappType: 'custom'?%22%3E%3C/script%3E%3Cscript%3Ealert(%27boom%27)%3C/script%3Eand navigatevite dev(this shows that vanillavite devis not vulnerable, providedhtmlFallbackMiddlewareis used)Detailed Impact
This will probably predominantly affect development-mode SSR, where
vite.transformHtmlis called using the originalreq.url, per the docs:https://github.com/vitejs/vite/blob/7fd7c6cebfcad34ae7021ebee28f97b1f28ef3f3/docs/guide/ssr.md?plain=1#L114-L126
However, since this vulnerability affects
server.transformIndexHtml, the scope of impact may be higher to also include other ad-hoc calls toserver.transformIndexHtmlfrom outside of Vite's own codebase.My best guess at bisecting which versions are vulnerable involves the following test script
and using it I was able to narrow down to #13581. If this is correct, then vulnerable Vite versions are 4.4.0-beta.2 and higher (which includes 4.4.0).
Release Notes
vitejs/vite (vite)
v5.0.5Compare Source
vite:preloadErrorfor chunks without deps (#15203) (d8001c5), closes #15203Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.