chore(frontend): update dependency vite to v4.5.3 [security] - #537
Closed
plural-renovate[bot] wants to merge 1 commit into
Closed
plural-renovate[bot] wants to merge 1 commit into
plural-renovate[bot] wants to merge 1 commit into
Conversation
Contributor
|
Visit the preview URL for this PR (updated for commit 44957a9): https://pluralsh-console--pr537-renovate-frontend-np-z1lqcjpj.web.app (expires Sat, 27 Jan 2024 05:04:25 GMT) 🔥 via Firebase Hosting GitHub Action 🌎 Sign: dd1ffa0705acc6ef7d6db370e6bd6fc390e945ce |
plural-renovate
Bot
force-pushed
the
renovate/frontend/npm-vite-vulnerability
branch
from
December 20, 2023 20:13
519b1d6 to
b4d227b
Compare
plural-renovate
Bot
force-pushed
the
renovate/frontend/npm-vite-vulnerability
branch
from
January 20, 2024 05:01
b4d227b to
44957a9
Compare
plural-renovate
Bot
force-pushed
the
renovate/frontend/npm-vite-vulnerability
branch
from
March 5, 2024 19:50
44957a9 to
44be1ec
Compare
Contributor
Author
⚠ Artifact update problemRenovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is. ♻ Renovate will retry this branch, including artifacts, only when one of the following happens:
The artifact failure details are included below: File name: assets/yarn.lock |
plural-renovate
Bot
force-pushed
the
renovate/frontend/npm-vite-vulnerability
branch
16 times, most recently
from
March 13, 2024 15:49
f75d208 to
1fe2ba2
Compare
plural-renovate
Bot
force-pushed
the
renovate/frontend/npm-vite-vulnerability
branch
6 times, most recently
from
March 15, 2024 19:18
61336e8 to
1546986
Compare
plural-renovate
Bot
force-pushed
the
renovate/frontend/npm-vite-vulnerability
branch
4 times, most recently
from
April 3, 2024 13:29
d358270 to
1d96689
Compare
plural-renovate
Bot
force-pushed
the
renovate/frontend/npm-vite-vulnerability
branch
from
April 4, 2024 03:51
1d96689 to
617c778
Compare
plural-renovate
Bot
force-pushed
the
renovate/frontend/npm-vite-vulnerability
branch
17 times, most recently
from
April 11, 2024 12:55
c502d43 to
dc3f799
Compare
plural-renovate
Bot
force-pushed
the
renovate/frontend/npm-vite-vulnerability
branch
4 times, most recently
from
April 13, 2024 21:41
73c06cd to
5f89ca9
Compare
plural-renovate
Bot
force-pushed
the
renovate/frontend/npm-vite-vulnerability
branch
2 times, most recently
from
April 20, 2024 23:34
7c45202 to
094861e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
4.5.0->4.5.3GitHub 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).
CVE-2024-23331
Summary
Vite dev server option
server.fs.denycan 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.
Patches
Fixed in vite@5.0.12, vite@4.5.2, vite@3.2.8, vite@2.9.17
Details
Since
picomatchdefaults to case-sensitive glob matching, but the file server doesn't discriminate; a blacklist bypass is possible.See
picomatchusage, wherenocaseis defaulted tofalse: https://github.com/vitejs/vite/blob/v5.1.0-beta.1/packages/vite/src/node/server/index.ts#L632By requesting raw filesystem paths using augmented casing, the matcher derived from
config.server.fs.denyfails to block access to sensitive files.PoC
Setup
npm create vite@lateston a Standard Azure hosted Windows 10 instance.npm run dev -- --host 0.0.0.0custom.secretandproduction.pemvite.config.jswithReproduction
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.jscurl -s http://20.12.242.81:5173/@​fs/C:/Users/darbonzo/Desktop/vite-project/custom.sEcReTProof

Impact
Who
What
server.fs.denyare both discoverable, and accessibleCVE-2024-31207
Summary
Vite dev server option
server.fs.denydid not deny requests for patterns with directories. An example of such a pattern is/foo/**/*.Impact
Only apps setting a custom
server.fs.denythat includes a pattern with directories, and explicitly exposing the Vite dev server to the network (using--hostorserver.hostconfig option) are affected.Patches
Fixed in vite@5.2.6, vite@5.1.7, vite@5.0.13, vite@4.5.3, vite@3.2.10, vite@2.9.18
Details
server.fs.denyuses picomatch with the config of{ matchBase: true }. matchBase only matches the basename of the file, not the path due to a bug (https://github.com/micromatch/picomatch/issues/89). The vite config docs read like you should be able to set fs.deny to glob with picomatch. Vite also does not set{ dot: true }and that causes dotfiles not to be denied unless they are explicitly defined.Reproduction
Set fs.deny to
['**/.git/**']and then curl for/.git/config.matchBase: true, you can get any file under.git/(config, HEAD, etc).matchBase: false, you cannot get any file under.git/(config, HEAD, etc).Release Notes
vitejs/vite (vite)
v4.5.3Compare Source
Please refer to CHANGELOG.md for details.
v4.5.2Compare Source
Please refer to CHANGELOG.md for details.
v4.5.1Compare Source
Please refer to CHANGELOG.md for details.
Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ 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 Renovate Bot.