React Native Community CLI OS Command Injection (CVE-2025-11953)
Detects exploitation of CVE-2025-11953, an OS command injection vulnerability (CWE-78) in the React Native Community CLI. An attacker who can influence arguments or configuration consumed by the React Native CLI can inject arbitrary OS commands that execute with the privileges of the developer or CI/CD process invoking the CLI. This vulnerability is listed in the CISA Known Exploited Vulnerabilities catalog.
Vulnerability Intelligence
KEV — Known ExploitedAffected Software
- Vendor
- React Native Community
- Product
- CLI
Weakness (CWE)
Timeline
- Disclosed
- February 5, 2026
CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
What is CVE-2025-11953 React Native Community CLI OS Command Injection (CVE-2025-11953)?
React Native Community CLI OS Command Injection (CVE-2025-11953) (CVE-2025-11953) maps to the Execution and Persistence and Lateral Movement tactics — the adversary is trying to run malicious code in MITRE ATT&CK.
This page provides production-ready detection logic for React Native Community CLI OS Command Injection (CVE-2025-11953), covering the data sources and telemetry it touches: Microsoft Defender for Endpoint, Microsoft Sentinel DeviceProcessEvents, Windows Security Event Log. The queries below are rated high severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.
MITRE ATT&CK
- Tactic
- Execution Persistence Lateral Movement
let RNCliIndicators = dynamic(['react-native', 'react_native_cli', '@react-native-community/cli', 'rn-cli']);
union DeviceProcessEvents, SecurityEvent
| where TimeGenerated > ago(7d)
| where (ProcessCommandLine has_any (RNCliIndicators) or ParentProcessName has_any (RNCliIndicators))
| where ProcessCommandLine matches regex @'[;&|`$()].*[;&|`$()\/\\]'
or ProcessCommandLine has_any ('curl ', 'wget ', 'bash -', 'sh -c', 'powershell', 'cmd /c', 'nc ', 'ncat ', '/dev/tcp')
| project TimeGenerated, DeviceName, AccountName, ProcessCommandLine, ParentProcessName, ParentCommandLine, InitiatingProcessAccountName, FileName
| extend SuspiciousIndicator = case(
ProcessCommandLine has 'curl ' or ProcessCommandLine has 'wget ', 'RemoteDownload',
ProcessCommandLine has 'bash -' or ProcessCommandLine has 'sh -c', 'ShellEscape',
ProcessCommandLine has 'powershell', 'PowerShellExec',
ProcessCommandLine has '/dev/tcp' or ProcessCommandLine has 'nc ', 'NetworkConnectivity',
'CommandInjectionPattern'
)
| order by TimeGenerated desc Detects processes spawned by or alongside the React Native Community CLI that exhibit OS command injection patterns, including shell escapes, remote download utilities, and reverse-shell indicators.
Data Sources
Required Tables
False Positives
- Legitimate React Native developers running shell scripts as part of standard build pipelines (e.g., fastlane, custom build hooks).
- CI/CD agents (GitHub Actions, Azure Pipelines) executing react-native CLI commands with complex argument strings that incidentally match injection patterns.
- Developer workstations running npm lifecycle scripts that invoke shell commands alongside react-native CLI.
- Monorepo tooling (nx, turborepo) invoking react-native CLI with chained commands.
Sigma rule & cross-platform mapping
The detection logic for React Native Community CLI OS Command Injection (CVE-2025-11953) (CVE-2025-11953) above is provided in a vendor-neutral
form so you can deploy it on any SIEM. The same logic is shipped here as native
KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the
following logsource:
logsource:
category: process_creation
product: windows Browse the community-maintained Sigma rules for this technique:
Platform-specific guides for CVE-2025-11953
Testing Methodology
Validate this detection against 4 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1Command Injection via React Native CLI project name argument
Expected signal: Process create event showing node spawning sh or bash with a command line containing the injected semicolon-delimited id command; file creation event for /tmp/cve_2025_11953_poc.txt.
- Test 2Reverse shell injection via React Native CLI on Linux
Expected signal: Process create events for node → sh → id; file write to /tmp/rn_inject_test.txt containing the output of id.
- Test 3Remote payload download via injected curl in React Native CLI build context
Expected signal: Process create event for node spawning sh, which spawns curl with an external URL argument; network connection event for curl to destination host.
- Test 4Windows PowerShell injection via React Native CLI on Windows
Expected signal: Sysmon Event ID 1 showing node.exe spawning cmd.exe which spawns powershell.exe; file creation event in %TEMP% for rn_inject_test.txt.
Response Playbook
Triage
- Identify the host, user account, and exact command line where the React Native Community CLI was invoked; determine whether the user is a legitimate developer or an automated CI/CD service account.
- Correlate the suspicious process tree: capture the parent PID chain from the CLI invocation down to any spawned shells or network utilities to establish whether injection actually succeeded or was blocked.
- Check package.json, .npmrc, and any CI configuration files on the affected host for malicious modifications to scripts, dependencies, or environment variable overrides that could have introduced the injected payload.
- Review network connections initiated by child processes of the react-native CLI around the time of the alert to determine whether data exfiltration or C2 callback occurred.
Containment
- Immediately isolate the affected developer workstation or CI/CD runner from the network if active exploitation (reverse shell, exfiltration) is confirmed; revoke any tokens, SSH keys, or cloud credentials accessible from that environment.
- Freeze and snapshot the compromised Node.js/npm environment (node_modules, package-lock.json, yarn.lock) to preserve forensic state, then block the offending CLI version from executing in CI/CD pipelines until the React Native Community CLI is patched or replaced.
Evidence Collection
- Collect full process tree logs (parent/child PIDs, command lines, environment variables) from the host's EDR or Sysmon logs covering at least 30 minutes before and after the alert timestamp.
- Preserve network capture (PCAP or flow records) for all outbound connections from the affected host in the alert window, focusing on non-standard ports or connections to external IPs initiated by node, sh, bash, or curl child processes.
Escalation Criteria
- ! Escalate to IR if any child process of the react-native CLI successfully established an outbound connection to an external IP or DNS name not in the organization's approved CI/CD infrastructure list.
- ! Escalate immediately if secrets (API keys, signing certificates, cloud credentials, Vault tokens) accessible from the developer or CI/CD environment may have been exposed to the injected command context.
Investigation Guide
Forensic Artifacts
- >
npm debug logs at ~/.npm/_logs/ and project-level npm-debug.log containing CLI invocation arguments and spawned subprocess output. - >
Shell history files (~/.bash_history, ~/.zsh_history) on developer machines recording the exact react-native CLI invocation sequence. - >
CI/CD pipeline logs (GitHub Actions, Jenkins, CircleCI) preserving environment variables, command outputs, and exit codes for the affected build job. - >
Sysmon Event ID 1 (Process Create) and Event ID 3 (Network Connection) records capturing child process spawns and outbound connections from node.exe or node.
Tuning Guidance
Start by scoping the detection to hosts or service accounts where the React Native Community CLI is known to be installed (developer workstations, mobile CI/CD runners). Suppress alerts for shell invocations that match a documented allowlist of legitimate npm lifecycle scripts (e.g., fastlane, gradlew). Increase confidence to HIGH for any alert where the child process makes an outbound network connection. Lower alert priority for internal CI/CD hosts with static, version-pinned CLI installations until the patched version is confirmed deployed.
Hunting Queries
Hunt for recurring patterns where a Node.js process (likely react-native CLI) spawns interactive shell processes, which may indicate persistent exploitation or backdoor establishment across the environment.
DeviceProcessEvents
| where TimeGenerated > ago(30d)
| where (ProcessCommandLine has 'react-native' or ParentProcessName has 'node')
| where FileName in ('sh', 'bash', 'zsh', 'dash', 'cmd.exe', 'powershell.exe', 'pwsh.exe')
| summarize count() by DeviceName, AccountName, FileName, ProcessCommandLine
| where count_ > 2
| order by count_ desc index=* (sourcetype=syslog OR sourcetype="xmlwineventlog:microsoft-windows-sysmon/operational")
| where match(parent_process, "(?i)node") AND match(process, "(?i)(sh|bash|zsh|cmd|powershell)")
| stats count by host, user, parent_process, process, cmdline
| where count > 2
| sort -count Atomic Red Team Tests
Simulates injection of a shell command through a CLI argument that is unsafely passed to exec/spawn in the React Native Community CLI, as would occur via CVE-2025-11953.
Command
node -e "const {execSync} = require('child_process'); execSync('npx @react-native-community/cli init \"TestApp; id > /tmp/cve_2025_11953_poc.txt\"', {stdio: 'inherit', shell: true});" Cleanup
rm -f /tmp/cve_2025_11953_poc.txt Expected Telemetry
Process create event showing node spawning sh or bash with a command line containing the injected semicolon-delimited id command; file creation event for /tmp/cve_2025_11953_poc.txt.
Expected Detection
Alert fires on shell metacharacter (;) in react-native CLI argument combined with shell child process spawn.
Simulates an attacker injecting a bash reverse-shell payload into a CLI argument to establish C2 callback, demonstrating the impact of CVE-2025-11953 in a CI/CD context.
Command
node -e "const {execSync} = require('child_process'); try { execSync('echo \"injected: $(id)\" > /tmp/rn_inject_test.txt', {shell: true}); } catch(e) {}" Cleanup
rm -f /tmp/rn_inject_test.txt Expected Telemetry
Process create events for node → sh → id; file write to /tmp/rn_inject_test.txt containing the output of id.
Expected Detection
Alert fires on $() subshell in node process command line combined with sh child process.
Simulates an attacker leveraging CVE-2025-11953 to download a remote payload during CLI invocation, representing a supply-chain or CI/CD pipeline compromise scenario.
Command
node -e "const {execSync} = require('child_process'); try { execSync('echo react-native-cli-context && curl -s -o /tmp/rn_dl_test.txt http://127.0.0.1:9999/payload 2>/dev/null || echo download_attempted', {shell: true}); } catch(e) { require('fs').writeFileSync('/tmp/rn_dl_test.txt', 'attempted'); }" Cleanup
rm -f /tmp/rn_dl_test.txt Expected Telemetry
Process create event for node spawning sh, which spawns curl with an external URL argument; network connection event for curl to destination host.
Expected Detection
Alert fires on react-native CLI context process spawning curl with remote URL, matching RemoteDownload injection pattern.
Simulates CVE-2025-11953 exploitation on a Windows developer workstation where an injected argument causes the CLI to spawn PowerShell.
Command
node -e "const {execSync} = require('child_process'); try { execSync('echo react-native-cli & powershell -Command \"Get-Date | Out-File $env:TEMP\\rn_inject_test.txt\"', {shell: true}); } catch(e) {}" Cleanup
powershell -Command "Remove-Item $env:TEMP\rn_inject_test.txt -ErrorAction SilentlyContinue" Expected Telemetry
Sysmon Event ID 1 showing node.exe spawning cmd.exe which spawns powershell.exe; file creation event in %TEMP% for rn_inject_test.txt.
Expected Detection
Alert fires on react-native CLI Windows shell injection pattern matching & metacharacter combined with powershell child process.