Wikipedia · einfach zusammengefasst · Stand
Exploit
SQL-Injection-Exploits. Bearbeiten · SQL-Injection-Exploits sind eine spezielle Art von Exploits und finden hauptsächlich Einsatz bei Webanwendungen, die eine …
Inhalt5 Abschnitte
Begriff und grundlegende Funktionsweise
Ein Exploit ist eine systematische Möglichkeit, Sicherheitslücken oder Fehlfunktionen auszunutzen, die bei der Entwicklung eines Programms entstanden sind. Mithilfe von speziell gestaltetem Programmcode werden Schwachstellen in einzelnen Programmen oder ganzen Computersystemen ausgenutzt. Ziele können sein, sich Zugang zu Ressourcen zu verschaffen, in Computersysteme einzudringen oder diese zu beeinträchtigen.
Ein Exploit kann auch nur dazu entwickelt und dokumentiert werden, eine Sicherheitslücke nachzuweisen. Dadurch sollen Softwarehersteller die Lücke schneller erkennen und schließen können. Bereits die reine Beschreibung eines Exploits wird häufig ebenfalls als Exploit bezeichnet.
Viele Exploits nutzen eine Eigenschaft der Von-Neumann-Architektur aus, die in nahezu allen Heim- und Bürorechnern verwendet wird: Der Computer unterscheidet nicht grundsätzlich zwischen Programmcode und Nutzdaten. Bei einem Pufferüberlauf wird beispielsweise Angreifercode in einen nicht dafür vorgesehenen Speicherbereich geschrieben. Dadurch kann die Ausführung eines Programms manipuliert werden. Bei einem Formatstring-Angriff werden ungefilterte Benutzereingaben an Formatierungsfunktionen wie printf() übergeben. Gelingt der Angriff, kann fremder Code ausgeführt werden, etwa um eine Shell mit den Privilegien der angegriffenen Anwendung bereitzustellen.
Klassifikation nach Angriffsart
Exploits werden meist nach ihrer Angriffsart oder Wirkung eingeteilt:
- Lokale Exploits werden durch Vorgänge auf dem Zielgerät ausgelöst, zum Beispiel beim Öffnen einer Datei.
- Remote-Exploits greifen aus der Ferne, häufig über das Internet, Netzwerksoftware an.
- DoS-Exploits (Denial of Service) überlasten eine Anwendung.
- Command-Execution-Exploits ermöglichen dem Angreifer, eigenen Programmcode auf dem Zielsystem auszuführen.
- SQL-Injection-Exploits richten sich vor allem gegen Anwendungen, die SQL-Datenbanken verwenden.
- Zero-Day-Exploits nutzen Sicherheitslücken aus, für die noch kein Patch verfügbar ist.
Lokale Exploits können in scheinbar harmlosen Dateien wie Office-Dokumenten, PDF-Dateien oder Word- und Excel-Makros enthalten sein. Wird die Datei von einer fehlerhaft arbeitenden Anwendung verarbeitet, versucht der Exploit häufig zunächst, deren Sicherheitslücke auszunutzen. Ziel kann es sein, eine höhere Privilegienstufe zu erreichen und anschließend schädlichen Code in das Betriebssystem zu laden und auszuführen. Die eigentliche Aktion des Exploits heißt Payload (Nutzlast). In vielen Exploit-Frameworks, etwa Metasploit, lässt sich die Payload getrennt konfigurieren; sie kann aber auch fest im Exploit enthalten sein.
Remote-Exploits sind aktive Angriffe aus dem Internet. Dazu werden manipulierte Datenpakete oder spezielle Datenströme an Schwachstellen in Netzwerksoftware gesendet.
Die ersten veröffentlichten Exploits zu einer bekannt gewordenen Sicherheitslücke sind häufig DoS-Exploits. Sie überlasten zwar die betroffene Anwendung, führen aber weder fremden Programmcode aus noch bewirken sie eine Privilegien-Eskalation.
Bei Command-Execution-Exploits kann der Angreifer die Ausführung von Programmcode steuern. Der Entwickler des Exploits muss dafür Eigenheiten der Speicheraufteilung der Zielanwendung kennen. Dieses Wissen kann aus offenem Programmcode oder durch Tests gewonnen werden. Der eigene Code muss gezielt im Speicher platziert werden, damit er ausgeführt wird. Diese Exploits sind besonders gefährlich, weil Anwendungen oft erhebliche Rechte besitzen und der Angreifercode mit denselben Rechten gestartet wird.
SQL-Injection und typische Fälle
SQL-Injection-Exploits sind eine spezielle Exploit-Art. Sie werden hauptsächlich bei Webanwendungen eingesetzt, die eine SQL-Datenbank nutzen und über das Internet leicht erreichbar sind. Grundsätzlich ist jedoch jede Anwendung gefährdet, die auf eine SQL-Datenbank zugreift.
Bei einer SQL-Injection werden Eingaben so gestaltet, dass eine fehlerhaft oder unsauber arbeitende Präsentationsschicht einer Schichtenarchitektur Daten zurückliefert oder verändert, die sie eigentlich nicht zugänglich machen sollte. Beispielsweise kann ein manipuliertes Loginformular dazu führen, dass ein ungültiger Benutzer erfolgreich angemeldet wird. Auch das gezielte Ausgeben von Datenfeldern, etwa der Passwörter oder E-Mail-Adressen aller registrierten Benutzer, ist möglich.
Eine SQL-Injection-Lücke entsteht, wenn Benutzereingaben nicht ausreichend auf Gültigkeit geprüft und gefiltert werden. Insbesondere müssen SQL-Kommandos und Teile davon als unerlaubte Eingaben erkannt werden.
Beispiele aus dem Artikel:
- Im Oktober 2014 wurde über eine SQL-Injection-Lücke auf das Playstation-Netzwerk von Sony zugegriffen, um Kundendaten auszulesen.
- Im Februar 2015 entdeckte der Sicherheitsexperte Marc-Alexandre Montpas eine SQL-Injection-Lücke im Analytics-Plug-in Slimstat des verbreiteten Blog- und Content-Management-Systems WordPress. Dadurch waren über eine Million Websites gefährdet, von Hackern übernommen zu werden.
Zero-Day-Exploits und der Zeitabstand
Ein Zero-Day-Exploit ist ein Exploit, der eingesetzt wird, bevor ein Patch als Gegenmaßnahme verfügbar ist. Die Entwickler haben dadurch „null Tage“ Zeit, die Software zu verbessern und den Exploit unwirksam zu machen. Meldet eine Person eine entdeckte Sicherheitslücke nicht dem Hersteller, sondern entwickelt einen Exploit zur Ausnutzung, kann die Lücke lange nach dem ersten Angriff öffentlich bekannt werden.
Zero-Day-Exploits werden von Hackern häufig geheim gehalten, um sie möglichst lange zu nutzen. Außerhalb der Öffentlichkeit werden sie unter Hackern gehandelt oder Herstellern zu hohen Summen angeboten. Die Preise stiegen von 2012 bis 2018 etwa um den Faktor 10. Eine 2011 auf dem OWASP BeNeLux Day vorgestellte Analyse beschrieb zwei getrennte Märkte: einen Massenmarkt für organisierte Kriminalität und Exploit-Kits mit bereits bekannten Schwachstellen sowie einen gezielten Markt, auf dem staatlich finanzierte Akteure ungepatchte Zero-Days für maßgeschneiderte Angriffe erwerben. Daraus wurde ein Bedrohungsmodell nach Angreiferklassen abgeleitet. Schutzmaßnahmen für den Massenmarkt seien gegenüber Akteuren des gezielten Marktes nahezu wirkungslos.
Seit staatliche Organe offensive Cyberwar-Szenarien vorbereiten, versuchen legale staatliche und privatwirtschaftliche Organisationen, Exploits zu kennen. Sie können diese veröffentlichen lassen, damit Hersteller Patches entwickeln und Systeme absichern, oder sie gegen feindliche Systeme einsetzen.
Im Artikel genannte Beispiele sind:
- Im August 2012 wurde ein Exploit veröffentlicht, der den Security-Manager von Java auf einfache Weise abschaltete und dadurch das Starten beliebiger Programme ermöglichte.
- Im Oktober 2014 waren fast alle Windows-Versionen von einer Zero-Day-Lücke in Microsoft-Office-Dokumenten betroffen.
- Im November 2014 gab es Hinweise, dass der BND Zero-Day-Exploits zum Abhören von SSL-Verschlüsselungen ankaufte. Funktionsfähige Zero-Day-Exploits für verbreitete Programme wie Internet Explorer, Flash, Android oder iOS kosteten bis zu 100.000 Dollar. Für den Ankauf unter dem Codenamen „Swop“ sollen 2015 bis zu 4,5 Mio. Euro vorgesehen gewesen sein.
- Google veröffentlichte 2019 im Projekt Zero eine Dokumentation der seit 2014 öffentlich bekannt gewordenen Zero-Day-Exploits.
Das vorbeugende Aufspüren und Melden von Sicherheitslücken an Hersteller wird in Fachkreisen teilweise kritisiert, weil Tester dabei mitunter Gesetze oder Herstellerrichtlinien verletzen. Auch die Frage der Veröffentlichung ist umstritten: Der Präsidiumsarbeitskreis „Datenschutz und IT-Sicherheit“ der Gesellschaft für Informatik kritisierte, dass das BSI Zero-Day-Exploits zwar sammeln, sie aber nicht veröffentlichen müsse. Dadurch könnten deutsche Unternehmen und Privatpersonen schutzlos bleiben; es wurden Verluste in Milliarden-Euro-Höhe befürchtet.
Gegenmaßnahmen und Grenzen des Schutzes
Als Gegenmaßnahmen werden verschiedene technische Verfahren eingesetzt. Intrusion-Detection-Systeme können Angriffe erkennen, die auf bereits bekannten Funktionalitäten beruhen. Intrusion-Prevention-Systeme können solche Angriffe zusätzlich verhindern. Gegen das Ausnutzen eines systematischen, unbekannten Softwarefehlers schützen sie jedoch ebenso wenig. Auch der häufig genannte Speicherschutz ist laut Artikel keine vollständige Gegenmaßnahme, da eingefrorene Speicher mit verschiedenen Programmen ausgelesen werden können.
Das Grundproblem liegt oft in unsauberer Programmierung, beispielsweise durch die Verwendung hängender Zeiger. Noch schwerer zu entdecken sind systematische und meist sehr komplexe Fehler in der Architektur eines Programms oder eines ganzen Systems. Die einzige grundlegende Lösung wäre, durch Verarbeitungsfehler entstehende Sicherheitslücken bereits bei der Entwicklung zu vermeiden. Bei heutigen Systemen ist das praktisch unmöglich.
Managed Code bietet einen gewissen Schutz und verhindert beispielsweise Pufferüberläufe wirksam. Er löst jedoch nur einen Teil der Gesamtproblematik. Komplexe Systeme bestehen aus vielen Schichten von Hard- und Software, die von unterschiedlichen Herstellern und Sublieferanten stammen können. Dadurch wird die Suche nach Schwachstellen während der Entwicklung stark erschwert. Deshalb wird häufig auch nach der Beta-Phase im laufenden Betrieb weiter nach Sicherheitslücken gesucht. Besonders wichtig ist dies bei kritischen Systemen wie Autos, Zügen, Flugzeugen und Schiffen, weil dort Menschenleben gefährdet sein können.
Die Bedeutung solcher Schwachstellen zeigt ein Beispiel aus der Fahrzeugsicherheit: Auf der Blackhat-Konferenz 2014 wurde die Hackbarkeit von 21 aktuellen Fahrzeugen untersucht. Als besonders gefährdete Zugänge galten Bluetooth-Sender, Funksignale der Zentralverriegelung, Alarmanlagen, Reifendruckkontrollsysteme, Internetverbindungen und Infotainment-Apps. Es bestand die Gefahr, Fahrzeuge aus der Ferne zu steuern.
Beim Hack eines Jeep Cherokee gelang es Charlie Miller und Chris Valasek, über eine Schwachstelle im Infotainmentsystem und über das Internet die Kontrolle über das Fahrzeug zu übernehmen. Aus der Ferne konnten Bremsen, Beschleunigung, Türverriegelung, Klimaanlage und Scheibenwischer gesteuert werden. Im Rückwärtsgang war sogar eine Fernsteuerung des Lenkrads möglich. Außerdem sollte sich der genaue Aufenthaltsort des Fahrzeugs ohne Zustimmung des Halters bestimmen lassen. Die Lücke wurde durch ein Update behoben, das der Fahrzeughalter jedoch per USB-Stick oder in einer Werkstatt installieren musste.