G 4.22 Software-Schwachstellen oder -Fehler
Wie für jede Software gilt auch für Standardsoftware: je komplexer sie ist, desto häufiger treten Programmierfehler auf. Es ist zu beobachten, dass hohe Erwartungen der Anwender und zeitlich zu knapp bemessene Erscheinungstermine bei Standardsoftwareprodukten auch dazu führen, dass die Hersteller ihre Produkte teilweise unausgereift oder nicht fehlerfrei anbieten. Werden diese Softwarefehler nicht erkannt, können die bei der Anwendung entstehenden Fehler zu weitreichenden Folgen führen.
Beispiele:
- Ein Software-Fehler in der Sicherheits-Software RACF des z/OS-Betriebssystems kann bedeuten, dass nicht nur RACF den Dienst einstellt, sondern dadurch das ganze System nicht mehr funktionsfähig ist und neu gestartet werden muss.
- Die Stärke der in Standardsoftware implementierten Sicherheitsfunktionalitäten (wie Passwörter oder Verschlüsselungsalgorithmen) wird vom Anwender häufig zu hoch eingeschätzt. Häufig können diese Sicherheitsfunktionalitäten einem sachkundigen Angriff nicht dauerhaft standhalten. Dies gilt z. B. für die Verschlüsselungsfunktionen, die in vielen Textverarbeitungsprogrammen integriert sind. Für fast alle davon gibt es im Internet zahlreiche Tools, um diese Verschlüsselung zu überwinden.
- Nachweislich führte das Auftreten eines bestimmten Wortes in der Rechtschreibprüfung eines Textverarbeitungsprogrammes immer zu dessen Absturz.
- Vielfach enthält Standardsoftware nicht dokumentierte Funktionen, wie sog. "Ostereier" oder "Gagscreens", mit denen sich die Entwickler des Produktes verewigt haben. Zum einen werden hierdurch zusätzliche IT-Ressourcen verbraucht, zum anderen wird dadurch auch deutlich, dass im Softwaretest die gesamte Funktionalität des Produktes nicht bis ins letzte geklärt werden kann.
- Die meisten Warnmeldungen der Computer Emergency Response Teams in den letzten Jahren bezogen sich auf sicherheitsrelevante Programmierfehler. Dies sind Fehler, die bei der Erstellung von Software entstehen und dazu führen, dass diese Software von Angreifern missbraucht werden kann. Der größte Teil dieser Fehler wurde durch Speicherüberläufe (Buffer Overflow) hervorgerufen. Hierbei handelt es um Fehler, bei denen eine Routine zum Einlesen von Zeichen nicht prüft, ob die Länge der eingegebenen Zeichenkette mit der Länge des dafür vorgesehenen Speicherbereiches übereinstimmt. Dadurch ist es Angreifern möglich, eine überlange Zeichenfolge zu übertragen, so dass hinter dem für die Eingabe reservierten Speicherbereich zusätzliche Befehle gespeichert werden können, die zur Ausführung gebracht werden. Diese Befehle können z. B. beliebige Programme sein.
- Eine weitere große Anzahl von Warnmeldungen wurde durch Verfügbarkeitsangriffe (Denial of Service, DoS) verursacht, bei denen durch Fehler in einzelnen Routinen, die für die Netzdatenverarbeitung eingesetzt werden, der gesamte Rechner zum Absturz gebracht werden kann (siehe
- z. B. CERT Advisory 97.28 zu IP Denial-of-Service Attacks: Teardrop and Land-Attack).