Code-Injection
Was ist Code-Injection?
Code-InjectionSchwachstellenklasse, bei der vom Angreifer gelieferte Daten von einer Anwendung als Code interpretiert und ausgeführt werden, was beliebige Ausführung im Kontext erlaubt.
Code-Injection (CWE-94) ist die breite Familie von Schwachstellen, bei denen unvertrauenswürdige Eingaben in etwas einfließen, das die Anwendung später als Programmcode behandelt, sodass die Laufzeit es ausführt. Anders als die Command-Injection (die die OS-Shell erreicht) läuft Code-Injection im eigenen Interpreter der Anwendung. Konkrete Beispiele sind eval-basierte Injection in JavaScript und Python, serverseitige Template-Injection, Expression-Language-Injection (OGNL, SpEL), unsichere Deserialisierung mit Gadget-Chains und dynamisches Klassenladen aus Nutzerdaten. Erfolgreiche Ausnutzung führt meist zu Remote Code Execution unter der Anwendungsidentität — oft der erste Schritt zur Übernahme des Hosts oder Clusters.
Drei Musterfälle zeigen die Wirkung. Apache Struts CVE-2017-5638 erlaubte OGNL-Ausdrücke in einem fehlerhaften Content-Type-Header; eine ungepatchte Instanz verursachte 2017 die Equifax-Datenpanne mit ~147 Millionen Datensätzen. Log4Shell (CVE-2021-44228), CVSS 10.0, machte aus jeder geloggten Zeichenkette mit JNDI-Lookup ein entferntes Laden von Java-Klassen. Spring4Shell (CVE-2022-22965) missbrauchte Springs Data-Binding, um den ClassLoader zu manipulieren und eine Web-Shell abzulegen.
flowchart TD
A[Unvertrauenswürdige Eingabe] --> B{Erreicht sie einen Code-auswertenden Sink?}
B -->|eval / Template / OGNL / deserialize| C[Interpreter führt Angreifercode aus]
B -->|Validiert / parametrisiert| D[Als inerte Daten behandelt]
C --> E[RCE unter der App-Identität]
E --> F[Host- / Cluster-Kompromittierung]
D --> G[Sicher]Abwehr: niemals Code, Templates oder Ausdrücke aus Eingaben bauen; parametrisierte und mit Allowlists versehene APIs nutzen; dynamische Auswertung und Deserialisierung deaktivieren oder sandboxen; Frameworks zeitnah patchen; und mit geringsten Rechten laufen, damit ein RCE den kleinstmöglichen Wirkungsradius hat.
● Beispiele
- 01
eval(request.body.expr) führt angreifergesteuertes JavaScript in einem Node-Dienst aus.
- 02
Java-Anwendung ruft ScriptEngine.eval auf ein vom Nutzer geliefertes Skript auf.
● Häufige Fragen
Was ist Code-Injection?
Schwachstellenklasse, bei der vom Angreifer gelieferte Daten von einer Anwendung als Code interpretiert und ausgeführt werden, was beliebige Ausführung im Kontext erlaubt. Es gehört zur Kategorie Angriffe und Bedrohungen der Cybersicherheit.
Was bedeutet Code-Injection?
Schwachstellenklasse, bei der vom Angreifer gelieferte Daten von einer Anwendung als Code interpretiert und ausgeführt werden, was beliebige Ausführung im Kontext erlaubt.
Wie schützt man sich gegen Code-Injection?
Schutzmaßnahmen gegen Code-Injection kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für Code-Injection?
Übliche alternative Bezeichnungen: Remote Code Execution, Beliebige Code-Ausführung.