+(49) 0123-4567890 anywhere@securam.com
SECURAM NIS-2 Registrierung NIS-2 BSI Portal

Glossar

Code Injection

Code-Injektion ist eine Angriffsform, bei der Angreifer fremden Programmcode in eine Anwendung einschleusen und zur Ausführung bringen. Sie dient dazu, Anwendungslogik zu manipulieren, Berechtigungen auszuweiten oder beliebige Befehle auf Servern auszuführen. Typische Einfallstore sind unsicher verarbeitete Eingaben, dynamische Interpreteraufrufe oder Template-Engines. 

Code-Injektion: Hintergrund und Entstehung

Code-Injektion gehört zur größeren Klasse der Injection-Schwachstellen, die seit vielen Jahren in gängigen Katalogen, Katalogen von Schwachstellen und Leitfäden beschrieben und getestet werden. Bereits früh wurde dokumentiert, dass dynamische Interpreter-Aufrufe wie `eval` oder Skript-Einbettungen Angriffsflächen eröffnen, sobald Eingaben ungeprüft einfließen.

Sicherheitskataloge im DACH-Raum, insbesondere der BSI-IT-Grundschutz, führen Injection-Risiken in Bausteinen zu Webanwendungen und empfehlen systematische Eingabevalidierung, sichere Bibliotheken sowie die Vermeidung gefährlicher Sprachkonstrukte. Damit ist Code-Injektion nicht nur ein Entwickler-, sondern auch ein Organisations- und Prozessthema.

Wichtigste Merkmale und Kernelemente

Angriffsoberflächen:
Code-Injektion zielt auf Komponenten, die über Interpreter Code aus Eingaben generieren oder ausführen. Beispiele sind dynamische Ausdrucksauswertung, Skriptsprachen-Funktionen (`eval`, `exec`) sowie Template-Engines mit Ausdruckssprache.

Typische Vektoren:
Ungeprüfte Benutzereingaben, HTTP-Parameter oder Deserialisierungsdaten gelangen in Codepfade. Auch fehlerhaft konfigurierte Template-Engines oder Erweiterungs-Hooks können zu Remote Code Execution (RCE) führen.

Auswirkungen:
Je nach Kontext reichen die Folgen von Anwendungsabstürzen über Datenabfluss bis zu vollständiger Systemübernahme. Bei serverseitiger Ausführung kann der Angreifer Prozesse starten, Dateien lesen oder schreiben und weitere Seiteneffekte auslösen.

Erkennung:
Üblich ist eine Kombination aus statischer Code-Analyse (SAST), dynamischen Tests (DAST) und gezielten Security-Code-Reviews kritischer Funktionen („dangerous APIs“, z. B. `eval`, `System.exec`, `subprocess`). Testleitfäden liefern konkrete Prüfschritte und Payload-Muster für Code-Injektion und verwandte Injection-Szenarien.

Prävention:
Zentrale Maßnahmen sind strikte Whitelist-Validierung und kontextgerechtes Escaping, Parametrisierung statt String-Konkatenation, Deaktivierung gefährlicher Interpreter-Features, Sandboxing und Least-Privilege-Prinzip sowie Härtung der Laufzeitumgebung. Entwicklungsrichtlinien und Bibliotheken sollten „safe by default“ sein.

Bedeutung für Unternehmen und Praxisrelevanz

Für Unternehmen im DACH-Raum ist Code-Injektion besonders relevant, weil viele Fach- und Legacy-Anwendungen Template-Engines, Skriptsprachen oder Plugin-Mechanismen nutzen. Der BSI-Grundschutz fordert hierfür geeignete Entwicklungs- und Betriebsmaßnahmen, unter anderem Eingabevalidierung, Rechte­trennung und regelmäßige Penetrationstests. 

CISOs und IT-Leitungen sollten Secure-Coding-Policies verbindlich machen, gefährliche APIs auf „Deny-Lists“ setzen und Quality-Gates im CI/CD etablieren (SAST/DAST, Peer-Reviews). Ein Schwachstellenmanagement mit Ticketing, Priorisierung und Nachweis der Wirksamkeit (Re-Test) ist organisatorisch zu verankern.

In der Praxis zeigt sich, dass Teams, die Interpreter-Features deaktivieren, Eingaben strikt parsen und Parametrisierung nutzen, das RCE-Risiko deutlich reduzieren. Ergänzend sollten Betriebskontrollen (Isolierung von Anwendungen, Egress-Kontrollen, minimal privilegierte Service-Konten) etabliert werden, um Auswirkungen erfolgreicher Angriffe zu begrenzen.

Abgrenzung zu verwandten Begriffen

Code-Injektion vs. Command Injection:
Code-Injektion bringt Code in eine Anwendungs- oder Skriptlaufzeit (Interpreter, VM) ein. Command Injection missbraucht Schnittstellen zur Betriebssystem-Shell (z. B. `; cat /etc/passwd`). Beide gehören zur Klasse der Injection-Schwachstellen, unterscheiden sich aber in Zielumgebung und Payload.

Code-Injektion vs. SQL-Injection/XSS:
SQL-Injection manipuliert Datenbank-Abfragen, Cross-Site Scripting (XSS) injiziert Skriptcode in den Browser anderer Nutzer. Bei Code-Injektion läuft der eingeschleuste Code in der Regel serverseitig im Prozess der Anwendung.

Beispiele aus der Praxis

Beispiel 1: Template-Engine in einer SaaS-Anwendung
Eine deutsche B2B-Plattform erlaubte in E-Mail-Vorlagen die Auswertung von Ausdrücken. Ungefilterte Platzhalter führten zu einem serverseitigen Template-Injection-Pfad und schließlich zu RCE. Abhilfe schufen eine strikte Whitelist-Syntax, abgeschaltete gefährliche Filter, Container-Sandboxing und gehärtete Service-Konten. 

Beispiel 2: Skript-Eval im Reporting:
Ein internes Reporting-System nutzte `eval()` zur Formelverarbeitung. Ein Angreifer injizierte Dateizugriffe und exfiltrierte Konfigurationsdaten. Gegenmaßnahmen waren eine Parser-basierte Auswertung statt `eval`, ein Read-only-Dateisystem sowie eine Applikations-Firewall als zusätzliche Kontrollschicht. 

Häufig gestellte Fragen

Was ist Code-Injektion? 

Code-Injektion bezeichnet das Einschleusen und Ausführen fremden Codes innerhalb einer Anwendung, typischerweise über unsicher verarbeitete Eingaben und Interpreter-Funktionen. Ziel können RCE, Datenabfluss oder Logik-Manipulation sein. Offizielle Leitfäden klassifizieren Code-Injektion als spezifische Form der Injection-Schwachstelle.

Wie funktioniert Code-Injektion?

Unvalidierte Eingaben gelangen in Codepfade, die dynamisch interpretiert werden. Beispiele sind `eval`/`exec`, Skript-Erweiterungen oder Ausdruckssprachen in Templates. Gelingt die Einbettung, führt die Anwendung den Payload im eigenen Kontext aus, sodass der Angreifer die Anwendung oder das System kontrollieren kann. Testleitfäden dokumentieren typische Testszenarien und Payload-Muster.

Wie kann man Code-Injektion verhindern? 

Eingaben sollten strikt whitelisting-basiert validiert und kontextgerecht escapet werden. Parametrisierung sollte String-Konkatenation ersetzen, gefährliche Interpreter-Features sind zu deaktivieren, und Laufzeitumgebungen sollten mit minimalen Rechten betrieben werden. Ergänzend helfen SAST/DAST, Code-Reviews und Härtungsmaßnahmen nach BSI-Grundschutz, um Code-Injektion systematisch zu adressieren.

Worin unterscheidet sich Code-Injektion von Command Injection?

Bei Code-Injektion läuft eingeschleuster Code im Interpreter der Anwendung, während bei Command Injection Betriebssystem-Befehle über die Shell ausgeführt werden. Command-Injection-Angriffe nutzen häufig Steuerzeichen wie `|` oder `;` und zielen direkt auf Systembefehle. Beide Angriffsarten erfordern strenge Eingabekontrollen, erfordern aber unterschiedliche Härtungsmaßnahmen auf Applikations- und Betriebssystemebene.

Quellen

[Q1] Wikipedia: „Code-Injektion“, https://de.wikipedia.org/wiki/Code-Injektion, Abrufdatum: 10.11.2025.

[Q2] OWASP Web Security Testing Guide: „4.7 Input Validation Testing“ (inkl. „Testing for Code Injection“ und „Testing for Command Injection“),
https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/07-Input_Validation_Testing/README, Abrufdatum: 10.11.2025.

[Q3] BSI IT-Grundschutz-Kompendium: Baustein „APP.3.1 Webanwendungen und Webservices (Edition 2022)“,
https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/IT-GS-Kompendium_Einzel_PDFs_2022/06_APP_Anwendungen/APP_3_1_Webanwendungen_und_Webservices_Edition_2022.html, Abrufdatum: 10.11.2025.

[Q4] MITRE CWE-96: „Improper Neutralization of Directives in Statically Saved Code (‚Static Code Injection‘)“,
https://cwe.mitre.org/data/definitions/96.html, Abrufdatum: 10.11.2025.

Kontakt

DSGVO-Hinweis

Neue ABC-Straße 8
20354 Hamburg
040 2984553-0
contact@securam-consulting.com