Code Injection
Was ist Code Injection?
Definition
Code Injection bedeutet, dass ein Angreifer PHP-Code in eine Anwendung einschleust und die Möglichkeit hat diese auf dem Server auszuführen. Ein erfolgreicher Code Injection Angriff hat zur Folge, dass der Angreifer in der Lage ist Scripte und Datenbänke manipulieren zu können.
Beschreibung
Die Software erstellt ein komplettes oder ein Teil eines Codesegments mit von außen beeinflussten Eingaben. Spezielle Elemente einer Komponente werden dabei nicht oder fehlerhaft neutralisiert, die die Syntax oder das Verhalten des beabsichtigten Codesegments modifizieren.
Wenn die Eingaben eines Benutzers Code-Syntax enthalten, kann es für einen Angreifer möglich sein, den Code so zu gestalten, dass der beabsichtigte Steuerungsfluss der Software geändert wird. Eine solche Änderung kann zur Ausführung von willkürlichem Code führen.
Auswirkung
Es ist am effektivsten, diese Schwächen zu diskutieren, indem man die Besonderheiten erkennt, die sie als Injection Anfälligkeiten einstufen. Der wichtigste zu beachtende Punkt ist, dass alle Injection Probleme eines gemeinsam haben – d.h. sie ermöglichen die Injektion von Daten auf Steuerungsebene in die vom Benutzer gesteuerte Datenebene.
Dies bedeutet, dass die Ausführung des Prozesses durch Senden von Code über legitime Datenkanäle ohne Verwendung eines anderen Mechanismus geändert werden kann. Die häufigsten Instanziierungen dieser Schwachstellen-Kategorie sind SQL-Injection- und Formatstring-Schwachstellen.
Tipp
Überprüfen Sie die Sicherheit Ihrer Website mit unserem kostenlosen Security Crawler oder mit der OSG Performance Suite Free Version.
Lösung
Es ist sicherzustellen, dass der Code für ein Programm nicht dynamisch generiert werden muss. Der Code sollte in einer Umgebung ausgeführt werden, in der strikte Grenzen zwischen dem Prozess und dem Betriebssystem existieren. Dies kann zu effektiven Einschränken für den Code führen.
Durch Eingabevalidierungen werden akzeptierte Eingaben zugelassen und Eingaben mit fehlerhaften Spezifikationen verworfen. Dabei sollte beachtet werden, dass bei der Eingabevalidierung alle potenziell relevanten Eigenschaften, einschließlich Länge, Eingabetyp, den gesamten zulässigen Wertebereich, fehlende oder zusätzliche Eingaben, etc. berücksichtigt werden.
Jedoch sollten nicht ausschließlich Blacklist verwendet werden. Um die Wahrscheinlichkeit einer Code Injection zu verringern, sollten zudem Whitelists verwendet werden, die die zulässigen Konstrukte begrenzen.
Datenbanklink zur Schwachstelle
Sie haben noch Fragen?