Computer und Kommunikation / Archiv /

Rolle rückwärts

"Reverse Engineering" deckt Schwachstellen in der Softwarentwicklung auf

Von Holger Bruns

Rainer Koschke untersucht Software-Kode mit Reverse Engineering.
Rainer Koschke untersucht Software-Kode mit Reverse Engineering. (uni-bremen.de)

<strong>Rekompilieren, so steht es auf allen Lizenzverträgen für Software, ist untersagt. Denn die Analyse der Software lässt Rückschlüsse auf die Kniffe der Hersteller zu. Andererseits lassen sich so auch Programmierfehler aufspüren und beseitigen.</strong>

Moderne Softwaresysteme sind meist komplexe Produkte. Gerne schleichen sich hier Fehler ein, die so genannten Bugs. Diese Bugs führen oft zu unerwünschten Programmeigenschaften und manchmal sogar zu Rechnerabstürzen mit spektakulären Folgen. Man denke beispielsweise an den Erstflug der Ariane 5, die vor ziemlich genau zehn Jahren in der Luft explodierte, weil die Software des Bordcomputers der Trägerrakete kläglich versagte. Bis heute bleibt die Forderung nach zuverlässigen Softwaresystemen ein wichtiges Thema in der Informatik, sagt der Softwaretechniker Professor Rainer Koschke von der Universität Bremen.

"Also einerseits gibt es statische Methoden. Man kann also das Programm, ohne es auszuführen, analysieren, oder eben das Ganze dynamisch machen. Dynamisch heißt, wir protokollieren mit, welche Objekte im Programm herumlaufen und was für Operationen darauf jeweils angewandt werden."

Die Analyse existierender Software ist meist aufwändig und verursacht hohe Kosten. Rainer Koschke will maschinell unterstützt verstehen, wie ein zu untersuchendes Softwaresystem funktioniert, um auf diese Weise auch die enthaltenen Fehler zu finden. Der Debugger, ein Tool zur schrittweisen Ausführung eines Programms, ist hier zwar ein gängiges Entwicklungswerkzeug, aber eines, das in der Regel nicht den Überblick über das gesamte Konzept eines komplexen Softwaresystems liefert. Das Team von Rainer Koschke geht deshalb einen anderen Weg. Ihr Analysewerkzeug protokolliert das Verhalten von Objekten innerhalb einer Software. Wie werden Variablen benutzt? Welche Operationen werden auf welchen Modulen ausgeführt? Am Ende steht eine grafische Darstellung des Innenlebens einer Software, die eine sehr fundierte Fehleranalyse zulässt.

"Die Erfahrung zeigt, wenn man also zu Softwarefirmen geht, dass sie in der Regel wenig Dokumentation haben, beziehungsweise die Dokumentation, die sie haben, obsolet ist. Und dann steht ein neuer Programmierer, der neu ins Projekt kommt, vor dem Problem, dass er gar nicht weiss, wie er die Komponente zu benutzen hat. Und es gibt Statistiken, die zeigen, dass die Programmierer zu fünfzig Prozent mit ihrer Zeit einfach nur dasitzen und versuchen, dass Programmm überhaupt erst zu verstehen, bevor sie tatsächlich eine Änderung machen. Und die Zeit wollen wir eben verkürzen mit diesen Analysen."

Im Kern geht es also um Reverse Engineering und damit um die Frage, welche Algorithmen in welcher Weise in einer Software verwendet werden. Softwarehersteller verbieten dies ihren Kunden zwar meist ausdrücklich, um ihr Knowhow zu schützen, aber es gibt Ausnahmen; dann nämlich, wenn einem der Quellkode sowieso selbst gehört, oder wenn die Schnittstellen einer Softwarekomponente offen gelegt werden sollen, damit sich diese Komponente innerhalb einer Organisation auch benutzen lässt. Die daraus hergeleitete Re-Dokumentation gibt den Programmierern eines Softwaresystems sogar oft erst die Möglichkeit, ihr Produkt wenigstens zu warten. Rainer Koschke:

"Bauhaus ist der Name für das Forschungsprojekt. Und die Idee "form follows function" von Bauhaus ist genau das, was wir als Maxime in der Softwaretechnik auch verfolgen."

Eine Maxime, die auf der Hand liegt, denn natürlich beschreibt der Kode einer Software genau, was ein System tun soll. Die präzise Ergründung dessen, was der Kode eigentlich beschreibt, versetzt den Programmierer in die Lage, nicht mehr blind ein paar Änderungen zu probieren, die dann plötzlich irgendwie magisch doch zu funktionieren scheinen. Rainer Koschke glaubt jedenfalls, dass wir in Zukunft ganz allgemein mit wesentlich stabilerer Software zu rechnen haben, und an dieser Entwicklung haben seine Werkzeuge zum Verstehen von Software einen sichtbaren Anteil.

"Wenn es uns gelingt, die Kosten zu reduzieren, und genau das ist unser Ziel, wird die Software erstens billiger. Zweitens, unsere Analysen decken Fehler auf, so dass auch das einen Vorteil hat im Bezug auf Qualität. Die Software sollte dann langfristig auch weniger Fehler enthalten."



Mehr bei deutschlandradio.de

Beitrag hören

 
 
Dradio Audio
Kein Audio aktiv
 
 
 
 
 

Computer und Kommunikation

Open Source SoftwareKritiker zweifeln an der Zuverlässigkeit

Auf einem Computermonitor ist der Binärcode zu sehen.

Open Source Software galt bislang als besonders sicher. Das Prinzip der vielen Augen wurde als weniger anfällig für schwerwiegende Fehler eingestuft. Das hat sich durch die Entdeckung des Programmierfehlers "Heartbleed" geändert.

Googles "Project Shield"Hilfe vom großen Bruder

Passanten vor dem Hauptgebäude des Suchmaschinenunternehmens Google in Mountain View im US-Bundestaat Kalifornien

Um regierungskritische Gegner mundtot zu machen, werden oft ungeliebte Webseiten lahmgelegt. Die Server werden dabei mit einer Flut manipulierter Anfragen überlastet. Schutz vor solch politisch motivierten DDoS-Attacken bietet der Google-Dienst "Project Shields".

Das Digitale LogbuchEin Mobilfunkanbieter-Wechsel mit Tücken

Ein Chip für Mobiltelefone ist Träger verschlüsselter Daten.

Die Mobilfunknummer bei einem Providerwechsel mitzunehmen, ist gar nicht so einfach. Unser Autor Maximilian Schönherr über eine nicht ganz reibungslose Kommunikation mit dem neuen und alten Anbieter.