Ein Angebot von

Qualitätssicherung

Analyse von Binärcode: Vertrauen allein reicht nicht

| Autor / Redakteur: Mark Hermeling * / Franz Graser

Genau hinsehen: Viele der Informationen, die für eine statische Codeanalyse notwendig sind, müssen erst aufwändig aus dem kompilierten Code generiert werden. Es sind also andere Analysemethoden gefordert als bei der Untersuchung von Quellcode.
Genau hinsehen: Viele der Informationen, die für eine statische Codeanalyse notwendig sind, müssen erst aufwändig aus dem kompilierten Code generiert werden. Es sind also andere Analysemethoden gefordert als bei der Untersuchung von Quellcode. (Bild: gemeinfrei/Pixabay / CC0)

In vielen Embedded-Anwendungen wird Code von Drittherstellern eingesetzt. Fehler oder Sicherheitslücken in diesen Komponenten fallen jedoch auf den Anwendungsanbieter zurück. Auch die externen Komponenten sollten genau unter die Lupe genommen werden. Bei Quellcode kein Problem. Schwieriger wird es, wenn nur Binärcode vorliegt.

In der Anwendungsentwicklung wird heute mehr denn je auf Code von Drittherstellern zurückgegriffen. Datenbanken, Grafik-Toolkits oder Verschlüsselungstechnologien sind von Spezialisten verfügbar, die eigenen Entwicklungsteams können sich so mehr auf die Kernfunktionen der Anwendungen konzentrieren.

Vor allem der weit verbreitete DevOps-Ansatz mit seinen kurzen Release-Zyklen macht den Einsatz von „Third-Party Code fast unumgänglich. Marktbeobachter schätzen, dass im Embedded-Bereich mittlerweile über 30 Prozent des Codes aus externen Quellen stammt.

Mit dieser – um die Sprache der Industrie zu benutzen – geringeren Fertigungstiefe in der Software-Entwicklung geht jedoch auch ein Kontrollverlust einher: Häufig liegt der Fremd-Code nicht als Quellen vor, sondern in binärer Form. Damit ist es schwierig, diese Komponenten auf Fehlerfreiheit und vor allem auf mögliche sicherheitsrelevante Schwachstellen hin zu überprüfen.

Meist bleibt nur das Testing mit definierten Szenarien, um die Binärcodes zu überprüfen. Dieser Ansatz hat jedoch einen Nachteil: Es werden nur Fehler gefunden, die in den Testfällen auch wirklich auftreten. Potenzielle weitere Schwachstellen bleiben unentdeckt. Hier kann die statische Analyse Abhilfe schaffen.

Bei der statischen Analyse wird die Software nicht ausgeführt, sondern ein Modell erzeugt, das geprüft werden kann. Und damit auch mögliche Error Conditions, die in Test-Szenarien in der Regel nicht auftreten, aber dennoch später für Probleme sorgen können. Dazu muss das Analyse-Tool auf einige Informationen zugreifen, die im Quelltext vorliegen. Bei binärem Code sieht die Sache allerdings anders aus.

Ohne Debugging-Informationen wird es schwierig

Der Binärcode von ausführbaren Dateien und Bibliotheken kann auf zwei Arten vorliegen: Er kann Symboltabellen und Debugging-Informationen enthalten (unstripped) oder nicht (stripped). Bei gestrippten Dateien ist eine manuelle Fehlersuche kaum mehr möglich.

Nach dem Disassemblieren enthält der Code zu wenig Informationen, er ist nur mit viel Aufwand verständlich und nachvollziehbar. Hier sind Tools wie CodeSonar von GrammaTech unverzichtbar, die das Disassemblieren und Analysieren des Binärcodes übernehmen.

Viele der Informationen, die für eine statische Analyse notwendig sind, müssen erst aufwändig aus dem kompilierten Code generiert werden. Es sind also andere Analysemethoden gefordert als bei der Untersuchung von Quellcode. Auf der anderen Seite erzeugt die Analyse der Binaries auch Informationen, die sich aus den Quellen nicht ableiten lassen.

Denn bei der Analyse des Binärcodes wird das Programm so betrachtet, wie es nachher wirklich in den Speicher geladen und ausgeführt wird. Dadurch lassen sich auch mögliche Probleme aufdecken, die durch die Tool-Kette mit Compiler und Linker entstehen können.

Inhalt des Artikels:

Kommentare werden geladen....

Kommentar zu diesem Artikel abgeben

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
  1. Avatar
    Avatar
    Ausklappen
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Ausklappen
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44809488 / Test & Qualität)