Zum Inhalt springen

Services, Wiki-Artikel, Blog-Beiträge und Glossar-Einträge durchsuchen

↑↓NavigierenEnterÖffnenESCSchließen
Schwachstellenklassen Glossar

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() ohne ObjectInputFilter
  • 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/unserialize auf 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/pdf erlauben

5. SQL-Injection → RCE

  • LOAD_FILE / INTO OUTFILE in MySQL: Dateien schreiben
  • xp_cmdshell in 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_cmdshell deaktiviert 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)
MetrikWertBedeutung
AV:NNetworkRemote erreichbar
AC:LLowEinfach reproduzierbar
PR:NNoneKein Login nötig
UI:NNoneKein Klick des Opfers nötig
C/I/A:HHighKomplette CIA-Kompromittierung

Cookielose Analyse via Matomo (selbst gehostet, kein Tracking-Cookie). Datenschutzerklärung