CVE-2025-11953

9.8 CRITICAL CISA KEV

📋 TL;DR

CVE-2025-11953 is a critical OS command injection vulnerability in the React Native Community CLI's Metro Development Server. Unauthenticated attackers can send POST requests to execute arbitrary commands on affected systems, potentially leading to complete system compromise. Developers using React Native with the vulnerable CLI are affected.

💻 Affected Systems

Products:
  • React Native Community CLI
Versions: Versions before 13.6.0
Operating Systems: Windows, Linux, macOS
Default Config Vulnerable: ⚠️ Yes
Notes: Windows systems are particularly vulnerable as they allow arbitrary shell command execution with controlled arguments. The Metro Development Server binds to external interfaces by default.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system takeover with attacker gaining full control, data exfiltration, ransomware deployment, and lateral movement across networks.

🟠

Likely Case

Remote code execution leading to malware installation, credential theft, and backdoor persistence on developer workstations.

🟢

If Mitigated

Limited impact if server is not internet-facing and proper network segmentation is in place.

🌐 Internet-Facing: HIGH - The server binds to external interfaces by default, making exposed instances immediately vulnerable to remote exploitation.
🏢 Internal Only: HIGH - Even internally, any attacker with network access can exploit this without authentication.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: CONFIRMED
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

CISA has added this to their Known Exploited Vulnerabilities catalog, confirming active exploitation. Simple HTTP POST requests can trigger the vulnerability.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 13.6.0 and later

Vendor Advisory: https://github.com/react-native-community/cli/commit/15089907d1f1301b22c72d7f68846a2ef20df547

Restart Required: Yes

Instructions:

1. Update React Native Community CLI to version 13.6.0 or later. 2. Run: npm update @react-native-community/cli. 3. Restart any running Metro Development Servers. 4. Verify the update with: npx @react-native-community/cli --version.

🔧 Temporary Workarounds

Disable external interface binding

all

Configure Metro Development Server to bind only to localhost instead of external interfaces

export REACT_NATIVE_PACKAGER_HOSTNAME=127.0.0.1
set REACT_NATIVE_PACKAGER_HOSTNAME=127.0.0.1

Firewall restriction

all

Block external access to Metro Development Server port (default 8081)

sudo ufw deny 8081
netsh advfirewall firewall add rule name="Block Metro" dir=in action=block protocol=TCP localport=8081

🧯 If You Can't Patch

  • Immediately stop using the Metro Development Server in production or internet-facing environments
  • Implement strict network segmentation to isolate systems running vulnerable versions from untrusted networks

🔍 How to Verify

Check if Vulnerable:

Check CLI version with: npx @react-native-community/cli --version. If version is below 13.6.0, you are vulnerable.

Check Version:

npx @react-native-community/cli --version

Verify Fix Applied:

Confirm version is 13.6.0 or higher with: npx @react-native-community/cli --version. Also verify Metro server is not accessible from external networks.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to Metro server endpoints
  • Suspicious command execution in system logs from Metro process
  • Unexpected network connections from Metro server

Network Indicators:

  • POST requests to /onchange endpoint with command injection payloads
  • Outbound connections from Metro server to suspicious IPs
  • Traffic on port 8081 from external sources

SIEM Query:

source="metro-server" AND (method="POST" AND uri_path="/onchange" AND (body CONTAINS "cmd" OR body CONTAINS "powershell" OR body CONTAINS "bash"))

🔗 References

📤 Share & Export