Code Injection
Was ist Code Injection?
Code Injection ist eine Angriffsklasse, bei der schädlicher Code über Eingabefelder oder Schnittstellen in eine Anwendung eingeschleust und zur Ausführung gebracht wird. Ziel ist es, die Anwendung zu manipulieren, Informationen auszuspähen oder unautorisiert Aktionen durchzuführen – sowohl auf Applikations‑ als auch Systemebene.
Technischer Hintergrund & Varianten
Typen von Code-Injection:
-
SQL Injection: Einschleusen von SQL-Kommandos zur Manipulation von Datenbanken
-
Command Injection: Ausführung von Shell- oder Systembefehlen durch unsichere Systemaufrufe
-
Template Injection: Missbrauch von Templating-Engines (z. B. Jinja2, Twig) zur Codeausführung
-
LDAP Injection, XPath Injection, OGNL Injection: Ähnliche Muster in anderen Abfrage-Engines
Mechanismus:
-
Eingabedaten werden ohne ausreichende Validierung oder Kodierung direkt in ausführbaren Code übernommen
-
Der Angreifer kann dadurch eigenen Code einschleusen – meist mit dem Ziel, Zugriff auf interne Daten oder Systemfunktionen zu erlangen
Bedeutung in der Praxis
Code Injection ist eine der gefährlichsten Web-Schwachstellen – mit oft gravierenden Folgen:
Risiko | Auswirkung |
---|---|
Datenexfiltration | z. B. alle Userdaten auslesen |
Account-Übernahme | durch Session-Manipulation |
Remote Code Execution (RCE) | z. B. über Bash oder Python Shells |
Eskalation durch Concerns | Verketten mehrerer kleiner Schwächen |
Schutzmaßnahmen
-
Input-Validierung: Nur erlaubte Zeichen und Formate zulassen (Whitelisting)
-
Prepared Statements / parametrisierte Abfragen
-
Escape & Encode bei Ausgabe in HTML, JS, SQL
-
Code/Data Separation – niemals Eingaben direkt in ausführbaren Kontext einfügen
-
Einsatz sicherer Frameworks mit integriertem Schutz (ORM, Templating)
Relevanz in Standards
-
OWASP Top 10 – A1 Injection
-
BSI IT-Grundschutz – SYS.1.2 Anwendungen
-
ISO 27001 Annex A.12.1.2 – Input Validation
Verwandte Begriffe
-
SQL Injection
-
Command Injection
-
RCE (Remote Code Execution)
-
Input Validation
-
Secure Coding
-
Templating Engine
-
Penetrationstest
Beispiel aus der Praxis
Ein Kontaktformular nahm E-Mail-Adressen entgegen. Ein Angreifer fügte statt einer Adresse ein:
test@example.com'; DROP TABLE users; --
Ohne Prepared Statement führte das zur vollständigen Löschung der Benutzerdatenbank.