Webpack 4.41.1 and 4.41.0 are very similar versions of this popular JavaScript module bundler, aimed at streamlining web development workflows. Examining their metadata reveals that the core functionality and dependency structure remain largely consistent, with almost identical descriptions, main dependencies like ajv, acorn, tapable, and development dependencies like eslint, jest, and various loaders. Both versions share the same license, repository, and author, indicating a continuous development process under the same ownership and principles.
The key differences lie primarily in their release dates and potentially in minor bug fixes or performance improvements. Version 4.41.1 was released later, on October 11, 2019, while 4.41.0 came out on September 24, 2019. The unpacked size is also slightly different, with version 4.41.1 being marginally larger.
For developers, this suggests that upgrading from 4.41.0 to 4.41.1 should be a relatively straightforward process, unlikely to introduce significant breaking changes. The update likely addresses specific issues identified in the previous release, potentially enhancing stability or resolving edge-case bugs. While the core feature set remains the same, staying up-to-date with the latest patch versions is generally recommended to benefit from the most refined and reliable experience webpack has to offer, ensuring optimal compatibility and performance in modern web projects. The consistent dependency versions also minimize the risk of dependency conflicts during the update.
All the vulnerabilities related to the version 4.41.1 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.