RCE - Remote Code Execution
Remote Code Execution (RCE) ist die kritischste Schwachstellenklasse und ermöglicht einem Angreifer beliebigen Code auf dem Zielsystem auszuführen - ohne physischen Zugang. RCE resultiert aus Schwachstellen wie Buffer Overflows, Deserialisierungsfehler, Command Injection, Server-Side Template Injection (SSTI), SQL-Injection mit Datei-Schreibrechten, oder Path Traversal in Kombination mit Datei-Upload. CVSS-Score: typisch 9.0-10.0 (Critical). RCE ist Ausgangspunkt für Ransomware, Lateral Movement und APT-Angriffe.
Remote Code Execution ist der “Holy Grail” des Angreifers - und der schlimmste Alptraum eines Administrators. Ein erfolgreicher RCE gibt einem Angreifer die vollständige Kontrolle über ein System, ohne jemals physisch präsent sein zu müssen. Log4Shell (CVE-2021-44228) demonstrierte 2021 wie ein einzelnes RCE in einer verbreiteten Bibliothek innerhalb von Stunden Hunderttausende Systeme weltweit gefährdet.
RCE-Entstehungsquellen
1. Command Injection
CVSS 9.8 (häufig unauthenticated): Benutzereingaben werden an OS-Shell weitergegeben.
Unsichere Implementierungen:
- Python subprocess mit
shell=True+ unvalidierter Eingabe - PHP
shell_exec()/passthru()mit Benutzereingaben - Node.js child_process-Funktionen mit interpolierten Parametern (exec-Variante)
- Java
Runtime.getRuntime().exec()mit String-Konkatenation
Sichere Alternative:
- Parameterisierte Befehle ohne Shell-Interpretation
- Input-Allowlist: nur alphanumerische Zeichen zulassen
- Parameterlisten statt Shell-Strings (kein Metacharacter-Problem)
2. Server-Side Template Injection (SSTI)
Template-Engine verarbeitet Benutzereingaben als Template-Code.
- Erkennungstest: Wenn
{{7*7}}im Response “49” zurückgibt → Template-Injection bestätigt! (Jinja2, Twig, etc.) - Engine-spezifische Escaping-Funktion fehlt
- Im schlimmsten Fall: Zugriff auf Interpreter-Klassen → RCE
Schutz:
- Nie Benutzereingaben als Template-Quellcode rendern
- Nur Variablen in Templates übergeben (kein Templatecode aus Userinput)
- Sandboxed Template-Engine verwenden (
Environment(sandbox=True))
3. Deserialisierung
Objekte werden von binären/Text-Formaten geladen ohne Validierung:
- Java:
readObject()ohneObjectInputFilter - PHP:
unserialize()ohne Klassen-Allowlist - Python:
pickle.loads()auf nicht vertrauenswürdigen Daten - Angreifer injiziert präpariertes serialisiertes Objekt → Gadget-Chain
- Ergebnis: beliebige Methoden werden beim Deserialisieren aufgerufen!
Schutz:
- JSON/Protocol Buffers statt native Serialisierung
ObjectInputFilter(Java): erlaubte Klassen whitelisten- Niemals
pickle/unserializeauf externe Daten anwenden!
4. Dateiupload + Path Traversal
- Angreifer lädt ausführbare Datei hoch (Webshell)
- Server führt Upload-Datei aus (fehlende Validierung des Dateityps)
- Häufig: PHP-Webshells in als Bild getarnter Datei
Schutz:
- Dateityp-Validierung (Magic Bytes, nicht nur Extension)
- Uploads außerhalb WebRoot speichern (nie direkt servieren!)
Content-Disposition: attachment(kein inline-Rendering)- Allowlist: nur
image/jpeg,image/png,application/pdferlauben
5. SQL-Injection → RCE
LOAD_FILE/INTO OUTFILEin MySQL: Dateien schreibenxp_cmdshellin MSSQL: direkte Befehls-Ausführung- Voraussetzung: hohe Datenbankrechte (FILE-Privileg, sysadmin)
Schutz:
- Prepared Statements gegen SQL-Injection
- Minimale DB-Rechte: kein FILE-Privileg für App-User
- MSSQL:
xp_cmdshelldeaktiviert halten
Bekannte RCE-CVEs (Referenz)
Log4Shell (CVE-2021-44228)
- Software: Apache Log4j 2.0-2.14.1
- CVSS: 10.0 (Critical)
- Methode: JNDI-Lookup in Log-Messages
- Payload-Prinzip: Präparierter Log-Eintrag lädt Remote-Klasse via LDAP
- Impact: Nahezu alle Java-Applikationen betroffen
- Fix: Upgrade auf Log4j 2.15.0+ / JVM-Flag setzen
EternalBlue (CVE-2017-0144)
- Software: Windows SMBv1
- CVSS: 9.8 (Critical)
- Methode: Buffer Overflow in SMB-Implementierung
- Genutzt von: WannaCry, NotPetya Ransomware (2017)
- Fix: MS17-010 Patch + SMBv1 deaktivieren!
Spring4Shell (CVE-2022-22965)
- Software: Spring Framework < 5.3.18
- CVSS: 9.8 (Critical)
- Methode: Data Binding + ClassLoader-Manipulation
- Fix: Upgrade auf Spring 5.3.18+ oder 5.2.20+
ProxyLogon (CVE-2021-26855)
- Software: Microsoft Exchange Server
- CVSS: 9.8 (Critical)
- Methode: SSRF → Server-Side Authentication Bypass → SYSTEM
- Genutzt von: Hafnium (APT), Ransomware-Gruppen
Confluence OGNL-Injection (CVE-2022-26134)
- Software: Atlassian Confluence
- CVSS: 9.8 (Critical)
- Methode: OGNL Template Expression in URL → Code-Ausführung
- Fix: Upgrade auf 7.4.17+ / 7.13.7+
Text4Shell (CVE-2022-42889)
- Software: Apache Commons Text < 1.10.0
- Methode: Lookup-Interpolation:
${script:js:...}führt Code aus - Ähnlichkeit zu Log4Shell aber geringerer Scope
Schutzmaßnahmen gegen RCE
Entwicklung (Shift-Left)
- Parameterisierte Befehle statt Shell-Interpolation
- Deserialisierung: JSON/Protobuf statt native Formate
- Template-Engines: User-Input nur als Variablen, nie als Quellcode
- SAST in CI/CD: CodeQL, Semgrep (findet Command-Injection-Pattern)
- Dependency-Check: Snyk, Dependabot, OWASP Dependency-Check
Infrastruktur
- Patch-Management: kritische CVEs innerhalb 7 Tage (EPSS-Prioritisierung)
- WAF: OWASP CRS blockt viele RCE-Payloads (SQLi, SSTI, Command Inj.)
- Least Privilege: Web-Server ohne Root-Rechte (non-root User!)
- Container-Security: read-only Filesystem, kein privilegierter Modus
- Network-Segmentation: Web-Server hat keinen Datenbankzugriff direkt
Detektiv
- EDR: Anomale Prozess-Hierarchien (Web-Server spawnt Shell)
- SIEM-Regel: ausgehende Netzwerkverbindungen von Server-Prozessen
- File-Integrity-Monitoring: neue Dateien in WebRoot → sofort Alert
- Vulnerability-Scanner (Nessus, Qualys): wöchentlicher Scan
Reaktiv
- Incident Response Plan: RCE → sofortige Netzwerk-Isolation
- Forensik: Logs 90 Tage aufbewahren (wann war Initial Access?)
- Backup-Validierung: wiederherstellbar nach Kompromittierung?
- Kommunikation: Meldepflicht DSGVO (Art. 33) bei Datenpanne durch RCE
CVSS-Bewertung RCE (Beispiel)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Score: 9.8 (Critical)
| Metrik | Wert | Bedeutung |
|---|---|---|
| AV:N | Network | Remote erreichbar |
| AC:L | Low | Einfach reproduzierbar |
| PR:N | None | Kein Login nötig |
| UI:N | None | Kein Klick des Opfers nötig |
| C/I/A:H | High | Komplette CIA-Kompromittierung |