Softwareentwicklung in der Medizin

Die statische Codeanalyse prüft auf Softwaresicherheit

Seite: 2/2

Firmen zum Thema

Sicherheitslücken und bösartiger Code

Als Besonderheit überprüft die Binärcodeanalyse Software auf Sicherheitslücken und bösartigen Code, ohne dass sie dazu deren Quellcode benötigt. Da diese Technologie nicht auf Debug-Symbolen oder Symboltabellen beruht, ermöglicht sie das Prüfen von abisolierten Programmdateien („Stripped Executables“), wie sie gewöhnlich von Softwareanbietern ausgeliefert werden. Zu den „Best Practices“ der Entwickler gehört auch, Eingaben aus potenziell gefährlichen Kanälen immer als risikoreich einzustufen, bis deren Gültigkeit geprüft wurde, weil der Großteil der eingesetzten Medizingeräte-Software latente Fehler oder Sicherheitsschwachstellen enthält.

Eingaben aus gefährlichen Kanälen einstufen

Ungeprüfte Eingabewerte werden als „Tainted“ bezeichnet, zu deutsch: Mit einem Makel behaftet. Zu den typischen Fehlerarten gehören Buffer Overruns, SQL- oder Befehl-Injektion, Cross-Site Scripting, Arithmetic Overflow und Path Traversal. Zu prüfen, ob ein Programm Tainted-Daten korrekt verarbeitet, kann eine echte Herausforderung sein, weil dies die Überprüfung des Datenverlaufs durch die Code-Struktur verlangt. Sogar bei relativ kleinen Programmen ist das sehr mühsam, und für die meisten Echtzeitanwendungen generell manuell nicht durchführbar.

Bildergalerie

Darum liegt der beste Ansatz in der Automatisierung. Die Taint-Analyse ist eine Technik, um Entwicklern aufzuzeigen, wie der Verlauf von riskanten Daten von einem Programmteil in einen anderen erfolgen kann. Mithilfe von modernen statischen Analysetools können sie mögliche Angriffsflächen auf der Programmoberfläche besser verstehen und somit die Fehlersuche und –behebung enorm verkürzen. Manche Tools führen die Taint-Analyse dynamisch aus. Dennoch bietet ein statischer Ablauf wichtige Vorteile – nicht zuletzt um sicherzugehen, dass alle Ausführungen möglich sind, und nicht nur diejenigen, für die Testfälle vorliegen.

Auch vor dem OP macht die Vernetzung nicht halt. Ganz im Gegenteil: In Krankenhäusern sind Übertragungen zu Schulungszwecken oder zur Diagnosefindung keine Seltenheit. Entwickler von Medizingeräte-Software tragen die Verantwortung für hochwertigen Code, vom dem Gesundheit und Sicherheit der Patienten abhängen. Sicherheitskritische Programmierstandards erzielen in anderen Branchen, wo es um Menschenleben geht, ausgezeichnete Ergebnisse.

Wegen der hohen Rückrufrate von Medizingeräten sollte ihre Übernahme von Geräteherstellern zwingend sein. Moderne statische Analysetools finden Fehler, die sehr früh in der Entwicklung auftreten, und gewährleisten die korrekte Implementierung und Sicherheit von Software. Darum sollten sie in der Medizintechnik routinemäßig eingesetzt werden.

* Dr. Paul Anderson ist Vice President Engineering bei GrammaTech.

Artikelfiles und Artikellinks

(ID:44299364)