Sass version 1.17.2 represents a subtle but potentially important update to the popular Dart Sass implementation, succeeding version 1.17.1. Both versions offer a pure JavaScript solution for compiling Sass stylesheets, making them readily usable in a wide range of JavaScript-based projects and build pipelines without native dependencies. Key features and core functionality remain consistent between the versions, with both relying on the chokidar library for file watching capabilities often used during development.
The license remains under the permissive MIT license. Both share the same origin and authorship, attributed to Natalie Weizenbaum. The GitHub repository listed confirms continuous development. However, a closer look reveals a notable difference in the unpacked size after installation. Version 1.17.2 shows an unpacked size of 668852 bytes, slightly larger than version 1.17.1's 668445 bytes. This suggests the newer version incorporates minor improvements, bug fixes, or potentially very small additions to the codebase. Developers upgrading should check the changelog for detailed information related to the specific changes in this version; while the size difference is minor, it could impact specific use cases or edge cases addressed by the update. Finally, version 1.17.2 was released on February 23, 2019, a few days after version 1.17.1 which came out on February 20, 2019, indicating active maintenance of the project.
All the vulnerabilities related to the version 1.17.2 of the package
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.
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.