Im Laufe der Jahre hat die MIT-Forschungsgruppe „Mitre“ zahlreiche Software-Fehler, die sich Hacker bereits zunutze gemacht haben, analysiert. Die Verwundbarkeits-Klassifikation (CVE) wurde so etwas wie ein de-facto-Standard für den grundlegenden Code einer Software. In Zusammenarbeit mit SANS konnte das Mitre CVE-Team eine Liste der 25 gefährlichsten Programmfehler aufstellen. Im Folgenden stellen wir Ihnen die ersten fünf davon vor.
1. SQL als tödliche Waffe
Wer hätte gedacht, dass eine Datenbankabfragesprache (SQL) eine gefährliche Seite hat? Die SQL Injection funktioniert, indem sie Webanwendungen mit schlecht programmiertem Code nutzt, was dazu führt, dass Benutzereingaben nicht „gereinigt“ werden. Jeder vom Benutzer gemachten Eingabe – wie zum Beispiel einem Suchbegriff in einem Suchfeld – sollte man generell misstrauen. Gerade Raw-Benutzereingaben sollten niemals in einer SQL-Folge von Befehlszeichen verwendet werden. Nie.
Ein Beispiel: In der URL http://abankcompany.com?tag=pci könnte nach dem „?“ ein toxischer SQL-Befehl addiert werden, der, wenn nicht korrekt vom Backend-Web-Code bereinigt, zu potenziell schwerwiegenden Schäden führen kann.
Ein Befehl mit dem Inhalt: http://abankcompany.com?tag=pci union select 1,2,3 würde Daten aus den entsprechenden Tabellen für einen Nutzer offen legen. Oder noch schlimmer: www.abankcompany.com?tag=pci; drop table user; könnte verwendet werden, um eine Schlüsseltabelle zu entfernen.
Zum Glück sind die meisten der modernen Frameworks zur Webprogrammierung mit integrierten Methoden ausgestattet, die eine Validierung der Benutzereingaben fordern. Es sei denn, der Programmierer ignoriert diese Sicherheitshinweise absichtlich.
Hier erfahren Sie mehr dazu, wie Sie ihre Website im Hinblick auf diese Schwachstelle überprüfen können.
Im richtigen Leben würde es sich vielleicht so verhalten …
2. Ninja OS-Befehle
Eine OS-Injection ist eine der SQL-Variante durchaus vergleichbare Schwachstelle. Hier nutzen Hacker allerdings fehlerhafte Anwendungen über Befehle auf Betriebssystemebene anstelle der Datenbankebene aus. Das zugrundeliegende Problem ist ebenfalls auf eine fehlerhafte Überprüfung der Eingaben zurückzuführen. Das machen sich Hacker zunutze. Sie sind damit in der Lage, zusätzliche Befehle über die App-Schnittstelle auszuführen. Sollte die betroffene App auf einer höheren Berechtigungsstufe laufen, kann dies eine wichtige Hintertür bei der Ausführung von Shell-Commands sein, beispielsweise um Root-Zugriffsrechte mittels rm –rf *.*— zu erlangen.
Eine Möglichkeit, gegen OS-Injektionen vorzugehen, ist mittels Whitelisting nur eine definierte Anzahl von Befehlen zuzulassen, die von der App oder dem Server ausgeführt werden dürfen. Im Microsoft Windows Betriebssystem gibt es beispielsweise Richtlinien zur Softwareeinschränkung im Group Policy Object (GPO)-Editor. So werden die Befehle gesteuert und die APIs, die eine App ausführen kann, werden vorsorglich festgelegt.
Richtlinien zur Softwareeinschränkung im GPO-Editor
Quelle: http://technet.microsoft.com/en-us/library/cc786941(v=ws.10).aspx
3. Gestaffelte Attacken
Buffer Overflow ist ein klassischer Exploit, der seit den Anfängen des Internets existiert. Er funktioniert ähnlich wie der zuvor beschriebene Angriff, konzentriert sich aber auf weit gefährdetere Computersprachen wie C und vor allem C++.
Um die Funktionsweise zu verstehen, müssen Sie tief in die Materie von Computersprachen und ihren Laufzeitumgebungen eintauchen. Diese Art von Attacken nutzt sehr geschickt die oft vernachlässigte Kontrolle an den Speichergrenzen der C-Sprachfamilie aus. Das untere Diagramm geht genauer darauf ein.
Konsistenzprüfungen von Sonderlaufzeiten oder Whitelists (siehe oben) sind wirksame Maßnahmen, um diese Art von Angriffen zu verhindern oder wenigstens potenziell entstehende Schäden zu begrenzen.
4. Crossover-Hit
Mitre schätzt Cross-site Scripting (XSS) “ als eine der Schwachstellen ein, die am häufigsten vorkommen und die am hartnäckigsten und gefährlichsten sind. ”Wenn wir im Web surfen gehen wir davon aus, dass alle Inhalte und eingebetteten Skripte tatsächlich von der von uns aufgerufenen Seite oder Domain stammen. Das ist allerdings nicht der Fall, wenn Hacker ihre Finger im Spiel haben.
Wie bei einer SQL-Injection schiebt der Cross-Site-Scripting-Code hier einen Keil – meist mittels Javascript – direkt in die URL. Webseiten mit dynamisch generiertem PHP, Python, ASP, usw. werden von Hackern gezielt ausgenutzt, um deren Schwachstellen ausfindig zu machen. Diese liegen zumeist serverseitig vor und bieten eine breite Angriffsfläche für Manipulationen und zum Einfügen bösartiger Skripte.
Wie kann man diese Art von Attacken stoppen? Das Open Web Application Security Project (OWASP) verfügt über ein eigenes XSS Cheat-Sheet, das HTML-Attribute auflistet, die eine Injektion fremder Skripten ermöglichen.
5. Treten Sie ein!
Nehmen wir an, Ihr Unternehmen nutzt eine Web-Software um durchaus kritische Funktionen auszuführen. Beispielsweise um ein neues Bankkonto anzulegen, Überweisungen auszuführen oder um sensible Finanzinformationen anzuzeigen. Die Software oder Applikation überprüft dabei zunächst die notwendige Authentifizierung, wenn sich der Benutzer anmeldet. Aber wenn kritische Transaktionen durchgeführt werden und an diesen Stellen keine Authentifizierungsprüfungen oder standardisierte Authentifizierungsfunktionen durchgeführt werden, können Hacker genau diese Schwachstelle für ihre Zwecke nutzen.
Das Ergebnis: Kritische Parameter werden manipuliert, was typischerweise durch eine direkte Übergabe von Parametern in der URL ermöglicht wird, wie wir sie schon von SQL-Injection-Angriffen kennen. Eine andere Möglichkeit besteht in der Manipulation der Parameter durch einen Web-Cookie.
Mitre empfiehlt standardisierte Bibliotheken zu verwenden und damit Authentifizierungsprüfungen durchzuführen, anstatt sich auf angepasste Ad-hoc-Ansätze zu verlassen.
Wo liegt der Fehler in diesem Code?
Klicken Sie hier, um die Lösung anzuzeigen
Dieser Code kann umgangen werden. Der Angreifer kann die Cookies so manipulieren, dass sie nicht den Code mit dem Benutzernamen und das Kennwort überprüfen. Das bewerkstelligt der Angreifer erneut über eine HTTP-Anfrage:
Bei der Einstellung des Login-Cookies auf den Wert “true”, umgeht der Angreifer die komplette Authentifizierungsprüfung. Durch die Verwendung des „Administrator“-Wertes im Benutzer-Cookie erhält der Angreifer zudem die Rechte um die Software zu verwalten.
The post Die fünf gefährlichsten Software-Fehler appeared first on Varonis Deutsch.