Komplexität beim embedded Software Design


Analyse von Binärdateien

Obwohl extern geschriebener Code beinahe in jeder Anwendung zum Einsatz kommt, haben Entwickler oft keine Möglichkeit für dessen Analyse, weil sie keinen Zugriff auf seinen Quellcode haben. Ohne diesen können automatisierte Analysetools nur Vermutungen betreffend Qualität und Sicherheit des externen kommerziellen oder Open Source Codes anstellen. Nach Schätzungen von VDC Research handelt es sich tatsächlich bei etwa 30% des Codes in embedded Anwendungen um externe kommerzielle Software – darum ist Quellcode in der embedded Entwicklung oft nicht verfügbar. Ein automatisiertes Tool, das Binärdateien analysiert, kann diesen gefährlichen ‚Blind Spot‘ in Anwendungen ausschalten. Bild 2 enthält ein Beispiel einer Befehls-Injektions-Schwachstelle – sie wurde in ein Programm namens UnrealIRCd (sh. CVE-2010-2075) eingeschleust. Die Zeile 5602 ist ein Aufruf an die System() Funktion, deren Parameter von Daten aus einer Netzwerkverbindung stammen. CodeSonar fand den Fehler sowohl im Quellcode als auch im kompilierten Code.

‚Native‘ Support für Standards

Weltweit setzen sich Standards wie MISRA, DO-178B oder ISO 26262 durch. Diese Standards kommen oft in Kombinationen in embedded-intensiven Industrien wie Automotive, Aerospace, Medizingeräte, Industriesteuerungen zum Einsatz. Unternehmen in diesen Märkten müssen gerüstet sein, um nicht nur Verstöße der vordergründigen syntaktischen Regeln, sondern auch aus undefiniertem Verhalten entstandene ernste Bedrohungen zu identifizieren, wie es der MISRA C:2012 Standard vorschreibt. Während einige dieser Ereignisse durch Testläufe spezifiziert werden können, spüren nur die fortschrittlichsten statischen Analysetools die subtileren Ereignisse auf. Das Code-Beispiel in Bild 2 enthält eine vereinfachte Version des Codes mit dem Infinite Loop Bug, der im Microsoft Zune Player gefunden wurde. Am letzten Tag eines Schaltjahres wäre der Wert aus days genau 366, und der Loop würde nicht beendet. Bild 3 zeigt einen Type Mismatch: Die Variable tenths ist als vorzeichenbehaftete Integerzahl angegeben, aber der arithmetische Ausdruck führt zu einem vorzeichenlosen Wert. Solche Type Widersprüche sind durch den MISRA Standard verboten, weil sie zu stillen Trunkierungen und Overflows führen können, die u.U. unerwartetes Verhalten zur Folge haben.

Integrierte Sicherheit

Der Trend zur Vernetzung von embedded Systemen vergrößert die potenziellen Angriffsflächen für Hacker. Diese Attacken werden typischerweise ausgelöst, wenn ein unbefugter Anwender Daten über einen Eingangskanal (z.B. Netzwerkport) sendet. Programmierer können sich gegen diese Schwachstellen wehren, indem sie Eingangsdaten als potenziell gefährlich (Tainted) bewerten und sie validieren, bevor die Anwendung damit arbeiten darf. Weil der Datenfluss über die gesamte Anwendung manuell nachverfolgt werden muss, ist die Lokalisierung dieser gefährlichen Angriffe eine große Herausforderung. Ein automatisiertes Analysetool zur Untersuchung der Daten nach potenziell gefährlichem Input verkürzt die dafür aufzuwendende Zeit und steigert die Effektivität. Die Sicherstellung, dass importierte Daten nicht gefährlich sind, verringert letztendlich Risiko und gesetzliche Haftbarkeit, dass kompromittierte Software Endkunden erreicht.

Seiten: 1 2 3Auf einer Seite lesen

GrammaTech Inc.

Das könnte Sie auch Interessieren