CVE-2026-54753: Nx `nx Graph` Dev Server Permissive Vulnerability
MODERATECVE-2026-54753 is a MODERATE (CVSS 5.9) `nx graph` dev server permissive vulnerability (CWE-749: Exposed Dangerous Method or Function) affecting Nx libraries in the npm ecosystem. The issue involves `nx graph` dev server permissive cors policy. Remediation is available by upgrading affected packages to version 22.7.2, 23.0.0-beta.2.
CVE-2026-54753 at a Glance
Security Impact
CVSS: 5.9
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:L/A:N).
How to Fix CVE-2026-54753
To remediate this vulnerability, upgrade all affected Nx dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
npm install nx@22.7.2
npm install nx@23.0.0-beta.2
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
npm ls nx
How to Check if You Are Affected
To determine whether your Node.js application is affected by CVE-2026-54753, inspect your project dependencies using npm:
npm ls nx
Analyze the terminal output to locate any version of Nx in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 22.7.2), your application is affected.
Note: The npm ls nx command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-749: Exposed Dangerous Method or Function, where the product provides an applications programming interface (api) or similar interface for interaction with external actors, but the interface includes a dangerous method or function that is not properly restricted. In Nx, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-54753 Affected Nx Versions
2 component(s)References
Frequently Asked Questions
What is CVE-2026-54753?
Which Nx versions are affected?
What version fixes CVE-2026-54753?
Is nx affected?
What is the CVSS score of CVE-2026-54753?
What CWE is associated with CVE-2026-54753?
How can I check npm dependencies for CVE-2026-54753?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-g2r8-wvmj-jf5w",
"modified" : "2026-07-31T16:50:24Z",
"published" : "2026-07-31T16:50:24Z",
"aliases" : [ "CVE-2026-54753" ],
"summary" : "`nx graph` dev server permissive CORS policy",
"details" : "## Summary\n\nThe local HTTP server started by `nx graph` sent `Access-Control-Allow-Origin: *` on every response, letting any website a developer visited read the server's responses cross-origin — including the full project graph and the output of the `/help` endpoint, which runs a target's configured help command. The practical impact is typically **cross-origin information disclosure**, but can be arbitrary command injection in rare cases.\n\n## Severity\n\n\nExploitation requires the developer to be running `nx graph` and to visit an attacker page. Any execution beyond benign help commands also requires a malicious target to already be present in the workspace (see Details).\n\n## Affected & Patched Versions\n\nPackage: `nx` (npm).\n\n- **Affected:** `>= 17.0.4, < 22.7.2` and `>= 23.0.0-beta.0, < 23.0.0-beta.2`\n- **Patched:** `22.7.2`+ (backport) and `23.0.0` (first in `23.0.0-beta.2`)\n\nThe wildcard CORS header was introduced in `17.0.4`; the `/help` execution endpoint in `19.4.0`. **The `21.x` line is not patched** — `21.x` users should upgrade to `22.7.2` or later.\n\n## Details\n\n`nx graph` starts a local server (default `http://127.0.0.1:4211`). Before the fix, its request handler set a wildcard CORS header on every response:\n\n```ts\nres.setHeader('Access-Control-Allow-Origin', '*');\n```\n\nThe `/help` endpoint runs a target's configured command:\n\n```ts\nconst command = target.metadata?.help?.command;\nreturn execSync(command, { cwd: target.options?.cwd ?? workspaceRoot }).toString();\n```\n\nA `GET /help` is a CORS \"simple request\", so a malicious page could `fetch()` it with no preflight, and the wildcard header let the page read the result. This exposes the project graph (project names, file paths, dependencies, build configuration) and the output of any configured help command.\n\nThe command is not attacker-controlled through the request — it comes from the workspace's project configuration, and first-party plugins (jest, vite, cypress) populate it with benign, read-only help commands. For `/help` to run anything malicious, a target carrying a malicious `help.command` must already exist in the project graph, which can only be introduced by **installing a malicious package** or by **altering the workspace's own code/configuration** — both of which already grant code execution independent of this flaw.\n\nThe fix ([#35494](https://github.com/nrwl/nx/pull/35494)) removes the header; the browser's same-origin policy then blocks cross-origin reads.\n\n## References\n\n- Fix: [nrwl/nx#35494](https://github.com/nrwl/nx/pull/35494)\n- Introduced: [nrwl/nx#20744](https://github.com/nrwl/nx/pull/20744) (CORS), [nrwl/nx#26629](https://github.com/nrwl/nx/pull/26629) (`/help`)\n\n## Credits\n\nThanks to Nozomu Sasaki (Paul) ([@morimori-dev](https://github.com/morimori-dev)) for finding and responsibly reporting this issue.",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:L/A:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "npm",
"name" : "nx"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "17.0.4"
}, {
"fixed" : "22.7.2"
} ]
} ]
}, {
"package" : {
"ecosystem" : "npm",
"name" : "nx"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "23.0.0-beta.0"
}, {
"fixed" : "23.0.0-beta.2"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/nrwl/nx/security/advisories/GHSA-g2r8-wvmj-jf5w"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-54753"
}, {
"type" : "WEB",
"url" : "https://github.com/nrwl/nx/pull/35494"
}, {
"type" : "WEB",
"url" : "https://github.com/nrwl/nx/commit/7620c1ffe598086ce5e66457c7e6e38799bb499d"
}, {
"type" : "WEB",
"url" : "https://github.com/nrwl/nx/commit/e59122c5569cf201561b9995ce4e34a304f4fb03"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/nrwl/nx"
}, {
"type" : "WEB",
"url" : "https://github.com/nrwl/nx/releases/tag/22.7.2"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-749", "CWE-942" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2026-07-31T16:50:24Z",
"nvd_published_at" : "2026-06-26T19:16:43Z"
}
}