Suchen

Softwareentwicklung in der Medizin Die statische Codeanalyse prüft auf Softwaresicherheit

| Autor / Redakteur: Paul Anderson * / Hendrik Härter

Fehlerhafte Software in medizinischen Geräten führt im schlimmsten Fall dazu, dass Patienten sterben. Neben verbesserter Software sollen Verifikationsprozesse und statische Codeanalyse helfen.

Firmen zum Thema

Vernetzte Geräte: Moderne Medizingeräte sind beinahe alle netzwerkfähig und damit anfällig für Cyberattacken, wenn die Software nicht ausreichend gesichert ist.
Vernetzte Geräte: Moderne Medizingeräte sind beinahe alle netzwerkfähig und damit anfällig für Cyberattacken, wenn die Software nicht ausreichend gesichert ist.
(Bild: pgottschalk/Fotolia.com)

Entwickler von Medizingeräten müssen sicherheitskritische Software für lebensrettende Anwendungen erstellen. Gefährlich wird es, wenn Anbieter von medizinischen Geräten die Software-Entwicklung immer noch als risikoarme Aktivität betrachten.

Denn dann verwundert es kaum, dass Patienten wegen schlecht entwickelter Medizingeräte-Software sterben. Innerhalb der letzten 10 Jahre haben sich die Rückrufe von fehlerhaften Medizingeräten beinahe verdoppelt: Vor allem wegen eines fehlerhaften Geräts mit hinreichender Wahrscheinlichkeit für Todesfall. So registrierte die Food and Drug Administration (FDA) der USA von 2005 bis 2009 über 56.000 Probleme und 710 Todesfälle im Zusammenhang mit Infusionspumpen an die FDA.

Bildergalerie

Zudem riefen Pumpenhersteller mehr als 87 Geräte zurück. Weil laut FDA viele Verletzungs- und Todesfälle auf Fehler beim Produktdesign und Entwicklung zurückzuführen sind, rief sie in 2010 die „Infusion-Pump-Improvement-Initiative“ ins Leben. Sie sieht unter anderem die verbesserte Software-Entwicklung und Verifikationsprozesse in der Branche vor und empfiehlt die statische Codeanalyse, um die gefährlichsten Fehlertypen und Sicherheitsrisiken aufzuspüren.

Malware und Viren in medizinischen Geräten

Wie Autos oder PCs sind moderne Medizingeräte größenteils netzwerkfähig: Sei es für die Beobachtung oder Berichterstattung oder Schulungszwecke. Über diese Schnittstellen können Hacker in medizinische, im Körper installierte Geräte wie Schrittmacher oder Insulinpumpen manipulieren, und den Patienten Schaden zufügen. Zudem findet sich laut MIT Technology Review auf vielen Medizingeräten ähnliche Malware und Viren wie auf Desktop-PCs. Dahinter steht, dass die Programme oft auf älteren Windows Betriebssystemen basieren, und die Hersteller einer Änderung nicht zustimmen bzw. dem Krankenhaus ihre Zustimmung für Änderungen nicht erteilen, nicht einmal für zusätzlich Antivirus-Software, weil sie sich über die regulatorischen Anforderungen uneins sind.

Ein weiterer Gefahrenfaktor ist der wachsende Anteil an Fremdsoftware oder zugekaufter Software. Weil dieser Code nicht vom Gerätehersteller selbst entwickelt wurde, unterliegt er auch nicht dessen direkter Kontrolle. Selbst wenn der Code keine Bugs enthält, bleibt immer noch die Gefahr für unentdeckte Fehler, die über das Betriebssystem aus dritter Hand, Code Libraries, Open Source oder kommerzielle Softwareteile bei deren Integration eingeschleppt werden können.

Wo Leben auf dem Spiel stehen, sollten sich Entwickler von Medizingerätesoftware zum Einsatz von „Best Practices“ verpflichten – hier ist die Übernahme eines sicherheitskritischen Kodierungsstandards kosteneffektiv und sehr lohnenswert. Sowohl die FDA als auch EU verlangen einen dokumentierten Software-Entwicklungsprozess (IEC62304), wobei die FDA nicht ausdrücklich auf Programmierstandards besteht. Viele Medizingeräte-Hersteller haben deren Wichtigkeit erkannt und sie freiwillig als Teil ihrer Software-Qualitätsinitative übernommen. Besonders vorteilhaft ist: Viele der „Best Practices“ sind nur mit minimalem Aufwand oder Kosten verbunden, und inzwischen existieren ausgezeichnete sicherheitskritische Standards für Medizintechnik – wie die „Power of 10“ Regeln des NASA Jet Propulsion Laboratory für sicherheitskritisches Programmieren, ursprünglich zum Einsatz in Software für Raumschiffe entwickelt.

Zehn einfach zu merkende Programmierregeln

Diese zehn einfachen, leicht zu merkenden Programmierregeln wurden so konzipiert, dass ein Missbrauch automatisch von statischen Analysetools entdeckt wird. Die moderne Quellcodeanalyse ist die effektivste Art, um die wirksame Umsetzung eines Programmierstandards sicherzustellen. Zusätzlich zur Prüfung des Codes nach seiner Konformität mit Standards kann sie auch ernste semantische Fehler aufdecken, wie Buffer Overruns, NULL-Zeiger Dereferenzierungen, Race Conditions und Ressourcen-Lecks oder eine fehlerhaft genutzte Schnittstelle zwischen Programmen (API).

Beinahe 30 Prozent des Codes in Embedded-Anwendungen, wie Medizingeräten, ist kommerzielle Fremdsoftware in Binärformat ohne eigentlichen Quellcode (Grafiken und Windowing Toolkits, Kryptographie-Bibliotheken, Middleware und Datenbanken). Besonders gefährdet sind Systeme, die sich aus Code von mehreren Anbietern zusammensetzen. Viele Fehler, die zu Sicherheitsschwachstellen führen, haben ihren Ursprung an Schnittstellen zwischen Modulen, oftmals wegen verschiedener Interpretationen ihrer Spezifizierungen. Sind Teile des Quellcodes nicht verfügbar, können Mischformen der statischen Analysetools, die Quellcodeanalyse mit Binärcodeanalyse kombinieren, sehr hilfreich bei der Sicherstellung von Robustheit und Sicherheit des Codes sein.

Artikelfiles und Artikellinks

(ID:44299364)