Webpack version 4.39.3 represents a minor update over its predecessor, version 4.39.2, primarily focusing on internal improvements and bug fixes rather than introducing substantial new features for developers. Both versions serve as powerful module bundlers, designed to package JavaScript applications and their dependencies for efficient browser deployment. They share the same core functionality, enabling code splitting, loader support for various file types (like CSS, JSON, and JSX), and optimizations for production builds.
The dependency lists for both versions are virtually identical, indicating no significant updates to core dependencies. This suggests the focus of the 4.39.3 release might have been on addressing smaller issues or improving performance within the existing dependency ecosystem. Developers will likely experience similar behavior and performance across both versions. The most prominent difference lies in the dist section, especially the unpackedSize, where version 4.39.3 displays a slightly larger number than 4.39.2. This increase in size could be indicative of minor code additions, potentially to address bugs or edge cases, or even changes in file compression during packaging. For users deciding between the two, the upgrade to 4.39.3 is recommended for benefiting from potential stability improvements and minor optimizations.
All the vulnerabilities related to the version 4.39.3 of the package
Regular Expression Denial of Service (ReDoS) in micromatch
The NPM package micromatch
prior to version 4.0.8 is vulnerable to Regular Expression Denial of Service (ReDoS). The vulnerability occurs in micromatch.braces()
in index.js
because the pattern .*
will greedily match anything. By passing a malicious payload, the pattern matching will keep backtracking to the input while it doesn't find the closing bracket. As the input size increases, the consumption time will also increase until it causes the application to hang or slow down. There was a merged fix but further testing shows the issue persisted prior to https://github.com/micromatch/micromatch/pull/266. This issue should be mitigated by using a safe pattern that won't start backtracking the regular expression due to greedy matching.
Uncontrolled resource consumption in braces
The NPM package braces
fails to limit the number of characters it can handle, which could lead to Memory Exhaustion. In lib/parse.js,
if a malicious user sends "imbalanced braces" as input, the parsing will enter a loop, which will cause the program to start allocating heap memory without freeing it at any moment of the loop. Eventually, the JavaScript heap limit is reached, and the program will crash.