CVE-2026-119282: @nx/maven and @nx/gradle have OS command injection via nx.json plugin options
Affects @nx/mavenSource GCVE Database
Not known to be exploited · CVSS 7.3 High : upgrade to 22.7.9 soon.
Data as of 30 Oct 2026, 15:33 UTC
Thin evidence
One scorer or none| CNA (GitHub_M) | CVSS 4.0 | 7.3 |
|---|
- Patch
- Available – fixed in 22.7.9, 23.1.2
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:NExploitation evidence
Disclosed: evidence found.
CVE published 29 Oct 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 30 Oct 2026.
What to do
Upgrade @nx/maven and @nx/gradle to 22.7.9; @nx/maven and @nx/gradle to 23.1.2.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| npm@nx/maven | Affected
| Fixed in
|
| npm@nx/maven | Affected
| Fixed in
|
| npm@nx/gradle | Affected
| Fixed in
|
| npm@nx/gradle | Affected
| Fixed in
|
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
Description
## Summary `@nx/maven` and `@nx/gradle` spawn their project-graph analyzers through a shell and interpolate plugin options read from `nx.json` straight into the command line. Because a shell parses the whole line, an option value containing shell syntax is executed as a command by any `nx` command that constructs the project graph. Anyone who clones a hostile repository, or who checks out a pull request that edits `nx.json`, runs the injected command with their own privileges. ## Severity A victim who runs an ordinary `nx` command in an attacker-supplied Maven or Gradle workspace gets code execution as themselves. In most such workspaces an attacker who can write `nx.json` can already run code through the repository's build files (`./mvnw`, `pom.xml`, and the Gradle equivalents), so the genuinely new exposure is narrow — for example CI building a fork's pull request where `nx.json` is writable but the build files are not. We have no evidence of exploitation in the wild. ## Affected & Patched Versions | Package | Vulnerable | Patched | | --- | --- | --- | | `@nx/maven` | `>= 22.0.2, < 22.7.9`; `>= 23.0.0, < 23.1.2` | `22.7.9`, `23.1.2` | | `@nx/gradle` | `>= 21.0.0, < 22.7.9`; `>= 23.0.0, < 23.1.2` | `22.7.9`, `23.1.2` | > [!IMPORTANT] > Workspaces that register neither `@nx/maven` nor `@nx/gradle` in `nx.json` are unaffected — the vulnerable code only runs from those plugins' graph-construction paths, and no other Nx plugin shares this pattern. ## Remediation Upgrade to **22.7.9** (22.x line) or **23.1.2** (23.x line) or later: ``` nx migrate 23.1.2 ``` Upgrade both `nx` and the affected plugin (`@nx/maven` and/or `@nx/gradle`). The plugin's fix depends on code that ships in the `nx` package, so bumping the plugin without a matching `nx` upgrade will not resolve it. There is no configuration to change — upgrading is the whole fix. If you cannot upgrade yet, only run `nx` commands in repositories you trust, since a malicious `nx.json` can execute code on a vulnerable version. ## Details Both plugins spawn their analyzer through a shell and interpolate `nx.json` plugin options into the command, so those option values are shell source. For Maven the injectable value is the `targetNamePrefix` option; for Gradle it is broader, since every plugin option is mapped into a `-P` argument and arbitrary option names are accepted, making both the name and value of any option injectable. ## Credits - **Arkadiusz Marta** (RE:SOURCE) — Reporter
References
- github.com/nrwl/nx/security/advisories/GHSA-qm8w-vx34-5j9j (opens in a new tab)
- nvd.nist.gov/vuln/detail/CVE-2026-119282 (opens in a new tab)
- github.com/nrwl/nx/pull/36626 (opens in a new tab)
- github.com/nrwl/nx/commit/02c5d59e8dbbbe30963c0181c6a22cd8c1190a25 (opens in a new tab)
- github.com/nrwl/nx/commit/60196b7cfcffcada35b6b90e53bf1a78d049b548 (opens in a new tab)
- github.com/nrwl/nx/commit/c227f4780b054c512965c73aa480a48f9f781409 (opens in a new tab)
- github.com/nrwl/nx (opens in a new tab)
- github.com/nrwl/nx/releases/tag/22.7.9 (opens in a new tab)
- github.com/nrwl/nx/releases/tag/23.1.2 (opens in a new tab)