chore(monorepo): update pnpm.catalog.default webpack to ^5.106.1 [security]#208
chore(monorepo): update pnpm.catalog.default webpack to ^5.106.1 [security]#208renovate[bot] wants to merge 1 commit intomainfrom
Conversation
Branch automerge failureThis PR was configured for branch automerge. However, this is not possible, so it has been raised as a PR instead. |
|
|
Overall Grade |
Security Reliability Complexity Hygiene |
Code Review Summary
| Analyzer | Status | Updated (UTC) | Details |
|---|---|---|---|
| JavaScript | Mar 26, 2026 9:01p.m. | Review ↗ | |
| Shell | Mar 26, 2026 9:01p.m. | Review ↗ |
5a17899 to
3d46fe8
Compare
3d46fe8 to
ec73d92
Compare
ec73d92 to
2c09d49
Compare
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
2c09d49 to
b2d5813
Compare
b2d5813 to
f8e7705
Compare
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
f8e7705 to
a99b711
Compare
a99b711 to
9de95ed
Compare
9de95ed to
87b107b
Compare
87b107b to
dba3e1e
Compare
dba3e1e to
8a41fc8
Compare
8251229 to
a127ddf
Compare
a127ddf to
389d9f4
Compare
389d9f4 to
e958d28
Compare
e958d28 to
fa5481a
Compare
Pull request was closed
438605d to
b2afe26
Compare
b2afe26 to
dce06da
Compare
dce06da to
46a2c11
Compare
46a2c11 to
7307f35
Compare
7307f35 to
2c45c07
Compare
This PR contains the following updates:
^5.101.3→^5.106.1GitHub Vulnerability Alerts
CVE-2025-68458
Summary
When
experiments.buildHttpis enabled, webpack’s HTTP(S) resolver (HttpUriPlugin) can be bypassed to fetch resources from hosts outsideallowedUrisby using crafted URLs that include userinfo (username:password@host). IfallowedUrisenforcement relies on a raw string prefix check (e.g.,uri.startsWith(allowed)), a URL that looks allow-listed can pass validation while the actual network request is sent to a different authority/host after URL parsing. This is a policy/allow-list bypass that enables build-time SSRF behavior (outbound requests from the build machine to internal-only endpoints, depending on network access) and untrusted content inclusion (the fetched response is treated as module source and bundled). In my reproduction, the internal response was also persisted in the buildHttp cache.Reproduced on:
Details
Root cause (high level):
allowedUrisvalidation can be performed on the raw URI string, while the actual request destination is determined later by parsing the URL (e.g.,new URL(uri)), which interprets the authority as the part after@.Example crafted URL:
http://127.0.0.1:9000@​127.0.0.1:9100/secret.jsIf the allow-list is
["http://127.0.0.1:9000"], then:crafted.startsWith("http://127.0.0.1:9000")→ truenew URL()will contact):origin→http://127.0.0.1:9100(host/port after@)As a result, webpack fetches
http://127.0.0.1:9100/secret.jseven thoughallowedUrisonly includedhttp://127.0.0.1:9000.Evidence from reproduction:
[internal] 200 /secret.js served (...)(observed multiple times)PoC
This PoC is intentionally constrained to 127.0.0.1 (localhost-only “internal service”) to demonstrate SSRF behavior safely.
1) Setup
2) Create server.js
2) Create server.js
4) Run
Terminal A:
Terminal B:
5) Expected vs Actual
Expected: The import should be blocked because the effective request destination is http://127.0.0.1:9100/secret.js, which is outside allowedUris (only http://127.0.0.1:9000 is allow-listed).
Actual: The crafted URL passes the allow-list prefix validation, webpack fetches the internal-only resource on port 9100 (confirmed by server logs), and the secret marker appears in the bundle and buildHttp cache.
Impact
Vulnerability class: Policy/allow-list bypass leading to build-time SSRF behavior and untrusted content inclusion in build outputs.
Who is impacted: Projects that enable experiments.buildHttp and rely on allowedUris as a security boundary. If an attacker can influence the imported HTTP(S) specifier (e.g., via source contribution, dependency manipulation, or configuration), they can cause outbound requests from the build environment to endpoints outside the allow-list (including internal-only services, subject to network reachability). The fetched response can be treated as module source and included in build outputs and persisted in the buildHttp cache, increasing the risk of leakage or supply-chain contamination.
Severity
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:NCVE-2025-68157
Summary
When
experiments.buildHttpis enabled, webpack’s HTTP(S) resolver (HttpUriPlugin) enforcesallowedUrisonly for the initial URL, but does not re-validateallowedUrisafter following HTTP 30x redirects. As a result, an import that appears restricted to a trusted allow-list can be redirected to HTTP(S) URLs outside the allow-list. This is a policy/allow-list bypass that enables build-time SSRF behavior (requests from the build machine to internal-only endpoints, depending on network access) and untrusted content inclusion in build outputs (redirected content is treated as module source and bundled). In my reproduction, the internal response is also persisted in the buildHttp cache.Details
In the HTTP scheme resolver, the allow-list check (
allowedUris) is performed when metadata/info is created for the original request (viagetInfo()), but the content-fetch path follows redirects by resolving theLocationURL without re-checking whether the redirected URL is withinallowedUris.Practical consequence: if an “allowed” host/path can return a 302 (or has an open redirect), it can point to an external URL or an internal-only URL (SSRF). The redirected response is consumed as module content, bundled, and can be cached. If the redirect target is attacker-controlled, this can potentially result in attacker-controlled JavaScript being bundled and later executed when the resulting bundle runs.
Figure 1 (evidence screenshot): left pane shows the allowed host issuing a 302 redirect to
http://127.0.0.1:9100/secret.js; right pane shows the build output confirming allow-list bypass and that the secret appears in the bundle and buildHttp cache.PoC
This PoC is intentionally constrained to 127.0.0.1 (localhost-only “internal service”) to demonstrate SSRF behavior safely.
1) Setup
2) Create server.js
3) Create attacker.js
4) Run
Terminal A:
Terminal B:
5) Expected
Expected: Redirect target should be rejected if not in allowedUris (only http://127.0.0.1:9000/ is allowed).
Impact
Vulnerability class: Policy/allow-list bypass leading to SSRF behavior at build time and untrusted content inclusion in build outputs (and potentially bundling of attacker-controlled JavaScript if the redirect target is attacker-controlled).
Who is impacted: Projects that enable experiments.buildHttp and rely on allowedUris as a security boundary (to restrict remote module fetching). In such environments, an attacker who can influence imported URLs (e.g., via source contribution, dependency manipulation, or configuration) and can cause an allowed endpoint to redirect can:
trigger network requests from the build machine to internal-only services (SSRF behavior),
cause content from outside the allow-list to be bundled into build outputs,
and cause fetched responses to persist in build artifacts (e.g., buildHttp cache), increasing the risk of later exfiltration.
Severity
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:NRelease Notes
webpack/webpack (webpack)
v5.106.1Compare Source
Patch Changes
Fix two ES5-environment regressions in the anonymous default export
.namefix-up: the generated code referenced an undeclared__WEBPACK_DEFAULT_EXPORT__binding causingReferenceError, and usedReflect.definePropertywhich is not available in pre-ES2015 runtimes. The fix-up now references the real assignment target and usesObject.defineProperty/Object.getOwnPropertyDescriptor. (by @xiaoxiaojx in #20796)Prevent
!importantfrom being renamed as a local identifier in CSS modules. (by @xiaoxiaojx in #20798)Use compiler context instead of module context for CSS modules local ident hashing to avoid hash collisions when files with the same name exist in different directories. (by @xiaoxiaojx in #20799)
v5.106.0Compare Source
Minor Changes
Add
exportType: "style"for CSS modules to inject styles into DOM via HTMLStyleElement, similar to style-loader functionality. (by @xiaoxiaojx in #20579)Add
contextoption support for VirtualUrlPlugin (by @xiaoxiaojx in #20449)Generate different
CssModuleinstances for differentexportTypevalues. (by @xiaoxiaojx in #20590)Added the
localIdentHashFunctionoption to configure the hash function to be used for hashing. (by @alexander-akait in #20694)Additionally, the
localIdentNameoption can now be a function.Added support for destructuring assignment
requirein cjs, allowing for tree shaking. (by @ahabhgk in #20548)Added the
validateoption to enable/disable validation in webpack/plugins/loaders, also implemented API to make it inside plugins. (by @xiaoxiaojx in #20275)Added
sourcesupport for async WASM modules. (by @magic-akari in #20364)Patch Changes
Add a static getSourceBasicTypes method to the Module class to prevent errors across multiple versions. (by @xiaoxiaojx in #20614)
Included fragment groups in the conflicting order warning for CSS. (by @aryanraj45 in #20660)
Avoid rendering unused top-level
__webpack_exports__declaration when output ECMA module library. (by @hai-x in #20669)Fixed resolving in CSS modules. (by @alexander-akait in #20771)
Allow external modules place in async chunks when output ECMA module. (by @hai-x in #20662)
Implement
deprecateflag in schema for better TypeScript support to show which options are already deprecated by the configuration (by @bjohansebas in #20432)Set
.nameto"default"for anonymous default export functions and classes per ES spec (by @xiaoxiaojx in #20773)Hash entry chunks after runtime chunks to prevent stale content hash references in watch mode (by @xiaoxiaojx in #20724)
Fix multiple bugs and optimizations in CSS modules: correct third code point position in walkCssTokens number detection, fix multiline CSS comment regex, fix swapped :import/:export error message, fix comma callback incorrectly popping balanced stack, fix cache comparison missing array length check, fix match.index mutation side effect, move publicPathAutoRegex to module scope, precompute merged callbacks in consumeUntil, simplify redundant ternary in CssGenerator, fix typo GRID_TEMPLATE_ARES, remove duplicate grid-column-start, and merge duplicate getCompilationHooks calls. (by @xiaoxiaojx in #20648)
Correct url() path resolution and preserve source maps for non-link CSS export types (style, text, css-style-sheet) (by @xiaoxiaojx in #20717)
Emit error when proxy server returns non-200 status code in HttpUriPlugin instead of silently failing. (by @xiaoxiaojx in #20646)
import.metaas standalone expression now returns a complete object with known properties (url,webpack,main,env) instead of an empty object({}), and hoists it as a module-level variable to ensureimport.meta === import.metaidentity. Inpreserve-unknownmode (ESM output), the hoisted object merges runtimeimport.metaproperties viaObject.assign. (by @xiaoxiaojx in #20658)Fix incorrect condition in FileSystemInfo that always evaluated to false, preventing trailing slash removal from directory paths during build dependency resolution. (by @xiaoxiaojx in #20649)
fix: VirtualUrlPlugin absolute path virtual module IDs getting concatenated with compiler context (by @xiaoxiaojx in #20656)
When a virtual module ID is an absolute path (e.g.
virtual:C:/project/user.js), the auto-derived context was incorrectly joined withcompiler.context, producing a concatenated path likeC:\cwd\C:\project. Now absolute-path contexts are used directly.All deprecated methods and options now have
@deprecatedflag in types. (by @alexander-akait in #20707)Fix
CompatibilityPluginto correctly rename__webpack_require__when it appears as an arrow function parameter (e.g.(__webpack_module, __webpack_exports, __webpack_require__) => { ... }). (by @hai-x in #20661)v5.105.4Compare Source
Patch Changes
Add
Module.getSourceBasicTypesto distinguish basic source types and clarify how modules with non-basic source types likeremotestill produce JavaScript output. (by @xiaoxiaojx in #20546)Handle
createRequirein expressions. (by @alexander-akait in #20549)Fixed types for multi stats. (by @alexander-akait in #20556)
Remove empty needless js output for normal css module. (by @JSerFeng in #20162)
Update
enhanced-resolveto support new features fortsconfig.json. (by @alexander-akait in #20555)Narrows export presence guard detection to explicit existence checks on namespace imports only, i.e. patterns like "x" in ns. (by @hai-x in #20561)
v5.105.3Compare Source
Patch Changes
Context modules now handle rejections correctly. (by @alexander-akait in #20455)
Only mark asset modules as side-effect-free when
experimental.futureDefaultsis set to true, so asset-copying use cases (e.g.import "./x.png") won’t break unless the option is enabled. (by @hai-x in #20535)Add the missing webpack_exports declaration in certain cases when bundling a JS entry together with non-JS entries (e.g., CSS entry or asset module entry). (by @hai-x in #20463)
Fixed HMR failure for CSS modules with @import when exportType !== "link". When exportType is not "link", CSS modules now behave like JavaScript modules and don't require special HMR handling, allowing @import CSS to work correctly during hot module replacement. (by @xiaoxiaojx in #20514)
Fixed an issue where empty JavaScript files were generated for CSS-only entry points. The code now correctly checks if entry modules have JavaScript source types before determining whether to generate a JS file. (by @xiaoxiaojx in #20454)
Do not crash when a referenced chunk is not a runtime chunk. (by @alexander-akait in #20461)
Fix some types. (by @alexander-akait in #20412)
Ensure that missing module error are thrown after the interception handler (if present), allowing module interception to customize the module factory. (by @hai-x in #20510)
Added
createRequiresupport for ECMA modules. (by @stefanbinoj in #20497)Added category for CJS reexport dependency to fix issues with ECMA modules. (by @hai-x in #20444)
Implement immutable bytes for
bytesimport attribute to match tc39 spec. (by @alexander-akait in #20481)Fixed deterministic search for graph roots regardless of edge order. (by @veeceey in #20452)
v5.105.2Compare Source
Patch Changes
WebpackPluginInstancetype regression. (by @alexander-akait in #20440)v5.105.1Compare Source
Patch Changes
Fix VirtualUrlPlugin Windows compatibility by sanitizing cache keys and filenames. Cache keys now use
toSafePathto replace colons (:) with double underscores (__) and sanitize other invalid characters, ensuring compatibility with Windows filesystem restrictions. (by @xiaoxiaojx in #20424)Revert part of the createRequire generation behavior for
require("node:...")to keep compatibility with those modules exports, e.g.const EventEmitter = require("node:events");. (by @hai-x in #20433)Skip guard collection when exports-presence mode is disabled to improve parsing performance. (by @hai-x in #20433)
v5.105.0Compare Source
Minor Changes
Allow resolving worker module by export condition name when using
new Worker()(by @hai-x in #20353)Detect conditional imports to avoid compile-time linking errors for non-existent exports. (by @hai-x in #20320)
Added the
tsconfigoption for theresolveroptions (replacement fortsconfig-paths-webpack-plugin). Can befalse(disabled),true(use the defaulttsconfig.jsonfile to search for it), a string path totsconfig.json, or an object withconfigFileandreferencesoptions. (by @alexander-akait in #20400)Support
import.defer()for context modules. (by @ahabhgk in #20399)Added support for array values to the
devtooloption. (by @hai-x in #20191)Improve rendering node built-in modules for ECMA module output. (by @hai-x in #20255)
Unknown import.meta properties are now determined at runtime instead of being statically analyzed at compile time. (by @xiaoxiaojx in #20312)
Patch Changes
Fixed ESM default export handling for
.mjsfiles in Module Federation (by @y-okt in #20189)Optimized
import.meta.envhandling in destructuring assignments by using cached stringified environment definitions. (by @xiaoxiaojx in #20313)Respect the
stats.errorStackoption in stats output. (by @samarthsinh2660 in #20258)Fixed a bug where declaring a
modulevariable in module scope would conflict with the defaultmoduleArgument. (by @xiaoxiaojx in #20265)Fix VirtualUrlPlugin to set resourceData.context for proper module resolution. Previously, when context was not set, it would fallback to the virtual scheme path (e.g.,
virtual:routes), which is not a valid filesystem path, causing subsequent resolve operations to fail. (by @xiaoxiaojx in #20390)Fixed Worker self-import handling to support various URL patterns (e.g.,
import.meta.url,new URL(import.meta.url),new URL(import.meta.url, import.meta.url),new URL("./index.js", import.meta.url)). Workers that resolve to the same module are now properly deduplicated, regardless of the URL syntax used. (by @xiaoxiaojx in #20381)Reuse the same async entrypoint for the same Worker URL within a module to avoid circular dependency warnings when multiple Workers reference the same resource. (by @xiaoxiaojx in #20345)
Fixed a bug where a self-referencing dependency would have an unused export name when imported inside a web worker. (by @samarthsinh2660 in #20251)
Fix missing export generation when concatenated modules in different chunks share the same runtime in module library bundles. (by @hai-x in #20346)
Fixed
import.meta.env.xxxbehavior: when accessing a non-existent property, it now returns empty object instead of full object at runtime. (by @xiaoxiaojx in #20289)Improved parsing error reporting by adding a link to the loader documentation. (by @gaurav10gg in #20244)
Fix typescript types. (by @alexander-akait in #20305)
Add declaration for unused harmony import specifier. (by @hai-x in #20286)
Fix compressibility of modules while retaining portability. (by @dmichon-msft in #20287)
Optimize source map generation: only include
ignoreListproperty when it has content, avoiding empty arrays in source maps. (by @xiaoxiaojx in #20319)Preserve star exports for dependencies in ECMA module output. (by @hai-x in #20293)
Consider asset modulem to be side-effect free. (by @hai-x in #20352)
Avoid generating JavaScript modules for CSS exports that are not used, reducing unnecessary output and bundle size. (by @xiaoxiaojx in #20337)
v5.104.1Compare Source
Patch Changes
2efd21b: Reexports runtime calculation should not accessing WEBPACK_IMPORT_KEY decl with var.c510070: Fixed a user information bypass vulnerability in the HttpUriPlugin plugin.v5.104.0Compare Source
Minor Changes
d3dd841: Use method shorthand to render module content in__webpack_modules__object.d3dd841: Enhanceimport.meta.envto support object access.4baab4e: Optimize dependency sorting in updateParent: sort each module only once by deferring to finishUpdateParent(), and reduce traversal count in sortWithSourceOrder by caching WeakMap values upfront.04cd530: Handle more at-rules for CSS modules.cafae23: Added options to control the renaming of at-rules and various identifiers in CSS modules.d3dd841: Addedbase64url,base62,base58,base52,base49,base36,base32andbase25digests.5983843: Provide a stable runtime function variable__webpack_global__.d3dd841: ImprovedlocalIdentNamehashing for CSS.Patch Changes
22c48fb: Added module existence check for informative error message in development mode.50689e1: Use the fully qualified class name (or export name) for[fullhash]placeholder in CSS modules.d3dd841: Support universal lazy compilation.d3dd841: Fixed module library export definitions when multiple runtimes.d3dd841: Fixed CSS nesting and CSS custom properties parsing.d3dd841: Don't write fragment from URL to filename and apply fragment to module URL.aab1da9: Fixed bugs forcss/globaltype.d3dd841: Compatibilityimport.meta.filenameandimport.meta.dirnamewithevaldevtools.d3dd841: Handle nested__webpack_require__.728ddb7: The speed of identifier parsing has been improved.0f8b31b: Improve types.d3dd841: Don't corruptdebugIdinjection whenhidden-source-mapis used.2179fdb: Re-validate HttpUriPlugin redirects against allowedUris, restrict to http(s) and add a conservative redirect limit to prevent SSRF and untrusted content inclusion. Redirects failing policy are rejected before caching/lockfile writes.d3dd841: SerializeHookWebpackError.d3dd841: Added ability to use built-in properties in dotenv and define plugin.3c4319f: Optimizing the regular expression character class by specifying ranges for runtime code.d3dd841: Reduce collision for local indent name in CSS.d3dd841: Remove CSS link tags when CSS imports are removed.v5.103.0Compare Source
Features
DotenvPluginand top leveldotenvoption to enable this pluginWebpackManifestPluginignoreListoption in devtool pluginsimport.meta.envsupport for environment variablesimport.meta.dirnameandimport.meta.filenameimport.defer()for statistical pathimport file from "./file.json" with { type: "json" }__dirname/__filename/import.meta.dirname/import.meta.filenamefor universal targetexportTypeoption withlink(by default), "text" andcss-style-sheetvaluescomposespropertiesFixes
dependOnchunk must be loaded before the common chunkglobalThissupported__dirnameand__filenamefor ES modules__webpack_export__and__webpack_require__in already bundled codehashDigesttypev5.102.1Compare Source
Fixes
extendswithenvforbrowserslistJSONPfragment format for web workers.browserslist.commonjsexternals forSystemJSformat.import.metawarning messages to be more clear when used directly.v5.102.0Compare Source
Features
import file from "./file.ext" with { type: "bytes" }to get the content asUint8Array(look at example)import file from "./file.ext" with { type: "text" }to get the content as text (look at example)snapshot.contextModuleto configure snapshots options for context modulesextractSourceMapoption to implement the capabilities of loading source maps by comment, you don't needsource-map-loader(look at example)topLevelAwaitexperiment is now stable (you can removeexperiments.topLevelAwaitfrom yourwebpack.config.js)layersexperiment is now stable (you can removeexperiments.layersfrom yourwebpack.config.js)Fixes
thisexportstimeoutattribute of script tages-lexerformjsfiles for build dependencies__non_webpack_require__for ES moduleschunk.auxiliaryFilescreateRequireonly when output is ES module and target is nodePerformance Improvements
Configuration
📅 Schedule: (in timezone America/New_York)
🚦 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 these updates again.
This PR was generated by Mend Renovate. View the repository job log.