Code Injection kann von einem Angreifer verwendet werden, um bösartigen Code in ein anfälliges Computerprogramm einzuführen und den Verlauf der Ausführung zu ändern.
Jede Software nimmt irgendeine Art von Eingabe entgegen – ein sicheres Programm sollte alle Eingaben aus einer externen Quelle als „nicht vertrauenswürdig“ behandeln, bis das Gegenteil bewiesen ist. Code Injection-Schwachstellen bestehen, wenn ein Angreifer ausführbare Eingaben an ein Programm senden und die Software dazu verleiten kann, diese Eingaben auszuführen. Dies gibt dem Angreifer einen Kanal, mit dem er alle vom Autor des Programms eingeführten Sicherheitsbeschränkungen umgehen kann.
Einige gängige Arten der Code-Injektion sind:
-
SQL-Injektion. Die unsichere Behandlung von HTTP-Parametern beim Erstellen von Abfragen auf einer Website kann es einem Angreifer ermöglichen, beliebige SQL-Anweisungen auf einer anfälligen Anwendung auszuführen.
-
Cross Site Scripting. Eine unsichere Behandlung von HTTP-Parametern kann die Injektion von bösartigem JavaScript in eine Webanwendung ermöglichen.
-
Befehlsausführung. Die unsichere Behandlung von HTTP-Parametern kann es einem Angreifer ermöglichen, beliebige Shell-Befehle auf dem Webserver auszuführen.
Die Folgen einer erfolgreichen Code-Injection sind im Allgemeinen katastrophal fürder Anwendungsautor. Die Risiken können gemindert werden, indem eine sichere Behandlung nicht vertrauenswürdiger Eingaben sichergestellt und eine gründliche Verteidigung praktiziert wird, um die Berechtigungen der ausgeführten Anwendung einzuschränken.