What’s Vulnerable › Vulnerabilities
CVE-2023-45133: Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code
- Severity: high (CVSS 8.8 v3.1)
- Exploited in the wild: not listed in CISA KEV
- EPSS: 0.5% probability of exploitation in the next 30 days
- Public exploit or detection template: none known
- Published: 2023-10-12 · updated 2026-06-17
- Weakness: CWE-184
Description
Babel is a compiler for writingJavaScript. In `@babel/traverse` prior to versions 7.23.2 and 8.0.0-alpha.4 and all versions of `babel-traverse`, 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; and any "polyfill provider" plugin that depends on `@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` and `@babel/traverse@8.0.0-alpha.4`. Those who cannot upgrade `@babel/traverse` and are using one of the affected packages mentioned above should 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.3, `babel-plugin-polyfill-corejs2` v0.4.6, `babel-plugin-polyfill-corejs3` v0.8.5, `babel-plugin-polyfill-es-shims` v0.10.0, `babel-plugin-polyfill-regenerator` v0.5.3.
Affected products
- Babeljs Babel: before 7.23.2; 8.0.0-alpha.0, 8.0.0-alpha.1, 8.0.0-alpha.2, 8.0.0-alpha.3 — fixed in 7.23.2
- Babeljs Babel-Helper-Define-Polyfill-Provider: before 0.4.3 — fixed in 0.4.3
- Babeljs Babel-Plugin-Polyfill-Corejs2: before 0.4.6 — fixed in 0.4.6
- Babeljs Babel-Plugin-Polyfill-Corejs3: before 0.8.5 — fixed in 0.8.5
- Babeljs Babel-Plugin-Polyfill-Es-Shims: before 0.10.0 — fixed in 0.10.0
- Babeljs Babel-Plugin-Polyfill-Regenerator: before 0.5.3 — fixed in 0.5.3
- Babeljs Babel-Plugin-Transform-Runtime: before 7.23.2 — fixed in 7.23.2
- Babeljs Babel-Preset-Env: before 7.23.2 — fixed in 7.23.2
- Debian Linux: 10.0, 11.0, 12.0
- Npm @Babel/Traverse: before 7.23.2; from 8.0.0-alpha.0 before 8.0.0-alpha.4 — fixed in 7.23.2, 8.0.0-alpha.4
- Npm Babel-Traverse: all versions
How to fix
Upgrade to a fixed version: Babeljs Babel 7.23.2; Babeljs Babel-Helper-Define-Polyfill-Provider 0.4.3; Babeljs Babel-Plugin-Polyfill-Corejs2 0.4.6; Babeljs Babel-Plugin-Polyfill-Corejs3 0.8.5; Babeljs Babel-Plugin-Polyfill-Es-Shims 0.10.0; Babeljs Babel-Plugin-Polyfill-Regenerator 0.5.3; Babeljs Babel-Plugin-Transform-Runtime 7.23.2; Babeljs Babel-Preset-Env 7.23.2; Npm @Babel/Traverse 7.23.2, 8.0.0-alpha.4. Check the vendor advisory for mitigations.
References
- https://github.com/babel/babel/commit/b13376b346946e3f62fc0848c1d2a23223314c82
- https://github.com/babel/babel/pull/16033
- https://github.com/babel/babel/releases/tag/v7.23.2
- https://github.com/babel/babel/releases/tag/v8.0.0-alpha.4
- https://github.com/babel/babel/security/advisories/GHSA-67hx-6x53-jw92
- https://lists.debian.org/debian-lts-announce/2023/10/msg00026.html
- https://www.debian.org/security/2023/dsa-5528
- https://github.com/babel/babel/commit/b13376b346946e3f62fc0848c1d2a23223314c82
- https://github.com/babel/babel/pull/16033
- https://github.com/babel/babel/releases/tag/v7.23.2
- https://github.com/babel/babel/releases/tag/v8.0.0-alpha.4
- https://github.com/babel/babel/security/advisories/GHSA-67hx-6x53-jw92
Get alerted when CVE-2023-45133 or the next vulnerability affects your stack