Sass version 1.10.0 introduces subtle yet impactful refinements compared to its predecessor, version 1.9.2, both being JavaScript implementations of the popular Sass stylesheet language. For developers, the core functionality remains consistent, providing a reliable way to compile Sass code into CSS. Both versions share the same foundational structure, license (MIT), and dependency on chokidar for file watching capabilities, which is crucial for automated Sass compilation during development. They are maintained by the same author and repository, ensuring continuity.
The key differences between the 2 versions lie in the details of their distribution packages. Version 1.10.0 comes with an unpackedSize of 688205 bytes, slightly larger than version 1.9.2's 687844 bytes, which may indicate minor additions, bug fixes, or internal adjustments. This small size difference is not expected to have a meaningful impact on performance or installation time. Moreover, version 1.10.0 incorporated changes that justified its release 5 days after version 1.9.2; this may imply stability improvement and minor refinement. For developers, the choice between the versions is largely influenced by package manager update policies and specific needs, as both offer similar core functionalities. Upgrading is recommended to leverage any potential bug fixes and refinements bundled within version 1.10.0. As a best practice, always consult the official Sass changelog for detailed release notes outlining those benefits.
All the vulnerabilities related to the version 1.10.0 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.