Original-URL des Artikels: https://www.golem.de/news/hacker-was-ist-eigentlich-ein-exploit-1806-134909.html    Veröffentlicht: 15.06.2018 09:03    Kurz-URL: https://glm.io/134909

Hacker

Was ist eigentlich ein Exploit?

In Hollywoodfilmen haben Hacker mit Sturmmasken ein ganzes Arsenal von Zero-Day-Exploits, und auch sonst scheinen die kleinen Programme mehr und mehr als zentraler Begriff der IT-Sicherheit verstanden zu werden. Der Hacker Thomas Dullien hingegen versucht sich an einem theoretischen Modell eines Exploits.

Exploit ist eines der am meisten verwendeten Wörter im Bereich IT-Security, es wird gerne garniert mit weiteren Ausschmückungen wie "Zero Day". Der Begriff ist aber auch einer derjenigen, die am häufigsten falsch verstanden oder zumindest irrtümlich eingesetzt werden. Der Hacker Thomas Dullien - in der Szene vor allem unter dem Pseudonym Halvar Flake bekannt - hat sich dem Thema auf einer theoretischen Ebene genähert. Dullien arbeitet für Googles Hackerteam Project Zero, das Schwachstellen in allen möglichen Programmen und wichtiger Infrastruktur finden soll. Er hat ein theoretisches Konzept entworfen, um besser zu verstehen, was einen funktionierenden Computer von einem durch Angriffe beeinflussten Gerät unterscheidet.

Gängige Beschreibungen für Exploit sind laut Dullien Aussagen wie "Zugang", "Ein Programm, das mich etwas tun lässt, das ich eigentlich nicht darf" oder "Ich erkenne es, wenn ich sehe". Aber keine dieser Beschreibungen definiere einen Exploit korrekt, sagte er auf der Security-Konferenz Ruhrsec in Bochum. Doch auf Basis dieser falschen Definition würden reale Sicherheitsentscheidungen getroffen - was zu Problemen führen könne.

Für seine Herleitung bedient sich Dullien der theoretischen Informatik. Software sei immer als "endlicher Automat" anzusehen - im Englischen als Finite State Machine bezeichnet. Mit dem endlichen Automaten werden modellhafte Annahmen über Verhalten, Zustände und Aktionen eines komplexen Systems getroffen. Jedes Programm kann demnach in einem Modell abgebildet werden.

Ein komplexes System für eine einfache Anforderung

Anders als in vielen anderen Systemen startet ein solches Modell in der IT aber immer mit einem fast unendlich komplexen System - der CPU, die für viele verschiedene Zwecke eingesetzt werden kann. Software beschränke diesen Prozessor, der für allgemeine Zwecke konstruiert wird, dann nachträglich in seinem Funktionsumfang, um nur eine ganz bestimmte Aufgabe zu lösen, erläutert Dullien. Mit einem Exploit könne diese Beschränkung der Funktionen wieder aufgehoben werden.

Software selbst bezeichnet Dullien als intendierten endlichen Automaten. Denn bei komplexen Programmen könne nicht einfach angenommen werden, dass alles so funktioniert wie vorgesehen. Software sei dabei also ein Idealtypus der vorgegebenen Ziele, die das Programm erreichen soll - also etwa eine Bildbearbeitung oder ein Texteditor. Jede Software wiederum habe eigene, definierte Sicherheitsparameter. Nur wer solche Sicherheitsparameter definiert, kann aber auch Annahmen über die Wahrscheinlichkeit und das Ausmaß von Angriffen aufstellen.

Die Software interagiert mit dem System selbst, also der CPU. Sie löst Befehle aus, die dann von der CPU verarbeitet werden. Normalerweise herrscht dabei in Dulliens Modell ein sogenannter "sane state" vor, es funktioniert also alles wie vorgesehen. Zwischen den verschiedenen Instruktionen könne es zudem auch "transitory states" geben, also Übergangszustände. Für einen Angreifer allerdings sei es interessant, die CPU in einen anderen Status zu bringen, der dann Manipulationen ermöglicht. Diesen nennt Dullien "weird state".

Ein solcher "weird state" könne von zahlreichen Faktoren hervorgerufen werden. Einerseits seien dies menschliche Fehler bei der Erstellung des Programmcodes, also klassische Bugs. Andererseits gebe es Hardwareangriffe wie Rowhammer, bei denen physikalische Eigenheiten des Rechners ausgenutzt werden, um Probleme gezielt hervorzurufen - in diesem Fall, um ein Bit im Arbeitsspeicher zu flippen. Andere mögliche Fehler seien falsch interpretierte Kommandos oder Probleme in dem Verständnis der Semantik einer CPU.

Programmierung und Betrieb eines Rechners lassen sich nicht unterscheiden

Für das Verständnis eines Exploits ist es nach Dulliens Ansicht auch wichtig, die grundlegende Beziehung zwischen von der CPU verarbeiteten Daten und den Instruktionen eines Programmes zu sehen. Denn jedes Programm ist auf eingegebene Daten angewiesen, die dann zu Problemen führen können - etwa, wenn ein Kontaktformular Namen entgegennimmt, diese aber nicht korrekt um möglicherweise enthaltene Befehle bereinigt und damit zum Beispiel die Ausführung von Code ermöglicht.

Letztlich sei ein Programm aus Sicht eines Angreifers nur ein Datenstrom, mit dem eine Interaktion möglich ist, erklärt Dullien. Tatsächlich muss ein Exploit immer lokale Begebenheiten eines Rechners aufnehmen, um einen erfolgreichen Angriff durchführen zu können. Ein Angreifer würde also letztlich mit den bereitgestellten Daten in die Programmierung eines Computers eingreifen.

Ein Angreifer muss seine Attacke vorbereiten - in den meisten Szenarien ist es zum Beispiel notwendig, Daten in den Speicher zu schreiben, um sie dann im Falle eines Angriffs nutzen zu können. Dies ist zum Beispiel für einen Angriff notwendig, der auf einen Bitflip bei Rowhammer folgt.

Nachdem der Angriff vorbereitet ist, wird ein "weird state" ausgelöst. Zu diesem Zeitpunkt operiert der Computer also nicht mehr so wie vorgesehen. Ausgehend von einer oder mehreren Veränderungen der Instruktionen verändert sich das nachfolgende Verhalten im Zusammenspiel von Hardware und Software. Dies ist, was Dullien dann als "weird machine" beschreibt. Durch die in einem Exploit vorhandenen Instruktionen "programmiert" der Angreifer diesen Computer dann für weitere Aktionen.

Ein Exploit stellt formalisierte Sicherheitsannahmen in Frage

Ein Exploit ist nach Ansicht von Dullien also eine Kombination aus einer erfolgreichen Vorbereitung des Rechners, dem Setup, der Initialisierung, bei der ein "weird state" ausgelöst wird und der danach folgenden Veränderung des Systems durch den Exploit-Code. Die Kombination all dieser Dinge könne dann dazu führen, dass formal definierte Sicherheitsannahmen eines Programms verletzt werden.

Ein solchermaßen formalisiertes Nachdenken über IT-Sicherheit und die Sicherheit konkreter Systeme bezeichnet Dullien als wichtigen Schritt für die Ausbildung und für die Gestaltung formaler Sicherheitsanforderungen an Software. Denn nur über ein solches Modell sei es überhaupt möglich, Annahmen zu treffen, ob ein bestimmtes System durch einen Exploit angegriffen werden kann oder eben nicht.

Denn das Denken über IT-Sicherheit sei häufig davon geprägt, Mitigationen für bestimmte definierte Probleme vorzuschlagen - also kleinere Fixes oder Workarounds, die ein Problem aber letztlich nicht lösen. So kann die Verwendung von Address Space Layout Randomization (ASLR) zwar dabei helfen, die Ausnutzung von Speicherfehlern im Heapspeicher zu erschweren - ist aber kein vollständiger Schutz. Außerdem würden durch neue Mitigationen häufig auch neue Komplexitäten in den Code eingebaut, was dann wiederum zu Fehlern führen könnte.

Auch ist es laut Dullien in der Vergangenheit immer wieder zu Missverständnissen oder unterschiedlichen Bewertungen gekommen. Intel habe zum Beispiel Rowhammer zunächst nicht als Sicherheitsproblem eingestuft, sondern nur als Problem der Zuverlässigkeit.  (hg)


Verwandte Artikel:
BSI: Hackerangriffe bedrohen Energieversorger   
(14.06.2018, https://glm.io/134968 )
Whatsapp: "Viele Menschen halten uns für Magier"   
(31.05.2018, https://glm.io/134674 )
Sicherheitsaudit: US-Heimatschutzministerium nutzt altes Flash und Windows   
(08.03.2018, https://glm.io/133214 )
Lazy FPU: Intels Floating Point Unit kann geheime Daten leaken   
(14.06.2018, https://glm.io/134957 )
Spionagevorwurf: EU-Parlament will Kaspersky loswerden   
(14.06.2018, https://glm.io/134949 )

© 1997–2019 Golem.de, https://www.golem.de/