Samstag, 27. April 2024

Archiv

CodePhage
Viraler Code repariert fehlerhafte Software

Computerviren schleichen sich in existierende Programme ein, um sich dort zu vermehren und um Schaden anzurichten. Forscher in Cambridge arbeiten nun am Gegenteil: Sie haben eine Software entwickelt, die fehlerhafte Programme mit viralen Methoden repariert.

Von Manfred Kloiber | 28.07.2015
    "Wir dachten uns, das ist eine sehr interessante Parallele, die unsere Forschung verständlich macht. Besonders dann, wenn man ein wenig Interesse und Kenntnisse aus der Biologie hat", erklärt der Computerwissenschaftler Martin Rinard, wie der Name CodePhage zustande gekommen ist. Das Software-Projekt des Massachusetts Institute of Technology in Cambridge, USA, wird von der DARPA, der Forschungsförderung des US-Militärs, finanziert:
    "Wir fanden die Parallele zu Bakteriophagen auch deshalb ganz gut, weil der horizontale Gentransfer einer der Schlüssel für die Entwicklung von Leben ist. Das symbolisiert also, welche Auswirkungen CodePhage auf die Entwicklung von Software haben kann."
    Wie eine Bakteriophage schleust CodePhage Programmteile, also im übertragenen Sinne die DNA einer Software, von einer Anwendung in die andere. Der Informatiker Stelios Sidiroglou-Douskos hatte die Idee, durch den viralen Austausch von binärem Computercode, Sicherheitslöcher zu stopfen.
    "CodePhage identifiziert und behebt automatisch gefährliche Softwarefehler. Dazu werden unterschiedliche Software-Versionen untersucht, die zwar die selbe Funktion haben, die aber nicht für diesen Fehler anfällig sind."
    Nach zwei typischen Softwarefehlern, die Programmierer gerne und häufig machen, wird dabei gefahndet: Nach dem sogenannten Integer-Overflow und nach dem Buffer-Overflow. Fehler, die oft Sicherheitslöcher reißen und zu Programmabstürzen führen können. Taucht solch ein Fehler zum Beispiel in einer Grafiksoftware etwa bei der Größen-Neuberechnung eines Bildes auf, dann sucht CodePhage auf der Festplatte in anderen, vergleichbaren Grafikprogrammen nach fehlerfreiem Code, um ihn zu übernehmen.
    "Um ein Beispiel zu geben: Sie haben ein PDF-Anzeigeprogramm und das stürzt bei einer ganz bestimmten Eingabe immer ab. Aber es gibt eine ganze Reihe von PDF-Viewern, da passiert das nicht, weil genau diese verletzliche Stelle im Code anders programmiert wurde. Und CodePhage isoliert dann genau diese Codestückchen aus all den Programmen, die untersucht wurden, um ihr Programm zu reparieren."
    Binärcode statt Quellcode
    Der Austausch des neuen Code-Stückes im fehlerhaften Programm geschieht dann automatisch. CodePhage erkennt die typischen Muster im Code, die bestimmte Funktionen wie Eingabe-Abfragen oder Skalierungsfunktionen abgrenzen. Das Ganze geschieht auf der binären Ebene, also im sogenannten Maschinencode, der direkt vom Prozessor des Computers abgearbeitet wird.
    Doch warum analysiert das System den kryptischen Binärcode? Normalerweise werden ja Reparaturen eines Programms im Quelltext vorgenommen. Also in dem Originaltext, den die Entwickler in einer Programmiersprache verfasst haben, und nicht in der für den Computer übersetzten Binärform.
    "Der Vorteil, den binären Code zu nutzen ist, dass sie Zugriff auf den Code von jedem Programm haben, das tatsächlich auf Ihrem Computer vorhanden ist. Also auch auf Code von Programmen, von denen Sie keinen Quelltext haben. Zum Beispiel weil es Programme sind, bei denen der Quelltext geheim gehalten wird oder schlicht weil er verloren gegangen ist."
    Bislang, so Rinard, habe man die CodePhage-Software ausschließlich mit gängigen Linux-Anwendungen getestet. Das hat auch mit ungeklärten Rechtsfragen zu tun. Denn ob man Binärcode aus Programmen einfach so herauskopieren darf, das ist noch offen. Da Linux-Programme aber meist Open-Source sind, fühlten sich die Forscher damit auf der sicheren Seite.
    Und auf die Frage, ob CodePhage auch auf einem Smartphone laufen könnte, damit jeder Nutzer sich zum Beispiel Apps, die dauernd abstürzen, selbst reparieren kann, auf diese Frage antwortet Rinard optimistisch:
    "Wir haben zwar noch nicht an einem Prototypen für mobile Geräte gearbeitet. Aber es gibt keinen Grund, warum das nicht möglich sein sollte. Wir gehen davon aus, das CodePhage auf allen möglichen Systemen laufen kann, auch auf mobilen Geräten."