Über die Notwendigkeit, Softwarefehler zu reduzieren
Das Bundesamt für Sicherheit in der Informationstechnik stellt fest:Muss diese Tatsache (hier Beispiele: B1, B2) nicht zur Frage führen, ob wir schon in absehbarer Zukunft Software brauchen, die deutlich weniger Fehler enthält als sie das typischerweise heute tut?
Derzeit gilt:
- Wissenschaftliche Untersuchungen (z.B. eine der Carnegie Mellon University aus 2003) belegen, dass moderne Software, wenn sie in Betrieb genommen wird, i.A. immer noch bis zu fünf Fehler pro 1000 Lines of Code enthält; sprich: etwa 1 Fehler auf je 3 DIN A4 Seiten manuell erstellten Source Codes.
- Selbst in den besten aller je untersuchten (größeren) Programme fand sich immer noch 1 Fehler in je 7500 Zeilen Code.
- Beispiele von anderer Seite bestätigen das: Als Windows 2000 auf den Markt kam, enthielt sein Code — nach Microsofts eigener Schätzung — etwa ein wirkliches, aber noch gar nicht genau untersuchtes Problem in je 1000 Lines of Code.
- Wären mathematische Publikationen auch nur annähernd so fehlerhaft, wäre die Mathematik als Wissenschaft sicher längst in sich zusammen gebrochen (denn dort bauen neue Ergebnisse ja stets auf älteren auf).
Dies hat z.B. zur Folge, dass deutsche Unternehmen nach eigener Schätzung enorm viel Geld — etwa 2.6% ihres gesamten Umsatzes — darauf verwenden müssen, Schäden zu beheben, die ständig durch lange Zeit nicht lokalisierbare Software-Fehler entstehen (Systemabsturz, Sicherheitsprobleme, verfälschte Anwendungsdaten).
In extremen Ausnahmefällen [A], deren es in letzter Zeit aber zunehmend mehr gibt (wenigstens 10 in 2011), kann schon ein einziges Zuschlagen eines Software-Fehlers Schäden in 2 bis 3-stelliger Millionenhöhe zur Folge haben.
Neben Software, die Fehlfunktion zur Folge hat, sind natürlich auch Sicherheitslücken zu fürchten — und die sind zahlreich, wie die Tatsache zeigt, dass z.B. Oracle im Okt 2013 und Jan 2014 Patches ausgeliefert hat, die 127 und keine 4 Monate später 147 weitere solcher Lücken zu entschärfen hatten. Dass es darüber hinaus weit mehr noch gar nicht entdeckte gibt, scheint sicher ...
All das zeigt (siehe auch [1]):
Als in 2008 etwas über 1000 IT-Manager und Fachspezialisten nach der Höhe ihrer Kosten für Software-Test befragt wurden, haben 65% eingestanden, sie nicht zu kennen (International Software Testing, Pierre Audoin Consultants (PAC), Jan 2008).
Und eine Umfrage aus 2011 scheint zu belegen, dass etwa 30% aller in Deutschland produzierten Software auch nach ihrer Freigabe an die Nutzer noch schwerwiegende Fehler enthält:
Über typische Fehlerdichte/KLOC gibt Harry Sneeds Papier Auskunft.
Relativ harmlos — da einfach zu entdecken — sind rein formale Fehler (welcher Art und wie häufig in etwa sie sind, zeigen Analyse Reports). Dass ihr Auftreten nicht selten Absturz der Anwendung zur Folge hat, wirkt schadensbegrenzend.
Sie also wären das kleinere Problem, denn gutes Werkzeug kann sie finden: Im Code zu Libre Office etwa soll Einsatz von Coverty Scan — so wird berichtet — die Dichte rein formaler Fehler von 1.11 pro 1000 LOC auf 0.08 gedrückt haben.
Vergleichbar häufig, recht gefährlich, aber wirklich NUR über aufwendige Reviews und sehr professionellen Test aufzudecken sind Fehler applikationslogischer Natur. Schäden, die sie verursachen, werden i.A. hoch sein und proportional zum Stellenwert, den die Anwendung fürs Unternehmen hat.
Eine typischerweise besonders häufige Fehlerursache sind Error Handling Issues und Stellen, an denen Error Handling fehlt, obgleich es es notwendig wäre.
Wie schwierig es sein kann, über welche Methodik auch immer selbst in sehr kurzen Programmen wirklich fatale Fehler zu finden, zeigt dieses Beispiel (selbst nach formaler Programmverifikation — auch sie war offenbar nicht perfekt — vergingen 20 Jahre, über die hinweg der Fehler in diesem oft diskutierten Code-Stück nicht erkannt wurde. Selbst im weltweit intensiv genutzten JDK war er 9 Jahre lang präsent, bis er dann doch eine Anwendung zum Absturz brachte — erst hierdurch hat man ihn entdeckt).
Nicht vergessen sollte man: Es gibt Systemkatastrophen, die sich wirklich nur über hinreichend redundate Installation der Anwendungen entschärfen lassen (siehe Beispiele, z.B. aktuelle oder sehr teure).
Dennoch: Es ist ganz offensichtlich, dass heute selbst in Großprojekten — auch in solchen, die SAP oder IBM verantwortet — viel zu wenig getestet wird — und das obgleich nicht entdeckte Software-Fehler heute, wenn sie zuschlagen, schnell Kosten in bis zu 3-stelliger Millionenhöhe verursachen können (siehe Beispiele aus 2011 und 2012).
Vielleicht sollte man sich fragen, ob es nicht nochmals an der Zeit wäre, ganz gezielt darüber nachzudenken, wie Software systematischer als bisher entwickelt werden kann: Es gibt durchaus Anzeichen, die darauf hindeuten, dass es auch heute noch bei zu wenig methodischem Vorgehen — wie schon in den 60-er Jahren — zu einer wirklich gefährlichen Software-Krise kommen könnte (wobei ihre Ursache dann aber weniger in der Schwierigkeit liegen wird, Code zu beherrschen, sondern vor allem in der Schwierigkeit, Komplexität von Anwendungslogik überschaubar zu halten, hinreichend schnell zu verstehen und auf ein Normalmaß begrenzen zu können). Siehe dazu:
- Ein Mega-Projekt-Desaster — ganz sicher auf methodische Mängel zurückzuführen!
- Besonders folgenreiche Software-Fehler in 2013
- Winziger Fehler — extrem große Sicherheitslücke:
Heartbleed appears to be one of the biggest flaws in the Internet’s history, affecting the basic security of as many as two-thirds of the world’s websites.
Welche Gefahr so eine Lücke darstellt, kann sich vorstellen, wer hört, was Jürgen Stock (Interpols neuer Chef) feststellt (Zitat): Angesichts des rasanten technologischen Fortschritts werden Straftäter schon bald über ungeahnte Möglichkeiten verfügen, um gigantische kriminelle Erlöse zu erzielen.
Stock zufolge hat das Problem schon heute "weit größere Ausmaße angenommen als viele glauben". Die Öffentlichkeit erfahre über Computer-Straftaten "nur einen Bruchteil dessen, was wirklich passiert".
- Welch dramatische Folgen unentdeckte Sicherheitslücken schon hatten (2015)
- Der Report Financial Cyberthreats in 2014, aber z.B. auch die Möglichkeit von Cross-site-scripting zeigen ganz generell, wie verwundbar Software ihre Nutzer machen kann (und dass Sicherheitslücken besonders gefährliche und zudem noch ganz besonders schwierig zu entdeckende Software-Mängel darstellen.
Beispiele aus unserem Alltag:
- Sicherheitslücke in BMW-Software öffnet Dieben Tür und Tor.
- Manipulierbare Online-Shops (2015)
- Nicht mal Druckern und Kopierern darf man trauen: Sie könnten (unabsichtlich) Daten fälschen.
- Antiviren-Software hilft immer weniger
- Software wird allgegenwärtig — sie m u s s sicherer werden ...
- Je mächtiger Technologie, desto unerlässlicher ist fehlerfreie Software — Beispiel Boing und Raumfahrt (2020)
Wie man Webanwendungen möglichst sicher macht: OWASP diskutiert, wie es immer wieder zu Sicherheitslücken kommt. Ein guter Weg, sie noch während der Entwicklung — durch Code-Analyse — zu entdecken, wäre Contrast (für Java und C#), siehe Info dazu.
Noch eine ganz andere Frage wäre, wie man Firmware absolut sicher macht. Spionage-Organisationen nämlich — und wohl keineswegs nur der NSA — gelang es schon, Sicherheitslücken in Rechnerkomponenten unterschiedlichster Hersteller so zu verstecken, dass sie dort über Jahre hinweg unentdeckt blieben. Insgesamt lässt sich feststellen: Welche Gefahren in selbst weltweit millionenfach täglich benutzter Software oder Firmware schlummern — dort unbeabsichtigt oder gar in böser Absicht eingebaut —, ist mit heutiger Technologie noch viel zu wenig feststellbar. Hieran wird sich über kurz oder lang etwas ändern müssen.
Sind wir uns dessen aber auch ausreichend bewusst? Eher wohl nicht, denn:
Eine Studie von Gartner (veröffentlicht im Februar 2015) stellt fest (Zitate aus CIO):
- Für deutsche IT-Verantwortliche steht Sicherheit auf Platz vier. Die anderen europäischen Befragten sehen das Thema erst auf Platz neun. ABER:
- Nur 20 Prozent der Deutschen halten IT-Related Risk Levels für ein wichtiges Kriterium der IT-Performance. In Gesamteuropa sind es mit 32 Prozent deutlich mehr.
Diese neue Risiko-Kategorie aber — so warnt Gartner — darf in einer digitalisierten Welt nicht unterschätzt werden.
Entsprechende Qualität zu erzwingen, wird jedoch kaum zur Chefsache gemacht:
Man denkt immer noch, Software-Entwickler würden von sich aus hinreichend gründlich arbeiten und das auch dann noch, wenn zu einseitig denkende Einkäufer sie durch Festpreise geknebelt haben. Kein Wunder also, dass Gartner feststellt: Insgesamt zeigen sich zu viele deutsche IT-Verantwortliche zu stark kostenorientiert. Sie vergessen:
but by increasing revenue per dollar of IT cost. «
stw5717FSP — Fehler . Sicherheitslücke . Problem — News?
Mehr + B G E + S H A + More
Costly Software Bugs in 2015
Folgenschwerer weltweiter IT Crash 2024, mehr als 8 Mio Computer betroffen:
Das Problem komplett zu beheben dauerte Wochen
Microsoft macht EU-Gesetzgeber dafür verantwortlich
Folgen des Desasters
WannaCry (2017) — Die bisher größte Ransomware-Attacke
89 Tote eines Software Fehlers wegen
Softwarefehler
Erfahrungen zu Software-Fehler-Dichte
Brauchbare Code Reviews und was sie (per 100 LOC) kosten
Zur Gefahr gezielter Cyber-Attacken (s. Graphiken auf Seite 44)
Statement der NATO, 2021
The Growing Problem of Patching Software
Zur Gefahr von SQL Injection