React Native Community CLI - Unauthenticated OS Command Injection
CVE-2025-11953
Early Release
Description
The Metro development server started by the React Native Community CLI binds to external network interfaces by default and exposes an unauthenticated /open-url endpoint. Affected versions pass the attacker supplied url value straight to the open() helper without validating the scheme, allowing an unauthenticated attacker to launch arbitrary executables on the developer machine. On Windows the request is dispatched through cmd, which permits arbitrary shell commands with fully controlled arguments. The fix was released as a backport across several release lines, so the version number alone does not indicate whether an instance is affected, and this template probes the endpoint behaviour instead.
Severity
Critical
CVSS Score
9.8
Exploit Probability
94%
Affected Product
react_native_community_cli
Published Date
July 29, 2026
Template Author
aryu-ru
CVE-2025-11953.yaml
id: CVE-2025-11953
info:
name: React Native Community CLI - Unauthenticated OS Command Injection
author: aryu-ru
severity: critical
description: |
The Metro development server started by the React Native Community CLI binds to external network interfaces by default and exposes an unauthenticated /open-url endpoint. Affected versions pass the attacker supplied url value straight to the open() helper without validating the scheme, allowing an unauthenticated attacker to launch arbitrary executables on the developer machine. On Windows the request is dispatched through cmd, which permits arbitrary shell commands with fully controlled arguments. The fix was released as a backport across several release lines, so the version number alone does not indicate whether an instance is affected, and this template probes the endpoint behaviour instead.
impact: |
An unauthenticated attacker with network access to the bundler port can execute arbitrary programs on a developer workstation, leading to compromise of the development environment along with any source code and credentials held on it.
remediation: |
Upgrade @react-native-community/cli-server-api to 17.0.1, 18.0.1, 19.1.2 or 20.0.0 and later, whichever is the fixed release for the line in use. Where upgrading is not immediately possible, bind the Metro development server to the loopback interface with --host 127.0.0.1 and block inbound access to the bundler port.
reference:
- https://jfrog.com/blog/cve-2025-11953-critical-react-native-community-cli-vulnerability/
- https://www.vulncheck.com/blog/metro4shell_eitw
- https://github.com/advisories/GHSA-399j-vxmf-hjvr
- https://github.com/react-native-community/cli/commit/15089907d1f1301b22c72d7f68846a2ef20df547
- https://nvd.nist.gov/vuln/detail/CVE-2025-11953
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2025-11953
epss-score: 0.9398
epss-percentile: 0.99838
cwe-id: CWE-78
metadata:
verified: true
max-request: 2
vendor: react-native-community
product: react_native_community_cli
fofa-query: title="React Native" && port="8081"
tags: cve,cve2025,react-native,metro,rce,unauth,intrusive,kev,vkev
flow: http(1) && http(2)
http:
- raw:
- |
GET /status HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(body, "packager-status:running")'
- 'contains(to_lower(header), "x-react-native-project-root")'
condition: and
internal: true
- raw:
- |
POST /open-url HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"url":"nuclei-probe://{{randstr}}"}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'len(body) == 0'
- '!contains(body, "Invalid URL")'
condition: and
# digest: 4a0a004730450221008564ceb8b2a64ab300fabd62c53b7e6cbd4dbd30cb6a39ada6a391da26e31d9802201828c06a39a70e8c1f1bd4054011f1d26ac5c1604e9d188014c71e62dc9d7b55:922c64590222798bb761d5b6d8e729509.8Score
CVSS Metrics
CVSS Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVE ID:
cve-2025-11953
CWE ID:
cwe-78
References
https://jfrog.com/blog/cve-2025-11953-critical-react-native-community-cli-vulnerability/https://www.vulncheck.com/blog/metro4shell_eitwhttps://github.com/advisories/GHSA-399j-vxmf-hjvrhttps://github.com/react-native-community/cli/commit/15089907d1f1301b22c72d7f68846a2ef20df547https://nvd.nist.gov/vuln/detail/CVE-2025-11953
Remediation Steps
Upgrade @react-native-community/cli-server-api to 17.0.1, 18.0.1, 19.1.2 or 20.0.0 and later, whichever is the fixed release for the line in use. Where upgrading is not immediately possible, bind the Metro development server to the loopback interface with --host 127.0.0.1 and block inbound access to the bundler port.