Command injection in React Native Community CLI allows remote attackers to perform remote code execution by sending HTTP requests
Description
The Metro Development Server, which is opened by the React Native Community CLI, binds to external interfaces by default. The server exposes an endpoint that is vulnerable to OS command injection. This allows unauthenticated network attackers to send a POST request to the server and run arbitrary executables. On Windows, the attackers can also execute arbitrary shell commands with fully controlled arguments.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
@react-native-community/clinpm | >= 20.0.0-alpha.0, < 20.0.0 | 20.0.0 |
@react-native-community/clinpm | >= 19.0.0-alpha.0, < 19.1.2 | 19.1.2 |
@react-native-community/clinpm | >= 18.0.0, < 18.0.1 | 18.0.1 |
@react-native-community/cli-server-apinpm | >= 20.0.0-alpha.0, < 20.0.0 | 20.0.0 |
@react-native-community/cli-server-apinpm | >= 19.0.0-alpha.0, < 19.1.2 | 19.1.2 |
@react-native-community/cli-server-apinpm | >= 18.0.0, < 18.0.1 | 18.0.1 |
Affected products
1Patches
49e1fa8cc633efix: Add stricter URL validation to openURLMiddleware (#2697)
1 file changed · +13 −0
packages/cli-server-api/src/openURLMiddleware.ts+13 −0 modified@@ -31,6 +31,19 @@ async function openURLMiddleware( const {url} = req.body as {url: string}; + try { + const parsedUrl = new URL(url); + if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') { + res.writeHead(400); + res.end('Invalid URL protocol'); + return; + } + } catch (error) { + res.writeHead(400); + res.end('Invalid URL format'); + return; + } + await open(url); res.writeHead(200);
5a792169d988fix: Add stricter URL validation to openURLMiddleware (#2697)
1 file changed · +13 −0
packages/cli-server-api/src/openURLMiddleware.ts+13 −0 modified@@ -31,6 +31,19 @@ async function openURLMiddleware( const {url} = req.body as {url: string}; + try { + const parsedUrl = new URL(url); + if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') { + res.writeHead(400); + res.end('Invalid URL protocol'); + return; + } + } catch (error) { + res.writeHead(400); + res.end('Invalid URL format'); + return; + } + await open(url); res.writeHead(200);
15089907d1f1fix: Add stricter URL validation to openURLMiddleware (#2697)
1 file changed · +13 −0
packages/cli-server-api/src/openURLMiddleware.ts+13 −0 modified@@ -31,6 +31,19 @@ async function openURLMiddleware( const {url} = req.body as {url: string}; + try { + const parsedUrl = new URL(url); + if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') { + res.writeHead(400); + res.end('Invalid URL protocol'); + return; + } + } catch (error) { + res.writeHead(400); + res.end('Invalid URL format'); + return; + } + await open(url); res.writeHead(200);
a8293dc29425fix: Add stricter URL validation to openURLMiddleware (#2697)
1 file changed · +13 −0
packages/cli-server-api/src/openURLMiddleware.ts+13 −0 modified@@ -31,6 +31,19 @@ async function openURLMiddleware( const {url} = req.body as {url: string}; + try { + const parsedUrl = new URL(url); + if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') { + res.writeHead(400); + res.end('Invalid URL protocol'); + return; + } + } catch (error) { + res.writeHead(400); + res.end('Invalid URL format'); + return; + } + await open(url); res.writeHead(200);
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
15- github.com/react-native-community/cli/commit/15089907d1f1301b22c72d7f68846a2ef20df547ghsapatchWEB
- github.com/advisories/GHSA-399j-vxmf-hjvrghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2025-11953ghsaADVISORY
- github.com/react-native-community/cli/commit/5a792169d9883e0b0fb1ddf1ea46778f21510d18ghsaWEB
- github.com/react-native-community/cli/commit/9e1fa8cc633e5dcf32244ffa60a871880be56722ghsaWEB
- github.com/react-native-community/cli/commit/a8293dc29425f56249753507bc24d87b698d46e1ghsaWEB
- github.com/react-native-community/cli/issues/2733ghsaWEB
- github.com/react-native-community/cli/pull/1615ghsaWEB
- github.com/react-native-community/cli/releases/tag/v20.0.0ghsaWEB
- jfrog.com/blog/cve-2025-11953-critical-react-native-community-cli-vulnerabilityghsatechnical-descriptionWEB
- www.cisa.gov/known-exploited-vulnerabilities-catalogghsaWEB
- www.vulncheck.com/blog/metro4shell_eitwghsaWEB
- x.com/SzymonRybczak/status/1986199665000566848ghsaWEB
- x.com/szymonrybczak/status/1986199665000566848ghsaWEB
- x.com/thymikee/status/1986770875954475375ghsaWEB
News mentions
0No linked articles in our index yet.