Remote Code Execution (RCE)

Security · Critical
Definition

Remote Code Execution (RCE) is the most severe class of security vulnerability. It allows an attacker to execute any code they choose on the target system — over the network, without logging in, without physical access. A successful RCE attack gives the attacker complete control of the affected process and potentially the entire system.

Why RCE is the worst outcome

With RCE, an attacker can do anything the compromised process can do: read files, write files, make network connections, install persistence mechanisms, move laterally to other systems. It's game over for the affected system.

In the context of web servers, RCE typically means full server compromise — access to database credentials in environment variables, private keys, customer data, and the ability to serve malicious content to your users.

How RCE happens in dependencies

The most common RCE patterns in open source dependencies:

RCE CVEs on CISA KEV

Every CRITICAL CVE in PackageFix's database that allows RCE appears on or has been considered for CISA KEV. Log4Shell (CVSS 10.0), Spring4Shell (9.8), Text4Shell (9.8), SnakeYAML (9.8), PHPMailer 2016 (9.8) — all RCE, all exploited in the wild.

Paste your manifest — get a fixed version with all CVEs patched in seconds.

Open PackageFix →

Free · No signup · No CLI · Runs in your browser

Common questions

What CVSS score does RCE get?
RCE vulnerabilities that are network-accessible with no authentication typically get CVSS 9.0-10.0 (Critical). The exact score depends on attack complexity, privilege requirements, and impact scope. CVSS 10.0 means maximum severity: network-accessible, no auth, no user interaction, complete system compromise.
How do I prevent RCE in my dependencies?
Keep all dependencies updated — RCE CVEs are patched when discovered. Specifically: never deserialize untrusted data without an allowlist, never pass untrusted input to eval() or exec(), keep Java's JNDI disabled in production (fixes Log4Shell class), and use yaml.safe_load() not yaml.load() in Python.
If my app has an RCE CVE, what should I do immediately?
Patch immediately. If no patch is available, take the affected service offline or implement the vendor's recommended workaround. Assume the system may already be compromised — review logs for unusual activity, rotate all credentials that were accessible to the affected process.
Is RCE possible through npm packages?
Yes — postinstall scripts in npm packages run automatically on npm install with full process permissions. A malicious postinstall script that runs curl | bash is effectively RCE on the developer's machine or CI server. This is why PackageFix scans for suspicious build scripts.

Related