Skip to main content

Babel CVE-2026-44728

| EUVDEUVD-2026-31946 HIGH
Code Injection (CWE-94)
2026-05-08 https://github.com/babel/babel GHSA-fv7c-fp4j-7gwp
7.8
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft malicious source module
  2. Delivery
    Submit into untrusted build pipeline
  3. Exploit
    Babel SystemJS transform emits injected code
  4. Execution
    Generated output loaded and run
  5. Impact
    Arbitrary code execution in runtime

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires all of the following: (1) the target build uses @babel/plugin-transform-modules-systemjs directly, or @babel/preset-env with the non-default modules: "systemjs" option enabled; (2) a vulnerable version is installed (plugin 7.12.0-7.29.3 or 8.0.0-alpha.0-alpha.12); and (3) the pipeline compiles attacker-controlled/untrusted source code - the vendor states that users who compile only trusted code are not impacted. Limiting factors: the SystemJS module format is a specific opt-in configuration and not Babel's default output; exploitation is gated behind a developer/CI actually running the build over the malicious input (CVSS UI:R); and the impact is realized only when the generated output is subsequently loaded and executed. There is no network-facing service in Babel itself - the attack vector is the source fed into the build (CVSS AV:L).

Impact

Signals diverge sharply and should be weighed together. The CVSS 3.1 base is 8.2 (High) with vector AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H - a local vector requiring user interaction (a developer running the build) and a scope change (the injected code executes in a downstream runtime context), with full CIA impact. Against that, EPSS is only 0.02% (6th percentile), there is no CISA KEV listing and no public exploit identified at time of analysis, indicating negligible evidence of opportunistic mass exploitation. The dominant limiting factor is the trust boundary: exploitation requires compiling attacker-controlled source, which is uncommon outside services that build user-submitted code (SaaS build/CI, online playgrounds, plugin marketplaces). Net assessment: this is a legitimate high-severity supply-chain/build-integrity issue for the narrow population that compiles untrusted code with SystemJS output, but a low real-world priority for the majority who compile only their own trusted code. Note a minor tension worth verifying with the vendor: the vector uses PR:L, yet the practical prerequisite is supplying input rather than holding privileges on the build host - the meaningful gate is untrusted input plus the SystemJS configuration, not authentication level.

Exploit ScenarioDerived

An attacker submits a specially crafted JavaScript module to a service that transpiles user-supplied code with Babel configured for SystemJS output (for example a CI job building a submitted plugin, or an online build/preview service). When Babel runs the SystemJS module transform, the generated bundle contains attacker-controlled statements, so arbitrary code executes wherever that output is later loaded and run. No public exploit is identified at time of analysis, and the local vector plus required build execution (UI:R) mean the attacker depends on the victim actually compiling the malicious input.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 23, 2026

Arbitrary code generation in Babel's @babel/plugin-transform-modules-systemjs (and @babel/preset-env when configured with modules: "systemjs") allows an attacker who can supply crafted source code to a build pipeline to make Babel emit output that executes arbitrary code at runtime. Affected are plugin versions >= 7.12.0 through 7.29.3 and 8.0.0-alpha.0 through 8.0.0-alpha.12; only setups that compile untrusted, attacker-supplied code with the SystemJS module transform are impacted. There is no public exploit identified at time of analysis and EPSS is very low (0.02%), but the CWE-94 code-injection nature and CVSS 8.2 warrant prompt patching of exposed build systems.

RemediationAI

Vendor-released patch: upgrade @babel/plugin-transform-modules-systemjs to 7.29.4 (or 8.0.0-alpha.13 on the 8.x pre-release line). If you consume the transform through @babel/preset-env, upgrade @babel/preset-env to 7.29.5, which bumps the plugin dependency to force the fix. If you cannot upgrade immediately, two workarounds apply: stop using the modules: "systemjs" option and migrate to native ES Modules or another module format (removes the vulnerable code path entirely, but changes your build output and may require code changes); or, only for legacy codebases that cannot upgrade, pin @babel/parser to v7.11.5 - with the significant side effect that this disables string module-name parsing and other newer language features, which can break the build pipeline. Regardless of version, ensure the pipeline never compiles untrusted third-party source; see the advisory at https://github.com/babel/babel/security/advisories/GHSA-fv7c-fp4j-7gwp.

Affected VersionsENISA

Babel 8.0.0-alpha.0, < 8.0.0-alpha.13
plugin-transform-modules-systemjs 8.0.0-alpha.0, < 8.0.0-alpha.13
Babel 7.12.0, < 7.29.4
plugin-transform-modules-systemjs 7.12.0, < 7.29.4

Affected Packages

npm @babel/plugin-transform-modules-systemjs fix: 7.29.4, 8.0.0-alpha.13
euvd babel_7_12_0 fix: 7.29.4
euvd babel_8_0_0_alpha_0 fix: 8.0.0-alpha.13
euvd plugin_transform_modules_systemjs_7_12_0 fix: 7.29.4
euvd plugin_transform_modules_systemjs_8_0_0_alpha_0 fix: 8.0.0-alpha.13

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 5 packages in npm, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Babel is a near-universal JavaScript/TypeScript compiler (transpiler) used in front-end and Node.js build pipelines. The flaw resides specifically in @babel/plugin-transform-modules-systemjs, the plugin that rewrites ES module syntax into the SystemJS (System.register) module format; @babel/preset-env is affected only transitively when its modules: "systemjs" option delegates to that plugin. The root cause is CWE-94 (Improper Control of Generation of Code / code injection): when the plugin processes specially crafted module input - the advisory ties the trigger to string module-name parsing introduced in newer @babel/parser versions - it produces transformed output that itself contains attacker-controlled executable statements rather than safely escaped identifiers. No other @babel namespace plugins are impacted per the vendor.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

NVD PRIMARY 7.8 HIGH
AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
vuln.today AI 8.6 HIGH

Attacker needs no privileges, only to supply crafted source (AV:L, PR:N); a developer/CI must run the build (UI:R); injected code executes in a downstream runtime, so scope changes (S:C) with full CIA impact.

3.1 AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
SUSE 8.2 HIGH
AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
CVSS changed
Jul 24, 2026 - 11:22 NVD
8.2 (HIGH) 7.8 (HIGH)
CVE Published
May 08, 2026 - 20:34 nvd
HIGH 8.2

DescriptionNVD

Impact

Using Babel to compile code that was specifically crafted by an attacker can cause Babel to generate output code that executes arbitrary code.

Known affected plugins are:

  • @babel/plugin-transform-modules-systemjs
  • @babel/preset-env when using the modules: "systemjs" option, as it delegates to @babel/plugin-transform-modules-systemjs

No other plugins under the @babel namespace are impacted.

Users that only compile trusted code are not impacted.

Patches

The vulnerability has been fixed in @babel/plugin-transform-modules-systemjs@7.29.4.

Babel also released @babel/preset-env@7.29.5, updating its @babel/plugin-transform-modules-systemjs dependency, to simplify forcing the update if you are using @babel/preset-env directly.

Workarounds

  • Pin @babel/parser to v7.11.5. The downgrade will completely disable string module name parsing, but it would also disable other new language features and the build pipeline may fail as a result. Only do so if you are working on a legacy codebase and can not upgrade @babel/plugin-transform-modules-systemjs to v7.29.4.
  • Do not use the modules: "systemjs" option, migrate the codebase to native ES Modules or any other module formats.

Credits

Babel thanks Daniel Cervera for reporting the vulnerability.

Executive ViewAI

Why It Matters

A code generation vulnerability in Babel's SystemJS module transformer (CVE-2026-44728, CVSS 8.2) allows attackers who supply crafted source code to compromise build pipelines by injecting arbitrary code into compiled output. This affects organizations using @babel/plugin-transform-modules-systemjs or @babel/preset-env with SystemJS configuration to transpile untrusted code, creating a supply chain risk. Patch availability and the specific configuration requirement limit exposure, but all affected build systems should prioritize updates to prevent supply chain attacks.

Business Impact: High
Compensating Controls

Apply vendor patch. If immediate patching is not feasible, interim mitigation: disable SystemJS module transformation for any untrusted code sources; implement strict input validation and code review for all third-party or external code entering build pipelines; use build sandboxing or isolated build environments for untrusted code compilation until patches are deployed.

Threat Intelligence Overview

EPSS Score
0.0%
Top 94% exploitable
Prevalence
High
Babel is ubiquitous in JS builds, but the SystemJS module transform is a niche opt-in
Threat Intel
1
1 source
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS GHSA Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
High

Priority Score

39
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +39
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

Vendor StatusVendor

SUSE

Severity: High
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Fixed
SUSE Linux Enterprise High Performance Computing 15 SP7 Fixed
SUSE Linux Enterprise Micro 5.3 Fixed
SUSE Linux Enterprise Micro 5.3 Fixed
SUSE Linux Enterprise Micro 5.3 Fixed

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy