Mark Russinovich, Chief Technology Officer von Microsoft Azure, rät Entwicklern, bei neuen Projekten auf die Programmiersprachen C oder C++ zu verzichten und stattdessen Rust zu verwenden – wegen der Sicherheit und Zuverlässigkeit.
Rust, das 2020 die Version 1.0 erreicht und bei Mozilla entstanden ist, wird heute im Android Open Source Project (AOSP), bei Meta, bei Amazon Web Services, bei Microsoft für Teile von Windows und Azure, im Linux-Kernel und an vielen anderen Stellen eingesetzt.
Software-Ingenieure schätzen die Speichersicherheitsgarantien, die die Notwendigkeit der manuellen Verwaltung des Programmspeichers reduzieren und damit das Risiko von speicherbezogenen Sicherheitslücken verringern, die große Projekte belasten, die in speicherunsicherem C oder C++ geschrieben wurden. Dazu gehören Chrome, Android, der Linux-Kernel und Windows.
Microsoft hat diesen Punkt 2019 deutlich gemacht, nachdem es bekannt gab, dass 70 % seiner Patches in den letzten 12 Jahren zur Behebung von Speichersicherheitsfehlern dienten, was größtenteils darauf zurückzuführen ist, dass Windows hauptsächlich in C und C++ geschrieben wurde. Das Chrome-Team von Google legte 2020 seine eigenen Erkenntnisse vor und enthüllte, dass 70 % aller schwerwiegenden Sicherheitsfehler in der Chrome-Codebasis Speicherverwaltungs- und Sicherheitsfehler waren. Es ist hauptsächlich in C++ geschrieben.
Der Azure-CTO schränkte die Verwendung von Rust nur dahingehend ein, dass es für neue Projekte, die eine Sprache ohne Speicherverwaltung (GC) benötigen, C und C+ vorzuziehen sei. GC-Engines übernehmen die Speicherverwaltung. Googles Go ist eine Garbage-Collecting-Sprache, während das Rust-Projekt damit wirbt, dass Rust dies nicht ist. Die AWS-Ingenieure bevorzugen Rust gegenüber Go wegen der Effizienz, die es ohne GC bietet.
„Apropos Sprachen: Es ist an der Zeit, keine neuen Projekte mehr in C/C++ zu starten und Rust für die Szenarien zu verwenden, in denen eine Nicht-GC-Sprache erforderlich ist. Um der Sicherheit und Zuverlässigkeit willen sollte die Branche diese Sprachen für veraltet erklären“, schrieb Russinovich.
Rust ist ein vielversprechender Ersatz für C und C++, insbesondere für die Programmierung auf Systemebene, Infrastrukturprojekte, die Entwicklung eingebetteter Software und vieles mehr – aber nicht überall und nicht in allen Projekten.
Russinovich weiter: „Es gibt eine enorme Menge an C/C++, die über Jahrzehnte (oder länger) gepflegt und weiterentwickelt wird. Gestern Abend habe ich eine Funktion für Handle programmiert, die zu den etwa 85.000 Zeilen C/C++-Code von Sysinternals hinzukommt, die ich geschrieben habe. Davon abgesehen werde ich bei neuen Tools eher zu Rust tendieren.“
Rust wird demnächst eine zweite Sprache neben C für den Linux-Kernel. AOSP, eine Linux-Distribution, hat im April 2021 begonnen, Rust für neuen Code zu verwenden, hat aber seine C/C++-Codebasis beibehalten. In diesem Monat unterstützte AOSP auch die Forderung nach Rust als Option für neuen Code im Linux-Kernel.
Meta hat kürzlich Rust als primär unterstützte serverseitige Sprache neben C++ gefördert. AWS investiert in Rust für Infrastruktursoftware. Azure-Ingenieure haben damit Cloud-Tools zum Testen von WebAssembly-Modulen in Kubernetes entwickelt. Auf der anderen Seite ist das Chrome-Team trotz des Interesses an Rust auf absehbare Zeit an C++ gebunden; ein einfacher Wechsel zu Rust würde einen Großteil der Sicherheitslücken auf Jahre hinaus nicht beseitigen. Stattdessen bringt Chrome Speichersicherheit in seine C++-Codebasis.
Außerdem sollte Rust nicht als Allheilmittel für all die schlechten Angewohnheiten betrachtet werden, die Entwickler bei der Programmierung in C oder C++ an den Tag legen. Bob Rudis, ein Cybersecurity-Forscher bei GreyNoise Intelligence, der früher bei Rapid7 tätig war, merkte an, dass Entwickler die gleichen schlechten Sicherheitsgewohnheiten auch auf Rust übertragen können.
„Angesichts des Aufwands (Zeit/Geld/Menschen/Dienstleistungen), der nötig ist, um „echte“ C/C++-Projekte bei jeder Geschwindigkeit sicher zu machen, neige ich dazu, [Russinovich] zuzustimmen. Abgesehen davon ist es möglich, die gleichen schlechten Praktiken auf Rust zu übertragen“, schrieb er.
Steven J. Vaughan-Nichols von ZDNet stimmte dieser Meinung im Großen und Ganzen zu: „Wie andere gesagt haben, kann man in C oder C++ „sicher“ schreiben, aber es ist viel schwieriger, egal welchen Dialekt man verwendet, als in Rust. Wohlgemerkt, man kann die Sicherheit in Rust immer noch vermasseln, aber es vermeidet eine Menge alter Speicherprobleme.“
Die zunehmende KI-Verbreitung erschwere die Erkennung von Fälschungen. Gleichzeitig begünstige der Abo-Trend das Aufkommen neuer…
Gemeinsam arbeiten die Konzerne an Ionenfallen, die in Hochleistungs-Quantencomputern zum Einsatz kommen sollen.
Neu entwickeltes Open-Source-System soll Signatur-Umgehungen durch adaptive Missbrauchserkennung transparent machen.
Von mindestens einer Schwachstelle geht ein hohes Sicherheitsrisiko aus. Betroffen sind Chrome für Windows, macOS…
Digitale Währungen haben in nur kurzer Zeit die komplette Finanzlandschaft auf den Kopf gestellt. Mit…
Mindestens eine Anfälligkeit erlaubt eine Remotecodeausführung. Angreifbar sind alle unterstützten Versionen von Android.