
Command Injection
Command Injection ist eine Sicherheitslücke, bei der ein Angreifer über ein normales Eingabefeld eigene Systembefehle auf einem fremden Computer ausführen lässt. Die Ursache ist fast immer, dass ein Programm Benutzereingaben ungeprüft an das Betriebssystem weiterreicht.
Viele Programme im Internet erledigen ihre Arbeit nicht allein. Sie geben Aufträge an das Betriebssystem weiter, also an die Software, die den Computer steuert. Solche Aufträge sind kurze Textbefehle, etwa « prüfe, ob dieser Server erreichbar ist ». Command Injection heißt: Ein Angreifer schmuggelt in ein harmloses Eingabefeld zusätzlichen Text, der als eigener Befehl gelesen wird. Statt nur eine Adresse zu prüfen, löscht der Computer dann vielleicht Dateien oder schickt Passwörter nach außen. Der Angreifer nutzt also die Leitung, die das Programm ohnehin zum Betriebssystem offen hält.
Warum ein einziges Eingabefeld einen ganzen Server kosten kann
Bei den meisten Angriffen erbeutet jemand Daten. Bei Command Injection passiert mehr: Der Angreifer bekommt die Kontrolle über den Rechner selbst. Er kann Befehle ausführen, als säße er davor. Fachleute nennen so etwas Remote Code Execution, also das Ausführen von fremdem Programmcode aus der Ferne. Das ist die schwerste Kategorie von Sicherheitslücke, die es gibt.
Von einem übernommenen Server aus geht es meist weiter. Angreifer suchen dort gespeicherte Zugangsdaten und springen damit auf weitere Systeme im selben Netzwerk. Aus einer kleinen Lücke in einem unwichtigen Werkzeug wird so der Zugriff auf Kundendatenbanken. Genau deshalb bewerten Sicherheitsfirmen solche Lücken regelmäßig mit den höchsten Gefahrenwerten.
Besonders unangenehm ist, dass die Lücke oft in Geräten steckt, die niemand aktualisiert. Router, Überwachungskameras und Netzwerkspeicher haben kleine Weboberflächen, die Systembefehle nutzen. Solche Geräte laufen jahrelang unverändert im Keller. Angreifer scannen das Internet gezielt nach ihnen und bauen aus tausenden gekaperten Geräten Netzwerke für weitere Attacken.
Der Trick mit dem Semikolon
Ein Beispiel macht es greifbar. Eine Webseite bietet an, die Erreichbarkeit eines Servers zu testen. Man tippt eine Adresse ein, das Programm baut daraus den Systembefehl « ping meine-adresse.de » und führt ihn aus. Solange der Nutzer wirklich nur eine Adresse eingibt, funktioniert das gut.
Nun gibt jemand nicht nur eine Adresse ein, sondern « meine-adresse.de; rm -rf / ». Das Semikolon trennt in vielen Systemen zwei Befehle voneinander. Der Computer führt brav beide aus: erst den Test, dann das Löschen von Dateien. Er kann nicht erkennen, dass der zweite Teil nie vorgesehen war. Für ihn ist alles nur eine Zeile Text.
Der Fehler liegt also nicht im Befehl selbst, sondern im Zusammenkleben von Programmtext und Nutzereingabe. Der wirksamste Schutz ist, gar keinen Text zusammenzubauen. Stattdessen ruft das Programm die gewünschte Funktion direkt auf und übergibt die Eingabe als klar abgegrenzten Wert. Zusätzlich prüft man, ob die Eingabe überhaupt wie eine Adresse aussieht. Man verwechselt Command Injection leicht mit SQL Injection: Dort wird eine Datenbank getäuscht, hier das Betriebssystem. Das Grundmuster ist dasselbe, die Folgen bei Command Injection sind aber meist schwerer.
Von Router-Updates bis zu KI-Agenten
In den Nachrichten taucht der Begriff regelmäßig auf, wenn Hersteller Sicherheitsupdates veröffentlichen. Meldungen über Firewalls, VPN-Zugänge oder Kameras nennen dann eine Kennnummer, die mit « CVE » beginnt. Das ist der weltweite Katalog bekannter Sicherheitslücken. Steht dort « Command Injection », sollte man das Gerät zügig aktualisieren.
Neu brisant wird das Thema durch KI-Assistenten, die selbst Aufgaben erledigen dürfen. Solche Agenten schreiben Code, starten Programme oder durchsuchen Ordner. Bittet ein Nutzer um etwas Harmloses, kann eine manipulierte Webseite dem Assistenten heimlich zusätzliche Anweisungen unterschieben. Führt der Assistent sie ungeprüft aus, entsteht dieselbe Lücke wie beim klassischen Eingabefeld.
Als normaler Nutzer kann man wenig direkt tun, aber zwei Dinge helfen. Erstens: Updates für Router und andere Netzwerkgeräte zeitnah einspielen. Zweitens: Verwaltungsoberflächen solcher Geräte nie ohne Not aus dem Internet erreichbar machen. Wer selbst programmiert, merkt sich die Grundregel: Eingaben von außen sind Daten, niemals Befehle.