Sie sind hier: HomeTelekommunikation

Security by Design: IoT braucht sichere Software

Mit dem IoT entstehen nicht nur viele neue Geschäftsmodelle, sondern auch unzählige neue Sicherheitslücken. Zumindest, wenn Hersteller und Anwender die IoT-Sicherheit mit denselben Methoden gewährleisten wollen, wie es in der IT üblich ist.

Astronaut Bildquelle: © astronaut fs - fotolia

Nur mit besserer Software-Qualität und sicherem Code kann das Internet der Dinge eine Erfolgsgeschichte werden.

Gäbe es fehlerfreie Software, wäre IT-Sicherheit ein einfaches Geschäft. Doch das ist ein frommer Wunsch: Komplexe und gleichzeitig fehlerfreie Software ist – zumindest nach derzeitigem Ermessen – nicht möglich und jeder Programmierfehler kann von Cyberkriminellen ausgenutzt werden. Die IT-Branche reagiert darauf mit permanenten Updates sowie mit einer breiten Palette an Sicherheitsprodukten. Die Anwender haben sich daran gewöhnt, ständig Aktualisierungen zu installieren. Doch mit dem Internet of Things bekommt die IT-Sicherheit eine neue Dimension: 2017 wurden laut den Marktforschern von Gartner 8,4 Milliarden IoT-Geräte in Betrieb genommen – ein Zuwachs von fast 30 Prozent im Vergleich zum Vorjahr. Jedes dieser IoT-Geräte ist zunächst einmal ein Client, der über Standard-Internettechnologien mit anderen Geräten kommuniziert – und damit ein potenzielles Angriffsziel darstellt.

Enhancing Code Bildquelle: © GrammaTech

Statische Analyse sollte bei der Entwicklung sicherer Software ein integraler Bestandteil des Software Development Lifecycles (SDLC) sein.

Diese Geräte mit den bisherigen Methoden zu schützen, ist schlicht nicht möglich: Viele IoT-Geräte sind durch sehr geringe Übertragungskapazitäten mit dem Internet verbunden. Um die Messdaten eines Sensors zu übertragen, sind wenige Kilobit pro Sekunde völlig ausreichend. Für Software-Updates sind diese Kapazitäten aber zu gering, zumal in einigen der genutzten Funksegmente regulatorisch festgelegte Zeitfenster berücksichtigt werden müssen. Darüber hinaus sind IoT-Geräte oftmals mobil – klassische Firewalls scheiden somit aus. Die meisten Sicherheitsverantwortlichen sind sich dieses Problems bewusst. Eine Studie von Dimensional Research und Tripwire ergab, dass 96 Prozent der befragten Sicherheitsverantwortlichen davon ausgehen, dass das Industrial Internet of Things (IIoT) künftig deutlich mehr im Fokus von Angreifern liegen wird. Gleichzeitig sind 51 Prozent der Befragten aber nicht auf entsprechende Angriffe vorbereitet.

Quellen Embedded-Systeme Bildquelle: © GrammaTech

Ein erheblicher Teil des bei Embedded-Systemen verwendeten Codes stammt aus externen Quellen.

Sicherheit ins Zentrum rücken
Um IoT sicher und damit auch tragfähig für neue Geschäftsmodelle zu machen, braucht es einen anderen Ansatz: Security by Design, sichere und fehlerarme Software. Innerhalb des gesamten Software Development Lifecycles (SDLC) muss die Sicherheit des späteren Produkts höchste Priorität genießen, um die Gefahr von Sicherheitslücken so gering wie möglich zu halten. Das beginnt bereits bei der Definition der Anforderungen, die an die Software gestellt werden. Hier sollten sicherheitsspezifische Notwendigkeiten festgelegt und eine Risikoanalyse vorgenommen werden. Beim Design der Software ist es sinnvoll, mögliche Missbrauchsfälle zu berücksichtigen und entsprechende Testpläne zu erstellen. Während der eigentlichen Entwicklung schließlich muss der Code durch statische Analyse fortlaufend auf Fehler und Probleme geprüft werden. Das ist zwingend erforderlich, denn die aktuell in der Software-Entwicklung üblichen Testverfahren haben zwei Nachteile: Zum einen durchläuft die Software während des Testings definierte Szenarien. Diese Testfälle decken jedoch unter Umständen nicht alle Zustände ab, bei denen sich Fehler zeigen können. Zum anderen funktioniert das Testing nur in einer sehr späten Phase der Entwicklung. Je später Fehler jedoch gefunden werden, desto aufwendiger und kostenintensiver ist es, diese zu beheben.

Bei der statischen Analyse hingegen wird der Code nicht ausgeführt. Die Analyse erfolgt, indem Schlussfolgerungen über das potenzielle Verhalten des Codes gezogen werden. Damit finden auch Teile des Codes Berücksichtigung, die beim normalen Testing gar nicht durchlaufen werden. Zudem sind aktuelle Tools in der Lage, auch den Binärcode auf Fehler zu überprüfen. Das ist besonders im Hinblick auf den Trend wichtig, viele Codeteile nicht mehr selbst zu entwickeln, sondern von Dritten zu kaufen.

Zulieferer kontrollieren
Das Marktforschungsunternehmen VDC Research ermittelte 2016 in einer Studie, dass im Embedded-Bereich fast 45 Prozent der Code-Basis aktueller Projekte von Dritten stammt. Gut die Hälfte davon steht laut der Studie als Open Source zur Verfügung. Die andere Hälfte wird kommerziell – und damit in der Regel in Binärform – vertrieben. Hier liegt der Code überwiegend nicht als Quellcode vor, eine manuelle Analyse ist nicht möglich. Innerhalb der Software Supply Chain entsteht dadurch ein unwägbares Risiko: Ist der Code aus externen Quellen sicher und entspricht er den Standards der eigenen Entwicklungsabteilung? Software nimmt im Rahmen der Digitalen Transformation eine kritische Rolle für die Geschäftsmodelle ein. Blindes Vertrauen auf Zulieferer ist dabei fehl am Platz.

Für den Erfolg bei der Qualitätssicherung ist ein orchestriertes Vorgehen entscheidend. Tests und statische Analysen sollten als integrale Bestandteile des Entwicklungsprozesses etabliert werden. Zudem sollte ein Review-Prozess implementiert werden, den alle Veränderungen des Codes durchlaufen müssen. So lässt sich weitgehend sicherstellen, dass vorhandene Sicherheitslücken gefunden und beseitig werden. Die Entwickler-Teams können dadurch ihre Geräte sicherer machen und gleichzeitig die Time to Market verringern. Doch bei aller organisatorischer und technologischer Unterstützung: Tools können dem Entwickler nur Hinweise liefern, wo mögliche Fehler liegen. Ohne manuelle Prüfung und Tests durch erfahrene Programmierer wird es keine sichere Software geben, die den Anforderungen eines Internet of Everything gerecht wird.

Mark Hermeling ist Senior Director Product Marketing bei GrammaTech