@babel/runtime version 7.1.2 is a minor update to Babel's modular runtime helpers, building upon the foundation laid by version 7.1.1. Both versions, designed to provide essential polyfills and utility functions for Babel-transformed code, share a common dependency: regenerator-runtime, ensuring compatibility with asynchronous JavaScript features through regenerator functions. Critically, both versions also maintain the same file count (136) and unpacked size (75799), indicating the update contained no structural alterations to the library's core deliverables. The license, author, and repository information remain consistent.
The key difference lies in a slightly later release date for version 7.1.2. It went live on September 28, 2018, at 22:19:49.843Z, roughly two hours after version 7.1.1, which was released at 20:02:54.560Z on the same day. This suggests that version 7.1.2 includes bug fixes or minor improvements implemented after the initial 7.1.1 release. Users employing @babel/runtime should consider this version as a potential stability enhancement over 7.1.1. Typically these contain minimal changes that address critical edge cases uncovered shortly after the preceding release. While the core functionality remains the same including modular runtime helpers and asynchronous JavaScript features through regenerator functions, the minor release indicates a refinement of sorts.
All the vulnerabilities related to the version 7.1.2 of the package
Babel has inefficient RegExp complexity in generated code with .replace when transpiling named capturing groups
When using Babel to compile regular expression named capturing groups, Babel will generate a polyfill for the .replace
method that has quadratic complexity on some specific replacement pattern strings (i.e. the second argument passed to .replace
).
Your generated code is vulnerable if all the following conditions are true:
.replace
method on a regular expression that contains named capturing groups.replace
If you are using @babel/preset-env
with the targets
option, the transform that injects the vulnerable code is automatically enabled if:
You can verify what transforms @babel/preset-env
is using by enabling the debug
option.
This problem has been fixed in @babel/helpers
and @babel/runtime
7.26.10 and 8.0.0-alpha.17, please upgrade. It's likely that you do not directly depend on @babel/helpers
, and instead you depend on @babel/core
(which itself depends on @babel/helpers
). Upgrading to @babel/core
7.26.10 is not required, but it guarantees that you are on a new enough @babel/helpers
version.
Please note that just updating your Babel dependencies is not enough: you will also need to re-compile your code.
If you are passing user-provided strings as the second argument of .replace
on regular expressions that contain named capturing groups, validate the input and make sure it does not contain the substring $<
if it's then not followed by >
(possibly with other characters in between).
This vulnerability was reported and fixed in https://github.com/babel/babel/pull/17173.