Am vergangenen Freitag waren Banken, Flughäfen, Fernsehsender, Gesundheitseinrichtungen, Hotels und zahlreiche weitere Unternehmen von großflächigen IT-Ausfällen betroffen. Flüge blieben am Boden, und weltweit kam es zu erheblichen Störungen, weil Windows-Rechner Fehler meldeten. Wir hatten bereits einen Beitrag veröffentlicht, in dem wir erklärten, dass C++ dafür schon bald verantwortlich gemacht werden würde – und genau das geschieht nun, wie wir hier.
Einer der Hauptgründe, warum wir immer wieder mit schwerwiegenden Problemen im Zusammenhang mit C++ konfrontiert werden, liegt gerade in der Leistungsfähigkeit der Sprache: C++ wird in großem Umfang in kritischen Systemen eingesetzt. In solchen Systemen kann bereits ein einziger Fehler katastrophale Folgen haben.
Nehmen wir an, alle kritischen Systeme wären in Java oder C# entwickelt. Wären diese Systeme dann zwangsläufig sicher? Die Antwort lautet – wie Herb Sutter in diesem ausführlichen Beitrag, is no.
Es gibt jedoch auch Missverständnisse. Dazu gehört die zu starke Fokussierung auf die Sicherheit von Programmiersprachen als vermeintlich wichtigstes Sicherheitsproblem unserer Branche – das ist sie nicht. Viele der folgenschwersten Sicherheitsvorfälle der letzten Zeit betrafen Code in speichersicheren Sprachen (MSLs), beispielsweise Log4j) or had nothing to do with programming languages (e.g., Kubernetes-Secrets, die in öffentlichen GitHub-Repositories gespeichert waren).
Wie Herb Sutter hervorhob, hatte die Mehrheit der zehn gefährlichsten Softwareschwachstellen des Jahres 2023 nichts mit Speichersicherheit zu tun.
Die meisten der zehn „gefährlichsten Softwareschwachstellen“ des Jahres 2023 standen nicht mit Speichersicherheit in Zusammenhang. Viele der größten Datenlecks, Cyberangriffe und sonstigen Fälle von Cyberkriminalität des Jahres 2023 hatten überhaupt nichts mit Programmiersprachen zu tun.
C++ für die Verbreitung von Softwarefehlern verantwortlich zu machen, ist eine vereinfachte Sichtweise, die den größeren Kontext der Softwareentwicklung außer Acht lässt. C++ bietet zwar ein hohes Maß an Kontrolle und Performance, muss jedoch sorgfältig und fachkundig eingesetzt werden, um typische Fallstricke zu vermeiden. Dasselbe gilt für jede Programmiersprache: Jede bringt ihre eigenen Herausforderungen und potenziellen Probleme mit sich.
Letztlich liegt die Verantwortung für die Softwarequalität bei Entwicklern, Testern und dem Entwicklungsprozess selbst. Eine fundierte Ausbildung, konsequente Tests und die Einhaltung bewährter Praktiken können viele Risiken reduzieren, die mit jeder Programmiersprache verbunden sind – auch mit C++. Statt ein Werkzeug zu verteufeln, sollten wir uns darauf konzentrieren, es besser einzusetzen, um zuverlässige, sichere und effiziente Software zu entwickeln.
