Babel preset stage-3 versions 6.16.0 and 6.11.0 both serve as presets for Babel, the popular JavaScript compiler, enabling support for ECMAScript stage-3 features. This means developers can use cutting-edge language features that are on track to become standardized, enhancing productivity and code expressiveness. Both versions include essential dependencies like babel-plugin-syntax-trailing-function-commas which allows trailing commas in function parameter lists and calls, improving code clarity and reducing diff noise. They also bundle babel-plugin-transform-exponentiation-operator, providing support for the ** operator for exponentiation, making mathematical expressions more concise. Furthermore, they both have babel-plugin-transform-async-to-generator as a dependency which transforms async functions to generator functions.
The key difference lies within the babel-plugin-transform-async-to-generator dependency. Version 6.16.0 updates to babel-plugin-transform-async-to-generator to version ^6.16.0 from ^6.3.13 in version 6.11.0. This indicates under-the-hood improvements and possible bug fixes or performance enhancements in async to generator transform. Developers upgrading from 6.11.0 to 6.16.0 should see seamless compatibility with existing code while potentially benefiting from these enhanced transformations. The upgrade ensures your code leverages the most up-to-date tooling for modern JavaScript syntax. Upgrading to 6.16.0 is generally recommended to stay current with the Babel ecosystem and benefit from the latest improvements and updates.
All the vulnerabilities related to the version 6.16.0 of the package
Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code
Using Babel to compile code that was specifically crafted by an attacker can lead to arbitrary code execution during compilation, when using plugins that rely on the path.evaluate()
or path.evaluateTruthy()
internal Babel methods.
Known affected plugins are:
@babel/plugin-transform-runtime
@babel/preset-env
when using its useBuiltIns
option@babel/helper-define-polyfill-provider
, such as babel-plugin-polyfill-corejs3
, babel-plugin-polyfill-corejs2
, babel-plugin-polyfill-es-shims
, babel-plugin-polyfill-regenerator
No other plugins under the @babel/
namespace are impacted, but third-party plugins might be.
Users that only compile trusted code are not impacted.
The vulnerability has been fixed in @babel/traverse@7.23.2
.
Babel 6 does not receive security fixes anymore (see Babel's security policy), hence there is no patch planned for babel-traverse@6
.
@babel/traverse
to v7.23.2 or higher. You can do this by deleting it from your package manager's lockfile and re-installing the dependencies. @babel/core
>=7.23.2 will automatically pull in a non-vulnerable version.@babel/traverse
and are using one of the affected packages mentioned above, upgrade them to their latest version to avoid triggering the vulnerable code path in affected @babel/traverse
versions:
@babel/plugin-transform-runtime
v7.23.2@babel/preset-env
v7.23.2@babel/helper-define-polyfill-provider
v0.4.3babel-plugin-polyfill-corejs2
v0.4.6babel-plugin-polyfill-corejs3
v0.8.5babel-plugin-polyfill-es-shims
v0.10.0babel-plugin-polyfill-regenerator
v0.5.3