Sichererer Code durch absichtliches Hinzufügen von Bugs?

Sichererer Code durch absichtliches Hinzufügen von Bugs?

Anscheinend ausnutzbare Bugs in Programm-Code können zum Alptraum für Exploit-Entwickler werden und damit zu höherer Sicherheit beitragen.

Anscheinend ausnutzbare Bugs in Programm-Code können zum Alptraum für Exploit-Entwickler werden und damit zu höherer Sicherheit beitragen.

Forscher der New York University stellten eine ungewöhnliche Verteidigungstechnik vor, die Cyberangreifer vom Versuch abhalten könnten, Software-Lücken durch Exploits auszunutzen.

Im Gegensatz zu den üblichen Methoden der Fehlerbehebung, welche normalerweise zur Beseitigung von bekannten Schwachstellen eingesetzt werden oder Gegenmaßnahmen zu Exploitations darstellen, versucht ein Team aus drei Informatikwissenschaftlern einen anderen Weg zu gehen. Sie füllen Code bewusst mit anscheinenden Sicherheitslücken, um Exploit-Scanner in die Irre zu führen.

Ihre Taktik beschreiben sie ausführlich in einem Paper mit dem Titel „Chaff Bugs: Deterring Attackers by Making Software Buggier“. Die Wissenschaftler erläutern, wie sie den Workflow der Exploit-Entwickler untergraben wollen. Typischerweise gehen diese so vor: Schwachstellen finden, Bestimmen der Ausnutzbarkeit der Schwachstellen mit Hilfe von Triage-Tools, Exploit-Entwicklung, Auslieferung an Ziel-Systeme.

Im Fall der Informatikwissenschaftler dienen die extra hinzugefügten vielen Bugs als Köder. Diese „Chaff Bugs“ sind allerdings nur „Möchtegern-Schwachstellen“ und lassen sich nicht wirklich ausnutzen. Sie beschäftigen Exploit-Entwickler und rauben ihnen das wertvollste an ihrer Arbeit – ihre Zeit.

Bisher ist der Prototyp in der Lage, unterschiedliche Chaff Bugs zu Tausenden in echte Software zu injizieren. Er stellt einen neuen Typ von täuschender Verteidigung dar, bei der die Ressource Zeit der Cyberangreifer verschwendet wird.

Für Testzwecke implementierten die Wissenschaftler der New York University ihren Prototyp in die Webserver-Software nginx und in die Encoder-/Decoder-Bibliothek libFLAC. Dabei konzentrierten sie sich auf zwei häufig auftretende Fehlerarten – Stack-Buffer-Overflows sowie Heap-Overflows. Sie stellten fest, dass die Funktionalität der Software nicht beeinträchtigt wurde, und demonstrierten, dass die fiktiven Bugs für aktuelle Triage-Tools ausnutzbar erscheinen.

„Wir schränkten die Konditionen unter denen sich die Bugs manifestierten und deren Effekte auf das Programm soweit ein, dass wir sicher waren, dass die Bugs keine echte Schwachstellen darstellten. Im schlimmsten Fall könnten sie lediglich das Programm abstürzen lassen“, sagten die Wissenschaftler.

„Obwohl einige Bugs Abstürze verursachen, die als Denial-of-Service angesehen (damit auch als Exploit) werden, gibt es sehr große Softwareklassen, bei denen Abstürze aufgrund böswilliger Eingaben die allgemeine Zuverlässigkeit des Dienstes nicht beeinträchtigen – bei normaler Nutzung ergibt sich überhaupt kein Problem“, liest sich aus dem Paper heraus.

Wie funktional sind die Chaff Bugs?

Die Durchführbarkeit der Technik kann allerdings durchaus in Frage gestellt werden. Die Forscher haben im Paper selbst einige Fallstricke aufgeführt.

„Die primäre Einschränkung unserer Arbeit ist, dass man bis jetzt noch nicht zwischen Chaff Bug und echtem Bug unterscheiden kann“, geben die Wissenschaftler zu bedenken. Mit anderen Worten sorgen sich die Forscher, dass die eingeschleusten Bugs von den Cyberangreifern enttarnt werden. Auf jeden Fall glauben die Wissenschaftler, dass sie die vorgetäuschten Chaff Bugs in Zukunft von natürlich vorkommenden unterscheiden werden können.

Die Arbeit der Forscher beruht auch auf der strengen Annahme, dass Cyberangreifer zwar Zugang zu den Binär-Dateien eines Programms haben, aber nicht zum Quellcode. Aus diesem Grund eignet sich die von den Wissenschaftlern vorgestellte Methode nicht für Open-Source Software.

Eine andere Limitation ist die Sicherstellung, dass die Chaff Bugs harmlos sind und auch nach Änderungen im Code bleiben. Außerdem räumen die Forscher in ihrem Paper ein, dass Softwareentwickler wahrscheinlich davor zurückschrecken, mit Quellcode zu arbeiten, der mit zusätzlichen Bugs durchsetzt ist. Sie schreiben, dass sie ihr System „vor allem als eine zusätzliche Stufe im Build-Prozess [sehen], die nicht ausnutzbare Bugs hinzufügt“.

 

 

 

Picture Credits: ©Mark Rain/Flickr

Hier können Sie mitdiskutieren