Suchen

Qualitätssicherung

Analyse von Binärcode: Vertrauen allein reicht nicht

Seite: 2/2

Firmen zum Thema

Quell- und Binärcode gemeinsam analysieren

Das Tool erzeugt dazu ein Modell des gesamten Programms mit allen Source- und Binary-Bestandteilen: Was als Quellcode vorliegt, wird geparst und Binär-Code wird disassembliert. CodeSonar erzeugt daraus eine einheitliche Präsentation, die die Semantik beider Teile konsistent abbildet. Um mögliche Fehler zu erkennen, durchläuft das Werkzeug das Modell interprozedural und sucht nach Anomalien.

Zu den Fehlern, die im Fokus der Analyse stehen, gehören unter anderem die klassischen Einfallstore für Malware:

Bildergalerie
  • Buffer Overrun/Underrun
  • Command Injection
  • Integer Overflow of Allocation Size
  • SQL Injection
  • Non-constant Format String

Werden potenzielle Fehler gefunden, zeigt CodeSonar eine Warnung mit weiterführenden Hinweisen an. Im Screenshot in der Bildergalerie entdeckte CodeSonar einen Buffer Overflow im Programm gnuchess. Alle relevanten Codebestandteile werden dabei automatisch markiert, eine detaillierte Meldung hilft bei der Fehlerbeseitigung. Wichtig sind diese Informationen nicht zuletzt deshalb, weil der erzeugte Assembler-Code kaum lesbar und völlig anders aufgebaut ist als ein Quellcode in einer modernen Programmiersprache. Binärcode kennt keine strukturierten Funktionen, somit lassen sich diese Hilfskonstrukte auch nicht beim Disassemblieren erzeugen.

Man sieht nur, dass zum Beispiel die Funktion return_append_str ihren Platz in der Sektion _text hat und an die Adresse 0x419350 geladen wird. Eine manuelle Überprüfung dieses Codes wäre hier nicht nur sehr mühsam, sondern auch extrem fehleranfällig. Die Warnungen des Tools können jedoch nicht nur dazu dienen, den Entwickler auf ein mögliches Problem hinzuweisen. Die Summe aller Warnungen bei der Analyse einer externen Komponente lässt Rückschlüsse auf die Qualität des Codes und damit auch auf die Zuverlässigkeit des Zulieferers zu.

Sichere Software, schnellere Entwicklung

Der Einsatz von statischer Analyse bei Binär-Code hilft also dabei, eine hohe Software-Qualität auch dann sicherzustellen, wenn Komponenten Dritter in die Anwendung mit einfließen. Der Ansatz der statischen Analyse hat dabei einige Vorteile gegenüber anderen Methoden: Bei der statischen Analyse wird der Code nicht ausgeführt. Das Analyse-Tool ermittelt alle möglichen Zustände, die das Programm einnehmen kann. So können auch Fehler gefunden werden, die in definierten Test-Szenarien nicht auftreten.

Durch die Möglichkeit, die Analyse zu automatisieren, skaliert das bei CodeSonar implementierte Verfahren auch für große und komplexe Software-Projekte. Für die Entwickler und für das Unternehmen bedeutet das: Sichere Software bei einer kürzeren Time to Market. Und gleichzeitig muss den externen Herstellern nicht mehr blind vertraut werden. Denn Vertrauen ist gut, Code-Analyse besser. //FG

* * Mark Hermeling ... ist Senior Director Product Marketing bei GrammaTech.

(ID:44809488)