Command Injection
Was ist Command Injection?
Command InjectionAngriff, bei dem Benutzereingaben ungefiltert an eine Betriebssystem-Shell übergeben werden und die Anwendung dadurch vom Angreifer gelieferte Befehle ausführt.
Command Injection (OS Command Injection) entsteht, wenn eine Anwendung einen Systembefehl durch Verkettung nicht vertrauenswürdiger Eingaben zusammensetzt und das Ergebnis an eine Shell übergibt. Metazeichen wie ;, &, |, $() oder Backticks erlauben dem Angreifer, weitere Befehle anzuhängen, die mit den Rechten des Anwendungsprozesses laufen. Folgen sind beliebige Lese- und Schreibzugriffe auf Dateien, Lateral Movement, Reverse Shells und die vollständige Übernahme des Servers. Sie steht in den OWASP Top 10 unter „Injection" (A03:2021) und ist als CWE-78 katalogisiert.
Die eigentliche Ursache ist der Metazeichen-Interpreter der Shell, nicht die Eingabe selbst. Entscheidend ist daher die Unterscheidung zwischen dem Aufruf einer Shell (system(), os.system, Runtime.exec("sh -c ..."), Backticks) und dem direkten Aufruf der Zielbinärdatei mit einem Argumentvektor (execve, subprocess.run([...], shell=False), ProcessBuilder). Argument-Array-APIs übergeben jedes Token als Literal, sodass Metazeichen niemals einen Parser erreichen. Eine verwandte Variante, die Argument-Injection, missbraucht die programmeigenen Flags (etwa durch Einschmuggeln von --output oder -o ProxyCommand in git, curl oder ssh), selbst wenn keine Shell aufgerufen wird.
Auf Netzwerk-Edge-Geräten sind die realen Auswirkungen gravierend. CVE-2024-3400 (CVSS 10.0) war eine nicht authentifizierte OS-Command-Injection in der GlobalProtect-Funktion von Palo Alto Networks PAN-OS, die ab April 2024 als Zero-Day von dem Akteur ausgenutzt wurde, den Volexity als UTA0218 verfolgt, um Reverse Shells zu platzieren und Firewall-Konfigurationen zu exfiltrieren. CVE-2024-21887 in Ivanti Connect Secure ermöglichte, verkettet mit der Authentifizierungsumgehung CVE-2023-46805, eine nicht authentifizierte Befehlsausführung und wurde Anfang 2024 massenhaft ausgenutzt. Der Shellshock-Fehler von 2014 (CVE-2014-6271) erlaubte Angreifern, Befehle über präparierte, von Bash geparste Umgebungsvariablen einzuschleusen, erreichbar über CGI, DHCP und SSH.
Schutzmaßnahmen: die Shell durch Argument-Array-APIs vollständig vermeiden; erwartete Werte streng per Allowlist zulassen; gefährliche Flags und Metazeichen verwerfen; Dienste als Benutzer mit minimalen Rechten in Sandboxes/Containern betreiben; und Egress-Filtering einsetzen, damit ein erlangter Brückenkopf nicht nach außen kommunizieren kann.
flowchart TD
A[Benutzereingabe: hostname] --> B{In Befehl eingebaut}
B -->|"os.system('ping ' + host)"| C[Shell interpretiert Metazeichen]
C --> D["host = 127.0.0.1; cat /etc/shadow"]
D --> E[Angreiferbefehl läuft als App-Benutzer]
E --> F[Reverse Shell / Datenexfiltration / Übernahme]
B -->|"subprocess.run(['ping', host], shell=False)"| G[Argument als literales Token übergeben]
G --> H[Kein Shell-Parsing - Injection neutralisiert]
style F fill:#c0392b,color:#fff
style H fill:#27ae60,color:#fff● Beispiele
- 01
Ein Ping-Tool, das einen Hostnamen-Parameter konkateniert, ermöglicht mit 127.0.0.1; cat /etc/shadow die Preisgabe von Passwort-Hashes.
- 02
Ein Bildverarbeitungs-Endpunkt, der ImageMagick aufruft, führt über einen präparierten Dateinamen einen Angreiferbefehl aus.
● Häufige Fragen
Was ist Command Injection?
Angriff, bei dem Benutzereingaben ungefiltert an eine Betriebssystem-Shell übergeben werden und die Anwendung dadurch vom Angreifer gelieferte Befehle ausführt. Es gehört zur Kategorie Angriffe und Bedrohungen der Cybersicherheit.
Was bedeutet Command Injection?
Angriff, bei dem Benutzereingaben ungefiltert an eine Betriebssystem-Shell übergeben werden und die Anwendung dadurch vom Angreifer gelieferte Befehle ausführt.
Wie schützt man sich gegen Command Injection?
Schutzmaßnahmen gegen Command Injection kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für Command Injection?
Übliche alternative Bezeichnungen: OS-Command-Injection, Shell Injection.