Warum Software unsicher ist – und wie wir das ändern können
Was macht unsere Software so angreifbar? Die überwiegende Zahl der technischen Systeme bestehen zu großen Teilen aus Software. Die Zuverlässigkeit und Sicherheit dieser Systeme hängt daher stark von der Zuverlässigkeit und Sicherheit ihrer Softwarebestandteile ab. Und genau hier liegt ein erhebliches Problem: Die zunehmend starke Vernetzung und eine große Zahl bekannter Schwachstellen in verwendeter Software macht unsere Systeme angreifbar.
Tatsächlich sind Cyberangriffe mit erheblichen Auswirkungen fast schon normal. Eine Bitkom-Studie vom 5.8.2021 über Cyber-Kriminalität geht von einem Gesamtschaden von 223 Milliarden Euro pro Jahr für die deutsche Wirtschaft durch Diebstahl, Spionage und Sabotage aus, mehr als doppelt so viel wie noch 2018/19. Die Studie zeigt, dass 2020/21 neun von zehn Unternehmen von Cyberangriffen betroffen waren.
Das gefährdet nicht nur Unternehmen, sondern in besonderem Maße auch kritische Infrastruktur, Lieferketten, die Industrie als Ganzes und vernetzt agierende Systeme wie autonome Fahrzeuge.
Aber was genau macht unsere Software so angreifbar?
Die CISA (Cybersecurity and Infrastructure Security Agency) publiziert regelmäßig Hinweise auf Schwachstellen in der Software von technischen Systemen und hat einen Katalog ausgenutzter Sicherheitsprobleme erstellt. Auch das CVE-Programm veröffentlicht einen solchen Katalog, auf dessen Basis die Top 25 Most Dangerous Software Weaknesses zusammengefasst und hervorgehoben werden. Schaut man sich diese Top-25-Schwachstellen an, findet man sich permanent wiederholende Probleme vor allem in zwei Bereichen.
Der erste umfasst alles, was es ermöglicht, sich mit falschen Identitäten und manipulierten Daten Zugriff zu einem System zu verschaffen: ungenügende Passwortabsicherung, inkorrektes Benutzermanagement, unsichere Übertragung sensibler Informationen, mangelhafte Validierung von Inputdaten. Selbst „Hard-coded Credentials“ tauchen immer noch in dieser Liste auf.
Der zweite betrifft Implementierungsfehler: falsche programmtechnische Realisierung und fehlende Prüfung von Code. Ganz oben dabei sind Fehler bei der Speicherverwaltung: „Out-of-bounds Read & Write”, „Buffer Overflow”, „Null Pointer Dereference”, „Use After Free”, usw. Sowohl Microsoft als auch Google Chrome bestätigen, dass ungefähr 70% der von ihnen adressierten Schwachstellen auf unsicheren Umgang mit Speicher zurückgehen.
Und dieses Problem kann man hauptsächlich als eine Frage der eingesetzten Programmiersprache betrachten. Denn es tritt vor allem dann auf, wenn keine geeigneten Speicherabstraktionen zur Verfügung stehen. Das ist ein Grund für das Informationsblatt zu sicheren Programmiersprachen der NSA von 2022, das für Sprachen mit sicherer Speicherverwaltung plädiert, unter anderem für die Sprache Ada.
Aus gutem Grund: Programmiersprachen wie Ada können durch strenge Typisierung und umfangreiche Compiler- und Laufzeit-Prüfungen ganze Klassen von Fehlern systematisch von Grund auf vermeiden. In Ada ist ein Array kein Pointer auf das erste Element, sondern eine semantische Struktur, die Indextypen und Grenzen des Arrays untrennbar beinhaltet. Lese- und Schreiboperationen werden sowohl vom Compiler als auch zur Laufzeit geprüft.
12 der Top-25-Schwachstellen wären durch die Verwendung von Ada und deren syntaktische und semantische Prüfung durch den Compiler und das Laufzeitsystem ausgeschlossen, lassen sich also allein durch die Wahl der Programmiersprache vermeiden - und das unabhängig von Programmierfehlern. Sieben weitere Schwachstellen lassen sich durch korrekte Authentifizierung, Autorisierung und Passwortabsicherung vermeiden.
Was erschreckend ist, dass der Großteil trotzdem regelmäßig unter den Top 25 auftaucht, obwohl es für keine einzige Schwachstelle davon eine Ausrede gibt. Es sind in aller Regel die gleichen, allgemein vorher bekannten Fehler, die Software so angreifbar machen – Fehler, die wir kennen und von denen wir wissen, wie sie zu beheben sind. Dass vorhandene Erkenntnisse in der Praxis schlicht nicht umgesetzt werden, liefert Jahr für Jahr die möglichen Angriffsvektoren für Cyberangriffe und gefährdet technische Systeme vom Smart Home bis zur kritischen Infrastruktur, verbunden mit immensen Kosten.
Um diese Gefährdung effektiv, wirtschaftlich vertretbar und nachhaltig zu beheben, reicht eine singuläre Reparatur einzeln erkannter Schwachstellen nicht aus. Es muss Grundsätzliches in der Implementierung umgestellt und bei allen Beteiligten ein Sicherheitsbewusstsein entwickelt werden – bei denjenigen, die programmieren, auf Managementebene, aber auch in Politik und Gesellschaft.
Der Wunsch der Fachgruppe Ada für ein sicheres Jahr 2025 lautet daher: Mehr Security by Design, mehr Sorgfalt in der Benutzerverwaltung und bei Kommunikationsprotokollen und Augen auf bei der Wahl der Programmiersprache. Wir empfehlen natürlich Ada.
Beigesteuert wurde dieser Beitrag von Tobias Philipp (Sprecher), Christina Unger (stellvertretende Sprecherin), Dr. Hubert B. Keller sowie Fachleute von Ada Deutschland e.V. Der Text erschien zuerst in unserem Newsletter GI-Radar. Alle Ausgaben gibt es hier zum Nachlesen.
