Nx: OS command injection in the @nx/docker release pipeline
Key facts
- Attack vector
- Local
- Privileges required
- None
- User interaction
- Passive
- Attack complexity
- Low
- Attack requirements
- Present
- Impact type
- Code execution
- Confidentiality · integrity · availability
- High · High · High
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub. Impact type from CWE-78.
Summary
Nx is a monorepo solution for TypeScript and polyglot codebases. From 21.4.0 until 22.7.8 and from 23.0.0 until 23.1.1, the @nx/docker release pipeline builds docker tag, image lookup, and docker push invocations as shell command strings. The release.docker.repositoryName and registryUrl configuration values are interpolated into those strings and passed to /bin/sh -c, allowing shell syntax in untrusted Nx configuration to execute during nx release version or nx release publish. A pull request or repository configuration change can therefore execute commands with the release job's privileges and expose registry credentials or cloud tokens, and dry-run publishing does not prevent the vulnerable pre-check command from executing. This issue is fixed in versions 22.7.8 and 23.1.1.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| nrwl | nx | 21.4.0 to before 22.7.8; 23.0.0 to before 23.1.1 | 22.7.8, 23.1.1 | Patch available | CNA |
| — | @nx/docker (npm) | 21.4.0 to before 22.7.8 | 22.7.8 | Patch available | GHSA-6vc5-vf29-ffr2 |
| — | @nx/docker (npm) | 23.0.0 to before 23.1.1 | 23.1.1 | Patch available | GHSA-6vc5-vf29-ffr2 |
- nx Vendornrwl Affected 21.4.0 to before 22.7.8; 23.0.0 to before 23.1.1 Fixed in 22.7.8, 23.1.1 Patch available CNA
- @nx/docker (npm) Vendor— Affected 21.4.0 to before 22.7.8 Fixed in 22.7.8 Patch available GHSA-6vc5-vf29-ffr2
- @nx/docker (npm) Vendor— Affected 23.0.0 to before 23.1.1 Fixed in 23.1.1 Patch available GHSA-6vc5-vf29-ffr2
Remediation
- Fix · CNA nx (nrwl) Fixed in 22.7.8, 23.1.1
- Fix · GHSA-6vc5-vf29-ffr2 @nx/docker (npm) Fixed in 22.7.8 Advisory →
- Fix · GHSA-6vc5-vf29-ffr2 @nx/docker (npm) Fixed in 23.1.1 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-104859
- 2026-10-04 Priority changed: MEDIUM → LOW
- 2026-10-06 CISA SSVC decision points changed
- 2026-10-06 Alias added: GHSA-6vc5-vf29-ffr2
- 2026-10-06 Fix available: npm/@nx/[email protected], npm/@nx/[email protected] · GHSA-6vc5-vf29-ffr2
- 2026-10-06 CVSS score added · GHSA-6vc5-vf29-ffr2
- 2026-10-06 Weakness changed · GHSA-6vc5-vf29-ffr2
- 2026-10-06 6 new references · GHSA-6vc5-vf29-ffr2
References
More nrwl vulnerabilities
- TI-2026-50091 Nx: Zip-Slip in the self-hosted remote cache CVSS 4.0HIGH 8.7
- TI-2026-66138 Nx daemon and plugin worker sockets are accessible to other local users CVSS 4.0HIGH 8.5
- TI-2026-82771 OS command injection in Nx @nx/maven and @nx/gradle via nx.json CVSS 4.0HIGH 7.3
- TI-2026-39559 Nx: `nx graph` dev server permissive CORS policy CVSS 3.1MEDIUM 5.9
- TI-2026-66137 Nx: Path traversal in nx migrate package-migrations extraction CVSS 4.0MEDIUM 5.8
Sources
- CVE-2026-104859 · CVE Program
- CVE-2026-104859 · NVD
- FIRST EPSS
- GHSA-6vc5-vf29-ffr2 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences