7. Februar 2018
Statistische Codeanalyse

Fünf Faktoren für sichere Software

Mit dem Internet of Things explodiert die Zahl der Internet-fähigen Geräte. Und damit auch die Möglichkeit für Cyberkriminelle, diese Devices als Angriffsvektoren zu nutzen. Entwickler und Hersteller sind damit gefordert, an ihren Code und ihre Produkte deutlich strengere Sicherheitsanforderungen zu stellen als bislang. Dabei spielen fünf Aspekte eine wichtige Rolle.

Bei der statischen Analyse wird der Code nicht ausgeführt, sondern alle möglichen Zustände in einem Modell überprüft. (Bild: GrammaTech Inc.)

Bei der statischen Analyse wird der Code nicht ausgeführt, sondern alle möglichen Zustände in einem Modell überprüft. (Bild: GrammaTech Inc.)

Ein Mensch stirbt, weil Angreifer seinen Herzschrittmacher aus der Ferne deaktiviert haben. Das Szenario klingt wie aus einem Science-Fiction-Film, ist aber potenziell heute möglich. So kam es Ende August dieses Jahres zu einer Rückrufaktion des Pharmakonzerns Abbott, weil eine Sicherheitslücke einen Herzschrittmacher über Funk angreifbar macht. Und das ist kein Einzelfall, bereits im Oktober 2016 warnte der Hersteller Johnson & Johnson vor einer Sicherheitslücke in einer Insulinpumpe des Unternehmens. Auch wenn die Beispiele aus der Medizintechnik eine besondere Nutzung des IoT darstellen, wird deutlich: An IoT-Geräte müssen andere Maßstäbe angelegt werden als an herkömmliche Clients. Denn nichts anderes sind IoT-Devices zunächst – Clients, die Daten über das Internet senden und empfangen. Und diese Geräte mit den in der IT üblichen Methoden zu schützen, ist schlicht nicht möglich.

Viele IoT-Geräte sind mit sehr geringen Übertragungskapazitäten mit dem Internet verbunden. Für Softwareupdates sind die Kapazitäten zu gering. Darüber hinaus sind die meisten IoT-Geräte weit verteilt oder auch mobil. Firewalls wie in der sonstigen IT scheiden somit aus. Sicherheit muss also ein Designprinzip werden. Eine wichtige Rolle nimmt dabei die statische Codeanalyse als fortlaufendes Korrektiv im Prozess ein: 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 Testszenarien in der Regel nicht auftreten, aber dennoch später für Probleme sorgen können. Um sicheren Code zu erzeugen, sollten sich die Entwicklerteams fünf Prinzipien zu eigen machen.

Strukturierte Informationen zu gefundenen Fehlern helfen den Entwicklern dabei, diese frühzeitig und schnell zu beheben - bevor große Kosten entstehen. (Bild: GrammaTech Inc.)

Strukturierte Informationen zu gefundenen Fehlern helfen den Entwicklern dabei, diese frühzeitig und schnell zu beheben – bevor große Kosten entstehen. (Bild: GrammaTech Inc.)

1. Vorgehensmodell festlegen

Aus Zeitmangel und aufgrund unklarer Vorgaben werden immer wieder die grundlegenden Vorarbeiten bei der Software-Entwicklung vernachlässigt. Dazu gehört, ein Vorgehensmodell festzulegen und zu etablieren, dass man den Software Development Lifecycle in einzelne Phasen gliedert. Innerhalb dieser Phasen sollte auch das Testing und die Codeanalyse fest als fortlaufender Prozess zur Qualitätssicherung eingeplant werden. Vor allem in den frühen Phasen der Software-Entwicklung ist meist noch kein wirkliches Testing möglich, da noch kein lauffähiger Code existiert. Hier ist es umso wichtiger, mit statischer Analyse den Code auf Fehler zu untersuchen. Schwerwiegende Programmierfehler wie Null Pointer Deferences oder Buffer Overruns könnten durch statische Analyse erkannt und frühzeitig behoben werden. Hier gilt die Regel: Je früher ein Fehler gefunden wird, desto geringer sind die Folgekosten.

2. Werkzeuge und Methodik

Mit welchen Werkzeugen und Methoden die Entwickler arbeiten, steht in vielen Fällen fest, bevor die Projektspezifikationen definiert sind. Das kann unter Umständen zu Lasten der Produktivität und auch der Qualität gehen. Nicht alle Ansätze und Tools eignen sich gleichermaßen für alle Projekte. Zudem sollte darauf geachtet werden, dass wesentliche Elemente des SDLC wie Codereviews eng in den Arbeitsablauf der Entwickler eingebunden sind. Idealer Weise kann die Code-Analyse direkt in die IDE der Developer integriert werden, hier gibt es seitens der Hersteller bereits einige Angebote. So kann zum Beispiel Codesonar von GrammaTech in die Wind River Workbench integriert werden, die Entwickler müssen somit die Workbench nicht mehr verlassen.

Seiten: 1 2Auf einer Seite lesen

Ausgabe:
www.grammatech.com

Das könnte Sie auch interessieren