CVE-2023-45133
Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code
Impact
### Impact 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`](https://babeljs.io/docs/babel-preset-env#usebuiltins) option - 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.** ### Patches The vulnerability has been fixed in `@babel/traverse@7.23.2`. Babel 6 does not receive security fixes anymore (see [Babel's security policy](https://github.com/babel/babel/security/policy)), hence there is no patch planned for `babel-traverse@6`. ### Workarounds - Upgrade `@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. - If you cannot upgrade `@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.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 packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | @babel/traverse | < 7.23.2 | 7.23.2 |
| npm | babel-traverse | < 7.23.2 | none recorded |
Affected products
| Vendor | Product | Affected versions |
|---|---|---|
| Debian | Debian Linux | Versions 10.0, 11.0, 12.0 |
| Babeljs | Babel | before 7.23.2 Version 8.0.0 |
| Babeljs | Babel-Helper-Define-Polyfill-Provider | before 0.4.3 |
| Babeljs | Babel-Plugin-Polyfill-Corejs2 | before 0.4.6 |
| Babeljs | Babel-Plugin-Polyfill-Corejs3 | before 0.8.5 |
| Babeljs | Babel-Plugin-Polyfill-Es-Shims | before 0.10.0 |
| Babeljs | Babel-Plugin-Polyfill-Regenerator | before 0.5.3 |
| Babeljs | Babel-Plugin-Transform-Runtime | before 7.23.2 |
| Babeljs | Babel-Preset-Env | before 7.23.2 |
Weakness classification
References
- NVD record
- CVE.org record
- GitHub advisory
- 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/advisories/GHSA-67hx-6x53-jw92
- https://nvd.nist.gov/vuln/detail/CVE-2023-45133
- https://babeljs.io/blog/2023/10/16/cve-2023-45133