Laut der DeepSec GmbH gibt es “über 900 klar klassifizierte Defekte in Softwareapplikationen”. Ein Teil davon geht auf Speicherfehler zurück, bei denen Code falsch auf Speicherbereiche zugreift und Folgefehler zu Abstürzen oder weiteren Effekten führen können. Die US-amerikanische National Security Agency (NSA) hat bereits 2022 vor dem Einsatz der Programmiersprachen C und C++ gewarnt, um solche Speicherfehler zu vermeiden. Die Empfehlung der US-Behörde ist die Verwendung von anderen Programmiersprachen, um diese Fehler verhindern. Diese Empfehlung geht laut DeepSec insofern an der Realität vorbei, da diese Probleme in modernem korrekten C++-Code aufgrund der Sprachspezifikation gar nicht mehr vorkommen können. Darüber hinaus ignoriere der Vorschlag der NSA bereits existierenden Code, der gut getestet und produktionsreif ist, ebenso wie viel gefährlichere Defekte, die in allen Programmiersprachen weiterhin möglich seien.
Dem ist grundsätzlich zuzustimmen – auch ganz unabhängig von C/C++. Es hat schon seinen Grund, warum das Gros der Programme, mit denen die Banken und Versicherungen weltweit operieren, immer noch auf Mainframe-Rechnern ablaufende Cobol– oder PL/1-Anwendungen sind – durchgetestet, jahrzehntelang bewährt und an den “Millennium Bug” angepasst.
DeepSec weiter in der Causa C++: “Die Programmiersprache wurde schon 1978 publiziert und hat sich seither stetig weiter entwickelt. Seit 2011 wird alle drei Jahre eine Spezifikation der Sprache festgelegt. Der Standard C++11 von 2011 markiert gleichzeitig den Beginn von modernem C++, weil Lücken in der Sprachdefinition beseitigt wurden. Verwendet man alle Elemente der Standards C++14 und später, so hat korrekter C++ Code weder Speicherfehler noch unbestimmtes Verhalten.
Code mit Sicherheitsschwachstellen hält sich in der Regel nicht an Vorgaben. Die Gründe können das Alter oder fehlende Kenntnisse der Programmiersprache im Bezug zu Sicherheit sein. Speziell alter Code muss meist an die modernen Sprachstandards angepasst werden. Geschieht dies nicht, so werden Defekte versteckt mitgeschleppt. Diese Problem findet sich aber in allen Applikationen einer bestimmten Größe und entsteht im Laufe der Zeit. Softwareentwicklung muss diese Schwächen immer berücksichtigen. Unsicherer Code lässt sich in jeder Programmiersprache implementieren. Das Open Web Application Security Project (OWASP) stellt unregelmäßig eine Liste der häufigsten Fehler in Webapplikationen zusammen. In dieser Liste finden sich die von der NSA beschworenen Speicherfehler nicht. Stattdessen sind fehlende Zugriffsbeschränkungen und Injektionsattacken die größten Gefahren. Die darunterliegenden Fehlerklassifikationen sind oft mit fehlenden oder fehlerhaften Überprüfungen von Daten verbunden, die ein Client an den Webserver sendet. Im Gegensatz zu fehlerhaften Speicherzugriffen sind diese Defekte im Einklang mit den Spezifikationen der verwendeten Programmiersprachen. Der Wechsel auf andere Programmiersprachen bringt daher nicht die erhofften Vorteile im Bereich der Sicherheit.”
Vertieft werden kann das Thema auf der vom 20. bis 21. November im Wiener Renaissance-Hotel stattfindenden DeepSec-Konferenz (Trainings/Workshops vom 19. bis 20.11.) Für registrierte Teilnehmer und Teilnehmerinnen wird es einen Stream der Vorträge geben.
Zur Pressemitteilung