IT-Sicherheit Glossar

Was ist Remote Code Execution?

Remote Code Execution, kurz RCE, beschreibt die Auswirkung einer Schwachstelle, über die ein Angreifer Code auf einem anderen System ausführen kann. RCE ist kein einzelner Schwachstellentyp. Command Injection, unsichere Deserialisierung, Template Injection oder Speicherfehler können alle zu einer RCE führen.

Die Folgen hängen von den Rechten und der Isolation des betroffenen Prozesses ab. Angreifer können Geheimnisse lesen, Anwendungen manipulieren, sich dauerhaft einnisten oder sich seitlich im Netzwerk bewegen. Auch ein niedrig berechtigter Prozess kann sensible Daten preisgeben und als Ausgangspunkt für weitere Angriffe dienen.

Wie sollte ein RCE-Fund behandelt werden?

  • - Den betroffenen Dienst isolieren und den Hersteller-Patch einspielen oder die verwundbare Funktion deaktivieren.
  • - Bei erreichbaren Systemen eine mögliche Kompromittierung annehmen und Logs, Prozesse sowie ausgehende Verbindungen prüfen.
  • - Zugangsdaten und Secrets rotieren, auf die der betroffene Prozess zugreifen konnte.
  • - Segmentierung, Sandboxen und minimale Rechte einsetzen, um die Folgen künftiger Fehler zu begrenzen.

Bedeutet RCE immer vollständige Serverkontrolle?

Nein. Code läuft zunächst im Kontext des verwundbaren Prozesses. Container, Betriebssystemrechte und Netzwerkregeln können ihn einschränken. Trotzdem wird RCE üblicherweise als kritisch behandelt, weil die zentrale Grenze zwischen Eingabe und Ausführung überschritten wurde.

Wie entsteht Remote Code Execution?

RCE ist meist die Auswirkung einer konkreteren Schwachstelle. Unsichere Deserialisierung kann beim Rekonstruieren eines Objekts gefährliche Methoden auslösen, eine Command Injection übergibt Eingaben an eine Shell und eine Template Injection erreicht Funktionen der Template-Engine. Auch Speicherfehler, unsichere Datei-Uploads oder verwundbare Abhängigkeiten können Codeausführung ermöglichen. Für die Behebung muss deshalb die zugrunde liegende Fehlerklasse verstanden werden.

Von der Codeausführung zur Systemübernahme

Nach einem ersten Nachweis untersucht ein Angreifer Benutzerrechte, erreichbare Geheimnisse, Netzwerkverbindungen und Möglichkeiten zur Persistenz. Anwendungsschlüssel, Cloud-Tokens oder Datenbankzugänge können wichtiger sein als lokale Administratorrechte. In Containerumgebungen ist entscheidend, welche Volumes, Sockets und Service-Accounts eingebunden sind. Die reale Auswirkung ergibt sich daher aus Codeausführung, Laufzeitkontext und Architektur.

Wie lässt sich RCE erkennen?

Hinweise sind unerwartete Kindprozesse eines Webservers, neue Dateien, ungewöhnliche ausgehende Verbindungen, verdächtige Befehlszeilen und abweichendes Anwendungsverhalten. EDR, Prozess- und Netzwerkprotokolle sowie unveränderliche Audit-Logs ergänzen sich. Bei Tests sollte ein ungefährlicher Nachweis genügen. Das Starten einer interaktiven Shell ist auf Produktivsystemen selten erforderlich und erhöht das Risiko unnötig.

Prävention und Begrenzung des Schadens

Sichere APIs, konsequentes Patchen, restriktive Upload-Verarbeitung und das Entfernen gefährlicher Auswertungspfade verhindern konkrete Ursachen. Prozesse sollten ohne Root-Rechte, mit schreibgeschütztem Dateisystem und minimalen Netzwerk- sowie Secret-Berechtigungen laufen. Eine solche Isolation macht eine RCE nicht akzeptabel, verhindert aber häufig, dass ein einzelner Fehler zum vollständigen Verlust der Umgebung führt.

Codebeispiel: dynamische Ausführung vermeiden

Verwundbar: Ein Request bestimmt ausführbaren PHP-Code.

$expression = $request->input('formula');
$result = eval('return ' . $expression . ';');

Sicherer Entwurf für bekannte Operationen:

$operations = [
    'net' => fn (float $value) => $value / 1.19,
    'gross' => fn (float $value) => $value * 1.19,
];

$operation = $request->string('operation')->toString();
abort_unless(isset($operations[$operation]), 422);

$value = $request->validate(['value' => ['required', 'numeric']])['value'];
$result = $operations[$operation]((float) $value);

RCE kann viele Ursachen besitzen; dieses Beispiel behebt nur dynamische Codeauswertung. Bei Command Injection, Deserialisierung, SSTI oder Uploads muss die jeweilige Ursachenkontrolle greifen.

Penetrationstests

Sicherheitslücken aufdecken

Professionelle Penetrationstests für Ihr Unternehmen

Web Apps
Netzwerke
Mobile Apps
10% Neukunden-Rabatt
Jetzt planen

Mehr Informationsmaterial

Open-Source-Werkzeuge

Eine RCE-Verifikation darf keinen produktiven Befehl oder dauerhafte Payload benötigen. Harmlose Marker und kontrollierte Callbacks reichen; bekannte Komponentenfunde beweisen noch keine Erreichbarkeit.

Vielen Dank für dein Feedback! Wir werden es prüfen und unseren Artikel anpassen.

Hast du Feedback zum Thema Remote Code Execution (RCE)? Schreib uns!