Mayhem - eine Maschine, die Schwachstellen in Programmen erkennen und beheben kann

Das Programm gewann den ersten Platz bei der DARPA Cyber ​​Grand Challenge, die sich der ethischen Hacking-Automatisierung widmet




Als Investor Mark Andrissen 2011 sagte, dass „Programme die Welt essen“, war diese Idee frisch. Jetzt ist es offensichtlich, dass Software alle Aspekte unseres Lebens durchdringt. Von komplexen elektronischen Geräten wie medizinischen Geräten und Robomobilen bis hin zu einfachsten Geräten wie Glühbirnen, die mit dem Internet verbunden sind, und Thermometern umgibt uns Software.

Und das bedeutet, dass wir wie nie zuvor anfällig für Angriffe auf diese Software sind.

Jedes Jahr werden bestehende Programme um 111 Milliarden Codezeilen erweitert, von denen jede als neues potenzielles Ziel dient. Steve Morgan, Gründer und Chefredakteur des Forschungsunternehmens Cybersecurity Ventures, prognostiziert, dass System-Hacks, die durch bisher unbekannte Sicherheitslücken begangen wurden - was die Branche als "Zero-Day-Sicherheitslücke" bezeichnet - bis 2021 in den USA täglich stattfinden werden, obwohl sie 2015 wöchentlich stattfanden .

Um dieses Problem zu lösen, haben meine Kollegen von der Carnegie Mellon University und ich fast 10 Jahre lang eine Technologie entwickelt, die Software automatisch sicher machen kann. 2012 gründeten wir ForAllSecure , um unser Produkt der Welt vorzustellen . Wir mussten nur beweisen, dass wir das können, was wir sagen, und wir haben es in Form der Teilnahme am Wettbewerb getan.


The Magnificent Seven: Konkurrierende Computer glänzen vor dem Publikum des Finales der Cyber ​​Grand Challenge, die 2016 in Las Vegas stattfand.

Schneller Vorlauf bis 2016: Unsere Gruppe hat sich in der Toilette eines Hotels in Las Vegas angesammelt und beißt sich auf die Nägel. Sie ist sich sicher, dass sie die Konkurrenz verloren hat, für deren Vorbereitung mehrere tausend Stunden benötigt wurden. Es war die DARPA Cyber ​​Grand Challenge (CGC), eine von vielen Veranstaltungen (wie der Robot Car Competition in den frühen 2000er Jahren), die vom US-Verteidigungsministerium für fortgeschrittene Forschungsprojekte organisiert wurden, um technologische Durchbrüche zur Gewährleistung der nationalen Sicherheit zu fördern. Die CGC entstand, weil DARPA erkannte, dass der Tag für die USA kommen könnte, an dem sie nicht über genügend Mitarbeiter oder Tools verfügen, um Cyber-Angriffe abzuwehren.

Es gibt technisch versierte Hacker auf dem Schlachtfeld für Cybersicherheit, und zu den besten gehören diejenigen, die Software-Schwächen kreativ ausnutzen können, um in die Verteidigung des Unternehmens einzudringen. Kriminelle, die dies für ihre persönlichen Zwecke tun, werden als Black-Hat-Hacker bezeichnet. Oft erstellen sie Tools, mit denen Skriptkinder, die vorgefertigte Programme verwenden, Chaos verursachen können, wie dies beispielsweise 2016 bei Internet-Botnetzen der Fall war Die Dinge starteten einen massiven Angriff über das Internet und verschafften sich Zugang zu Überwachungskameras in den Häusern gewöhnlicher Menschen. Umgekehrt setzen ethische oder White-Hat-Hacker ihre Fähigkeiten ein, um solche Angriffe zu verhindern. Ethische Hacker reichen jedoch nicht aus, um die gesamte Software zu schützen, deren Zahl in der Geschäftswelt rapide zunimmt, ganz zu schweigen von der gemeinsamen Infrastruktur und den militärischen Plattformen, die für die nationale und globale Sicherheit von entscheidender Bedeutung sind.

2014 kündigte DARPA die Cyber ​​Grand Challenge an - ein zweijähriges Projekt, um die Machbarkeit der Entwicklung von KI-Systemen zu testen, mit denen Software-Schwachstellen gefunden, überprüft und behoben werden können. Im Jahr 2015 traten hundert Teams in die Vorqualifizierungsphase ein. Im Jahr 2016 erreichten sieben von ihnen das Finale, wo sie ein System vorstellen mussten, das argumentieren konnte - eines, das das Problem nicht nur bemerkte, sondern auch eine Annahme über seinen Ursprung machte. Der Champion erhält 2 Millionen US-Dollar sowie die Plätze zwei und drei - 1 Million US-Dollar und 750.000 US-Dollar.

Nachdem DARPA diese Details veröffentlicht hatte, erkannten meine Kollegen und ich sofort, dass dies eine großartige Gelegenheit wäre, um zu demonstrieren, dass unser automatisches Cybersicherheitssystem kein einfaches theoretisches Spielzeug ist. Wenn wir über ForAllSecure sprachen, waren wir immer mit einer Skepsis hinsichtlich der Praktikabilität unserer Lösung konfrontiert. Wir haben beschlossen, den Wettbewerb zu gewinnen, da wir seit einem Jahrzehnt daran arbeiten.

Unsere Forschung an der Universität begann mit einer einfachen Annahme: Menschen brauchen eine Möglichkeit, die von ihnen gekaufte Software zu testen, um sicherzustellen, dass sie sicher ist. Programmierer werden natürlich alle Anstrengungen unternehmen, um Sicherheitsprobleme zu beseitigen, aber ihre Hauptaufgaben sind einfacher: Sie müssen das Produkt rechtzeitig veröffentlichen und sicherstellen, dass es das tut, was es braucht. Das Problem ist, dass Hacker Wege finden, Software dazu zu bringen, das zu tun, was sie nicht sollte.

Heutzutage umfassen Best Practices im Bereich der Software-Sicherheit die Verwendung spezieller Tools, um den Quellcode zu überprüfen und potenzielle Schwachstellen zu identifizieren. Dieser Prozess führt zu vielen falsch positiven Ergebnissen - markiert Orte, die nicht wirklich schwach sind -, daher muss eine Person alle durchgehen und jeden von ihnen überprüfen. Um die Geschwindigkeit der Fehlererkennung zu verbessern, verlassen sich einige Unternehmen auf ethische Hacker, die eine einmalige Analyse durchführen oder gegen eine Gebühr an Fehlersuchprogrammen teilnehmen und diese für die Anzahl und den Schweregrad der erkannten Fehler bezahlen. Aber nur die erfolgreichsten Unternehmen können es sich leisten, Programme von höchster Qualität zu testen. Und das Problem wird nur komplizierter, wenn verschiedene Open-Source-Komponenten und andere Arbeiten Dritter im Endprodukt enthalten sind.

Wir haben das Mayhem-System auf dem Wettbewerb vorgestellt, das die Arbeit ethischer Hacker automatisiert. Sie wies nicht nur auf mögliche Schwächen hin, sondern nutzte diese Schwachstellen aus und bewies ihre Schwäche. Dies war auch ein wichtiger Punkt bei CGC - der Nachweis der Verwundbarkeit und die Schaffung eines funktionierenden Exploits waren einige der Möglichkeiten, um Siegpunkte zu erzielen. Und da Mayhem eine Maschine war, die skaliert werden kann, kann eine solche Analyse mit Geschwindigkeiten durchgeführt werden, die für Menschen unzugänglich sind.


Mayhem benötigte wie seine sechs Rivalen eine Wasserkühlung. Statistiken über Verbrauch und Temperatur zeigten jedoch, dass Mayhem aktiver arbeitete als die anderen.

Wir näherten uns der Schaffung von Mayhem, indem wir ein von uns an der Universität entwickeltes Software-Analysesystem auf der Grundlage einer formalen Analyse des Programmtextes entwickelten. Diese Methode kann mit einer mathematischen Formel verglichen werden, die jeden Pfad beschreibt, den ein Programm einschlagen kann, dh einen ständig verzweigten Analysebaum ausgibt. Ein solcher Baum kann schnell zu groß werden, um damit zu arbeiten, aber wir haben clevere Wege gefunden, um einige Pfade zu eliminieren, die den gesamten Baum auf mehrere Zweige reduzieren. Danach können wir die verbleibenden Zweige bereits genauer untersuchen.

Die symbolische Ausführung erstellt eine Gleichung, die die gesamte Logik des Programms bezeichnet - zum Beispiel x + 5 = 7 - und löst dann diese Gleichung. Vergleichen Sie diese Strategie mit einer anderen Softwareanalysemethode, dem Fuzzing , wenn Sie versuchen, dem Programm zufällige Werte zuzuführen , um es zu löschen. Danach können Sie bereits die Schwachstellen identifizieren, die zum Herunterfahren geführt haben, und wie sie bei einem absichtlichen Angriff verwendet werden können. Fuzzing gibt zufällige Daten ein, bis der Wert der Gleichung wahr ist, und bestimmt, dass x = 2 ist.

Beide Ansätze haben ihre Stärken, aber über viele Jahre hinweg hatte Fuzzing den Vorteil einer einfachen Implementierung und einer schnellen Verarbeitung von Eingabedaten. Die symbolische Leistung war mit einem riesigen und ungenutzten Potenzial für jeden behaftet, der es schaffen konnte, sie zu zähmen. Im Mayhem-System, das wir 2010 entwickelt haben, konnten wir dies erreichen, indem wir beide Ansätze kombinierten.

Fuzzing ist ein Versuch, fundierte Annahmen mit einer enormen Geschwindigkeit darüber zu treffen, welche Art von Eingabedaten dazu führen kann, dass sich ein Programm neu verhält, und dann zu verfolgen, welche Art von Daten wirklich zu diesem Ergebnis führt. Die symbolische Ausführung ist ein Versuch, einen Mathematiker zu bitten, formal abzuleiten, welche Eingabedaten zur Erstellung eines Exploits beitragen können. Wir haben festgestellt, dass einige Fehler am besten durch schnelle Vermutungen und andere mithilfe eines mathematischen Ansatzes gefunden werden können. Daher haben wir uns entschlossen, beide Methoden parallel anzuwenden. Die symbolische Ausführung geht tiefer in das sequentielle Studium eines Teils des Programms ein und liefert Eingaben, die diesen Teil des Codes ausführen. Dann leitet das System diese Daten an das Fuzzing-Programm weiter, das sehr schnell auf diesen Codeabschnitt hämmert und die Sicherheitsanfälligkeit aus dem System herausholt.

Eine andere Fähigkeit von Mayhem besteht darin, direkt mit Binärcode zu arbeiten, im Gegensatz zu Leuten, die Textdateien studieren, dh Quellcode. Dies bedeutet, dass das System das Programm ohne die Hilfe der Person analysieren kann, die es entwickelt hat. Dies ist sehr wichtig bei Programmen, die Komponenten enthalten, die von Drittentwicklern geschrieben wurden und deren Quellcode nicht mehr gefunden werden kann. Es ist jedoch schwierig, Entscheidungen über Binärcode zu treffen, da dieser im Gegensatz zum Quellcode weder Funktionen noch logische Variablen oder Datenabstraktionen enthält. Binärcode hat nur ein Stück Speicher und Bitvektoren fester Länge - eine effiziente Datenspeicherstruktur. Um mit einem solchen Code arbeiten zu können, müssen Sie eine Maschine sein, und um eine Maschine zu erstellen, die mit solchen Einschränkungen arbeiten kann, mussten die Ingenieure wirklich viel arbeiten.

Nach dem Ermitteln der Sicherheitsanfälligkeit generiert Mayhem einen funktionierenden Exploit - einen Code, den ein Black-Hat-Hacker zum Knacken verwenden könnte. Ziel ist es zu demonstrieren, dass ein Exploit verwendet werden kann, um privilegierten Zugriff auf das Betriebssystem zu erhalten. Infolgedessen identifiziert Mayhem Schwachstellen mit absoluter Sicherheit und stellt nicht nur mögliche Probleme fest, wie dies bei den meisten Code-Analyse-Tools der Fall ist.

2014 haben wir Mayhem mit allen Programmen getestet, die in der Debian-Distribution enthalten sind, einer beliebten Linux-Version, die weltweit für Arbeitscomputer und Server verwendet wird. Mayhem hat fast 14.000 eindeutige Sicherheitslücken gefunden und die Liste auf 250 neue eingegrenzt, die die höchste Priorität verdient haben. Der gesamte Test dauerte eine Woche, da wir Mayhem auf viele Server in der Amazon-Cloud skaliert haben und praktisch kein menschliches Eingreifen erforderlich war. Wir haben die wichtigsten Funde zur Überprüfung an die Debian-Community gesendet. Einer der Gründe für unsere Entscheidung, aus einem Forschungsprojekt ein kommerzielles Unternehmen zu machen, war unser Wunsch, in einem solchen Umfang mit Entwicklern zusammenzuarbeiten und Tausende von Programmen auf der Suche nach einer Vielzahl von Schwachstellen zu analysieren.


Mayhem-Projektteam: ForAllSecure-Ingenieure posieren bei einer Abschlusszeremonie vor dem Hintergrund ihrer Idee. Der Autor des Artikels, David Bramley, steht in der ersten Reihe, dritter von links.

Am 3. Juni 2015 wurden mehr als hundert Teilnehmer zur Qualifikationsrunde zugelassen und erhielten 131 einzigartige Aufgaben, von denen jede bekannte Schwachstellen aufwies. Die sieben Teams mit den meisten Punkten (ausgestellt, um Schwachstellen und Patches für sie zu finden) erreichten das Finale der Cyber ​​Grand Challenge. ForAllSecure hat die Leistung des Teilnehmers, der in Punkten Zweiter wurde, mehr als verdoppelt. Und dieser kurze Moment der Freude machte schnell der Erkenntnis Platz, dass wirklicher Druck erst jetzt beginnt!

Die Aufgabe, ein vollständig autonomes kybernetisches Entscheidungssystem auf der Grundlage der Mayhem-Technologie zu schaffen, erwies sich als sehr schwieriges Unternehmen. Dies ist uns insbesondere dank der Tatsache gelungen, dass DARPA sieben Finalisten genügend Finanzmittel zur Verfügung gestellt hat, um ein ganzes Jahr der Entwicklung zu unterstützen. Zu den Hauptkomponenten der Technologie gehören eine Reihe von Tools, die ausführbare Programme in eine Sprache übersetzen, die relativ einfach zu verstehen und zu analysieren ist, sowie aktive Tools zum Auffinden und Ausnutzen von Schwachstellen, Schutz-Tools zum automatischen Erstellen von Patches für fehlerhaften Binärcode und ein Programm zur effizienten Koordinierung der Arbeit.

In Vorbereitung auf das Finale hatten wir zwei ernsthafte Schwierigkeiten. Obwohl wir mit der Art und Weise, wie Mayhem mit der Suche nach Schwachstellen umging, zufrieden waren, schien es uns zunächst, dass die Patches nicht effektiv genug sein würden. Im Wettbewerb macht es wie in der Realität keinen Sinn, einen Patch hinzuzufügen, der mehr Prozessorzeit verschlingt, als es kostet, dieses Problem zu lösen. Aus diesem Grund haben wir sehr lange an einem System zum Hinzufügen automatischer Patches gearbeitet, die den Verbrauch um nicht mehr als 5% erhöhen.

Zweitens brauchten wir eine Gewinnstrategie. Angenommen, wir haben eine Sicherheitsanfälligkeit gefunden und einen Patch dafür erstellt. Vielleicht sollten Sie es nicht sofort rollen, wenn es das Programm zu sehr verlangsamt. Manchmal lohnt es sich zu warten und den Patch nur als letzten Ausweg anzuwenden. Wir haben ein Expertensystem entwickelt, das entscheidet, wann das Programm gepatcht werden soll.

Als unser Team den Ballsaal in Las Vegas betrat, in dem das Finale am 5. August 2016 stattfand, sahen wir sieben riesige Gestelle mit blinkenden Lichtern auf einer riesigen Bühne, unter denen sich ein Tank mit 180 Tonnen Wasser befand, der die Computer der Teilnehmer kühlte. Die Teilnehmer mussten am Abend vor dem Start des Wettbewerbs Autos vorbereiten, und dann nahm DARPA ihnen den Zugang zu ihnen weg. Autos wurden vom Internet und allgemein von der Außenwelt abgeschnitten. Wir konnten nur überwachen, wie Mayhem funktioniert, den Stromverbrauch und die Temperatur des Systems beobachten, für die neben jedem Rack Statistiken angezeigt wurden. Mayhem arbeitete ständig aktiver als Rivalen - und wir hofften, dass dies ein gutes Zeichen war.

Fast 100 Runden lang erhielten die konkurrierenden Systeme neue Programme und mussten den Code auf Schwachstellen analysieren und in wenigen Minuten die zum Schutz erforderlichen Patches herausgeben. In jeder Runde wurden Punkte für die Fähigkeit der Maschine vergeben, das Vorhandensein von Schwachstellen zu finden und zu beweisen, sowie für die Wirksamkeit der Patches.


Sieg mit großem Vorsprung: Mayhem schaffte es, einen großen Vorsprung zu erzielen, und fiel nach der 40. Runde zurück. Aber das Team wusste bis zum Ende des Wettbewerbs nichts über diese Lücke.

Um die Präsentation interessanter zu gestalten, beschlossen die Organisatoren, die letzten Punkte erst am Ende des Wettbewerbs mitzuteilen. Dies bedeutete, dass wir nicht wussten, ob wir gewannen oder verloren, sondern dass Mayhem nur Nachrichten über die gefundenen Schwachstellen sendete. Einige Stunden nach dem Start des Wettbewerbs, nach der 40. Runde, wurde uns jedoch klar, dass Mayhem keine Nachrichten mehr sendet. Das Programm ist abgestürzt.

Alles in uns schrumpfte, weil es uns so schien, als würde unser schlimmster Albtraum Wirklichkeit werden. Wir haben die Organisatoren um eine Gelegenheit gebeten, das Programm neu zu starten, aber sie haben uns dies nicht erlaubt. Und da nur die Hälfte des Wettbewerbs abgeschlossen war, bereiteten wir uns auf eine beschämende Niederlage vor.

Die Organisatoren begannen am Ende des Wettbewerbs, die Situation zu kommentieren, und wunderschöne Visualisierungen zeigten uns, wie die Maschinen jedes Teams Sicherheitsprobleme in den Programmen in Sekunden fanden und behoben, verglichen mit den Monaten oder Jahren, die die Leute dafür ausgeben würden. Der Saal wurde von mehr als 5.000 Personen besucht, und Gastkommentatoren - ein Astrophysiker und berühmte Hacker - haben ihr Interesse geweckt. Wir haben uns darauf vorbereitet, dass sie unsere Niederlage ankündigen und mit Informationen auf dem Bildschirm bestätigen.

Als wir jedoch die Punkte betrachteten, die nach jeder Runde hinzugefügt wurden, stellten wir plötzlich fest, dass Mayhems anfängliche Lücke ausreichte, um den ersten Platz zu behalten, obwohl er nach der 40. Runde seine Arbeit beendet hatte. Nach der Bekanntgabe der Ergebnisse der letzten Runde ist es, als wäre der Berg von unseren Schultern gefallen. Wir haben gewonnen.

Mike Walker, Direktor des DARPA-Programms, sagte, diese autonome Demonstration der Cyber-Verteidigung sei "nur der Beginn einer Revolution" in der Welt der Software-Sicherheit. Er verglich die Ergebnisse mit den ersten Flügen der Gebrüder Wright, die nicht weit flogen, aber den Weg zu transkontinentalen Flügen zeigten.

Bisher verkauft ForAllSecure die ersten Versionen seines neuen Dienstes an frühe Kunden, darunter die US-Regierung sowie High-Tech- und Luftfahrtunternehmen. In dieser Phase bestimmt der Dienst im Wesentlichen, ob es Probleme gibt, die dann von menschlichen Experten behoben werden. Systeme wie Mayhem werden für einige Zeit mit Menschen und Sicherheitsexperten zusammenarbeiten, um die Software-Welt sicherer zu machen. Wir glauben jedoch, dass die Maschinenintelligenz in ferner Zukunft diese Aufgabe alleine bewältigen kann.

Source: https://habr.com/ru/post/de442178/


All Articles