[Security] Bump esbuild, laravel-vite-plugin and vite
Bumps esbuild to 0.25.0 and updates ancestor dependencies esbuild, laravel-vite-plugin and vite. These dependencies need to be updated together.
Updates esbuild
from 0.20.2 to 0.25.0 This update includes a security fix.
Vulnerabilities fixed
esbuild enables any website to send any requests to the development server and read the response
Summary
esbuild allows any websites to send any request to the development server and read the response due to default CORS settings.
Details
esbuild sets
Access-Control-Allow-Origin: *
header to all requests, including the SSE connection, which allows any websites to send any request to the development server and read the response.https://github.com/evanw/esbuild/blob/df815ac27b84f8b34374c9182a93c94718f8a630/pkg/api/serve_other.go#L121
https://github.com/evanw/esbuild/blob/df815ac27b84f8b34374c9182a93c94718f8a630/pkg/api/serve_other.go#L363Attack scenario:
- The attacker serves a malicious web page (
http://malicious.example.com
).- The user accesses the malicious web page.
- The attacker sends a
fetch('http://127.0.0.1:8000/main.js')
request by JS in that malicious web page. This request is normally blocked by same-origin policy, but that's not the case for the reasons above.- The attacker gets the content of
http://127.0.0.1:8000/main.js
.In this scenario, I assumed that the attacker knows the URL of the bundle output file name. But the attacker can also get that information by
... (truncated)
Patched versions: 0.25.0
Affected versions: <= 0.24.2
Release notes
Sourced from esbuild's releases.
v0.25.0
This release deliberately contains backwards-incompatible changes. To avoid automatically picking up releases like this, you should either be pinning the exact version of
esbuild
in yourpackage.json
file (recommended) or be using a version range syntax that only accepts patch upgrades such as^0.24.0
or~0.24.0
. See npm's documentation about semver for more information.
Restrict access to esbuild's development server (GHSA-67mh-4wv8-2f99)
This change addresses esbuild's first security vulnerability report. Previously esbuild set the
Access-Control-Allow-Origin
header to*
to allow esbuild's development server to be flexible in how it's used for development. However, this allows the websites you visit to make HTTP requests to esbuild's local development server, which gives read-only access to your source code if the website were to fetch your source code's specific URL. You can read more information in the report.Starting with this release, CORS will now be disabled, and requests will now be denied if the host does not match the one provided to
--serve=
. The default host is0.0.0.0
, which refers to all of the IP addresses that represent the local machine (e.g. both127.0.0.1
and192.168.0.1
). If you want to customize anything about esbuild's development server, you can put a proxy in front of esbuild and modify the incoming and/or outgoing requests.In addition, the
serve()
API call has been changed to return an array ofhosts
instead of a singlehost
string. This makes it possible to determine all of the hosts that esbuild's development server will accept.Thanks to
@sapphi-red
for reporting this issue.Delete output files when a build fails in watch mode (#3643)
It has been requested for esbuild to delete files when a build fails in watch mode. Previously esbuild left the old files in place, which could cause people to not immediately realize that the most recent build failed. With this release, esbuild will now delete all output files if a rebuild fails. Fixing the build error and triggering another rebuild will restore all output files again.
Fix correctness issues with the CSS nesting transform (#3620, #3877, #3933, #3997, #4005, #4037, #4038)
This release fixes the following problems:
Naive expansion of CSS nesting can result in an exponential blow-up of generated CSS if each nesting level has multiple selectors. Previously esbuild sometimes collapsed individual nesting levels using
:is()
to limit expansion. However, this collapsing wasn't correct in some cases, so it has been removed to fix correctness issues./* Original code */ .parent { > .a, > .b1 > .b2 { color: red; } } /* Old output (with --supported:nesting=false) */ .parent > :is(.a, .b1 > .b2) { color: red; } /* New output (with --supported:nesting=false) */ .parent > .a, .parent > .b1 > .b2 { color: red; }
Thanks to
@tim-we
for working on a fix.The
&
CSS nesting selector can be repeated multiple times to increase CSS specificity. Previously esbuild ignored this possibility and incorrectly considered&&
to have the same specificity as&
. With this release, this should now work correctly:/* Original code (color should be red) */
... (truncated)
Changelog
Sourced from esbuild's changelog.
Changelog: 2024
This changelog documents all esbuild versions published in the year 2024 (versions 0.19.12 through 0.24.2).
0.24.2
Fix regression with
--define
andimport.meta
(#4010, #4012, #4013)The previous change in version 0.24.1 to use a more expression-like parser for
define
values to allow quoted property names introduced a regression that removed the ability to use--define:import.meta=...
. Even thoughimport
is normally a keyword that can't be used as an identifier, ES modules special-case theimport.meta
expression to behave like an identifier anyway. This change fixes the regression.This fix was contributed by
@sapphi-red
.0.24.1
Allow
es2024
as a target intsconfig.json
(#4004)TypeScript recently added
es2024
as a compilation target, so esbuild now supports this in thetarget
field oftsconfig.json
files, such as in the following configuration file:{ "compilerOptions": { "target": "ES2024" } }
As a reminder, the only thing that esbuild uses this field for is determining whether or not to use legacy TypeScript behavior for class fields. You can read more in the documentation.
This fix was contributed by
@billyjanitsch
.Allow automatic semicolon insertion after
get
/set
This change fixes a grammar bug in the parser that incorrectly treated the following code as a syntax error:
class Foo { get *x() {} set *y() {} }
The above code will be considered valid starting with this release. This change to esbuild follows a similar change to TypeScript which will allow this syntax starting with TypeScript 5.7.
Allow quoted property names in
--define
and--pure
(#4008)The
define
andpure
API options now accept identifier expressions containing quoted property names. Previously all identifiers in the identifier expression had to be bare identifiers. This change now makes--define
and--pure
consistent with--global-name
, which already supported quoted property names. For example, the following is now possible:
... (truncated)
Commits
-
e9174d6
publish 0.25.0 to npm -
c27dbeb
fixhosts
inplugin-tests.js
-
6794f60
fixhosts
innode-unref-tests.js
-
de85afd
Merge commit from fork -
da1de1b
fix #4065: bitwise operators can return bigints -
f4e9d19
switch case liveness:default
is always last -
7aa47c3
fix #4028: minify live/deadswitch
cases better -
22ecd30
minify: more constant folding for strict equality -
4cdf03c
fix #4053: reordering of.tsx
innode_modules
-
dc71977
fix #3692:0
now picks a random ephemeral port - Additional commits viewable in compare view
Updates laravel-vite-plugin
from 1.0.2 to 1.2.0
Release notes
Sourced from laravel-vite-plugin's releases.
v1.2.0
- [1.x] Fix Invalid URL issue with Vite 6.0.9 by
@batinmustu
in laravel/vite-plugin#317- [1.x] Add default CORS origins by
@timacdonald
in laravel/vite-plugin#318v1.1.1
- [1.1] Fix dependency issue with Vite 5 by
@jessarcher
in laravel/vite-plugin#313v1.1.0
- Upgrade to Vite 6 by
@timacdonald
in laravel/vite-plugin#310v1.0.6
- Replace dead link in Security Policy by
@Jubeki
in laravel/vite-plugin#300- Look for certificates in valet linux config directory by
@jameshulse
in laravel/vite-plugin#307v1.0.5
- TypeScript: define entrypoints using object by
@tylerlwsmith
in laravel/vite-plugin#298v1.0.4
- Include base in hotFile without modifying server.origin replacement by
@danielztolnai
in laravel/vite-plugin#296v1.0.3
- Append base to hot file by
@timacdonald
in laravel/vite-plugin#290- Support Laravel Herd for windows by
@mozex
in laravel/vite-plugin#293
Changelog
Sourced from laravel-vite-plugin's changelog.
v1.2.0 - 2025-01-21
- [1.x] Fix Invalid URL issue with Vite 6.0.9 by
@batinmustu
in laravel/vite-plugin#317- [1.x] Add default CORS origins by
@timacdonald
in laravel/vite-plugin#318v1.1.1 - 2024-12-03
- [1.1] Fix dependency issue with Vite 5 by
@jessarcher
in laravel/vite-plugin#313v1.1.0 - 2024-12-02
- Upgrade to Vite 6 by
@timacdonald
in laravel/vite-plugin#310v1.0.6 - 2024-11-12
- Replace dead link in Security Policy by
@Jubeki
in laravel/vite-plugin#300- Look for certificates in valet linux config directory by
@jameshulse
in laravel/vite-plugin#307v1.0.5 - 2024-07-09
- TypeScript: define entrypoints using object by
@tylerlwsmith
in laravel/vite-plugin#298v1.0.4 - 2024-05-17
- Include base in hotFile without modifying server.origin replacement by
@danielztolnai
in laravel/vite-plugin#296v1.0.3 - 2024-05-16
- Append base to hot file by
@timacdonald
in laravel/vite-plugin#290- Support Laravel Herd for windows by
@mozex
in laravel/vite-plugin#293
Commits
-
0201f3f
1.2.0 -
b3a3abf
[1.x] Add default CORS origins (#318) -
1501f5c
[1.x] Fix Invalid URL issue with Vite 6.0.9 (#317) -
e57a940
Update CHANGELOG -
b91e205
1.1.1 -
6515574
Fix dependency issue with Vite 5 (#313) -
44edafa
Update CHANGELOG -
aacee1d
1.1.0 -
492c068
Upgrade to Vite 6 (#310) -
81beac4
Update CHANGELOG - Additional commits viewable in compare view
Updates vite
from 5.2.11 to 6.2.0
Release notes
Sourced from vite's releases.
create-vite@6.2.0
Please refer to CHANGELOG.md for details.
create-vite@6.1.1
Please refer to CHANGELOG.md for details.
create-vite@6.1.0
Please refer to CHANGELOG.md for details.
create-vite@6.0.1
Please refer to CHANGELOG.md for details.
create-vite@6.0.0
Please refer to CHANGELOG.md for details.
create-vite@5.5.5
Please refer to CHANGELOG.md for details.
create-vite@5.5.4
Please refer to CHANGELOG.md for details.
create-vite@5.5.3
Please refer to CHANGELOG.md for details.
create-vite@5.5.2
Please refer to CHANGELOG.md for details.
create-vite@5.5.1
Please refer to CHANGELOG.md for details.
create-vite@5.5.0
Please refer to CHANGELOG.md for details.
create-vite@5.4.0
Please refer to CHANGELOG.md for details.
create-vite@5.3.0
Please refer to CHANGELOG.md for details.
Changelog
Sourced from vite's changelog.
6.2.0 (2025-02-25)
- fix(deps): update all non-major dependencies (#19501) (c94c9e0), closes #19501
- fix(worker): string interpolation in dynamic worker options (#19476) (07091a1), closes #19476
- chore: use unicode cross icon instead of x (#19497) (5c70296), closes #19497
6.2.0-beta.1 (2025-02-21)
- fix(css): temporary add
?.
afterthis.getModuleInfo
invite:css-post
(#19478) (12b0b8a), closes #194786.2.0-beta.0 (2025-02-21)
- feat: show
mode
on server start and add env debugger (#18808) (c575b82), closes #18808- feat: use host url to open browser (#19414) (f6926ca), closes #19414
- feat(css): allow scoping css to importers exports (#19418) (3ebd838), closes #19418
- chore: bump esbuild to 0.25.0 (#19389) (73987f2), closes #19389
6.1.1 (2025-02-19)
- fix: ensure
.[cm]?[tj]sx?
static assets are JS mime (#19453) (e7ba55e), closes #19453- fix: ignore
*.ipv4
address in cert (#19416) (973283b), closes #19416- fix(css): run rewrite plugin if postcss plugin exists (#19371) (bcdb51a), closes #19371
- fix(deps): bump tsconfck (#19375) (746a583), closes #19375
- fix(deps): update all non-major dependencies (#19392) (60456a5), closes #19392
- fix(deps): update all non-major dependencies (#19440) (ccac73d), closes #19440
- fix(html): ignore malformed src attrs (#19397) (aff7812), closes #19397
- fix(worker): fix web worker type detection (#19462) (edc65ea), closes #19462
- refactor: remove custom .jxl mime (#19457) (0c85464), closes #19457
- feat: add support for injecting debug IDs (#18763) (0ff556a), closes #18763
- chore: update 6.1.0 changelog (#19363) (fa7c211), closes #19363
6.1.0 (2025-02-05)
Features
- feat: show hosts in cert in CLI (#19317) (a5e306f), closes #19317
- feat: support for env var for defining allowed hosts (#19325) (4d88f6c), closes #19325
- feat: use native runtime to import the config (#19178) (7c2a794), closes #19178
- feat: print
port
in the logged error message after failed WS connection withEADDRINUSE
(#19212) (14027b0), closes #19212- perf(css): only run postcss when needed (#19061) (30194fa), closes #19061
- feat: add support for
.jxl
(#18855) (57b397c), closes #18855
... (truncated)
Commits
-
fa7c211
chore: update 6.1.0 changelog (#19363) -
051370a
release: v6.1.0 -
6e0e3c0
refactor: deprecatevite optimize
command (#19348) -
7c2a794
feat: use native runtime to import the config (#19178) -
fcd5785
fix(build): fix stale build manifest on watch rebuild (#19361) -
a5e306f
feat: show hosts in cert in CLI (#19317) -
4d88f6c
feat: support for env var for defining allowed hosts (#19325) -
fdb36e0
fix: avoid builtStart during vite optimize (#19356) -
5ce7443
release: v6.1.0-beta.2 -
e7b4ba3
fix(html): fix css disorder when building multiple entry html (#19143) - Additional commits viewable in compare view