einem Trick, bei dem ein Angreifer es schafft, über einen scheinbar harmlosen Briefkasten direkte Anweisungen an die komplette Haustechnik eines Gebäudes weiterzuleiten, statt nur einen einzelnen Brief einzuwerfen
Was steckt dahinter?
Command Injection funktioniert nach einem ganz ähnlichen Grundprinzip wie eine SQL Injection, zielt jedoch nicht auf die Datenbank, sondern direkt auf das zugrunde liegende Betriebssystem des Servers ab – vergleichbar mit einem Trick, bei dem ein Angreifer es schafft, über einen scheinbar harmlosen Briefkasten direkte Anweisungen an die komplette Haustechnik eines Gebäudes weiterzuleiten, statt nur einen einzelnen Brief einzuwerfen. Webanwendungen rufen mitunter im Hintergrund Befehle des Betriebssystems auf, etwa um eine hochgeladene Datei zu konvertieren oder ein externes Programm zur Bildbearbeitung aufzurufen. Werden dabei Nutzereingaben ungeprüft in diesen Systembefehl eingebaut, kann ein Angreifer durch geschickt formulierte Eingaben zusätzliche, eigene Befehle einschleusen, die der Server dann ebenfalls ausführt, ohne dies als bösartig zu erkennen. Im Erfolgsfall erhält ein Angreifer dadurch potenziell weitreichenden Zugriff auf den kompletten Webserver – deutlich umfassender als bei einer reinen SQL Injection, die sich primär auf die Datenbank beschränkt, da hier direkt das Betriebssystem selbst betroffen ist. Aus diesem Grund gilt es als grundsätzliche Best Practice, den direkten Aufruf von Betriebssystem-Befehlen aus einer Webanwendung heraus möglichst vollständig zu vermeiden und stattdessen auf sichere, dafür vorgesehene Programmierschnittstellen der jeweiligen Programmiersprache zurückzugreifen. Ist ein solcher Systemaufruf in Ausnahmefällen unvermeidbar, müssen sämtliche darin enthaltenen Nutzereingaben besonders streng validiert und von potenziell gefährlichen Sonderzeichen befreit werden, bevor sie überhaupt an das Betriebssystem weitergereicht werden.