NIST nimmt Rust in die Liste der sichereren Programmiersprachen auf

Das National Institute for Standards and Technology (NIST) nimmt Rust wegen seines Ownership-Konzepts in die Liste der sichereren Programmiersprachen auf.

In Pocket speichern vorlesen Druckansicht 25 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Rainald Menge-Sonnentag

Das US-amerikanische National Institute for Standards and Technology (NIST) hat Rust in seine Safer-Language-Liste aufgenommen. Das für die Sicherheit von US-Behörden zuständige Institut hebt das Ownership-Konzept der Sprache hervor.

Die Liste der sichereren (nicht sicheren) Programmiersprachen ist eine Unterkategorie der SAMATE-Initiative (Software Assurance Metrics And Tool Evaluation) des NIST, die sich um die Qualitätssicherung von Software kümmert. Dazu entwickelt sie Methoden zum Evaluieren von Softwaretools und zum Messen der Effektivität der Tools und Techniken sowie zum Identifizieren von Lücken.

Die Liste der Safer Languages umfasst mit Rust insgesamt sieben Empfehlungen. Neben dem Neuzugang sticht dabei SPARK von AdaCore als eigenständige Sprache hervor. Die anderen Einträge sind Ergänzungen und Tools für C beziehungsweise C++, die unsichere Speicherzugriffe, Buffer Overflows und weitere Schwachstellen verhindern sollen: Escher C Verifier, Fail-Safe C, Safe-Secure C/C++ (SSCC) und CCured. Außerdem finden sich die Coding-Standards des CERT (Computer Emergency Response Team) in der Liste.

Der Eintrag für Rust hebt das Onwership-Modell der Sprache hervor. Es legt strikte Regeln fest, die typische Speicherfehler verhindern, die in Sprachen wie C oder C++ auftreten. Rust hat drei Ownership-Regeln: Jeder Wert hat einen Besitzer (Owner). Es kann immer nur einen Besitzer zu einem Zeitpunkt geben. Und wenn der Besitzer nicht mehr im Ausführungskontext ist, wird der Wert fallen gelassen.

Reserviert wird der benötigte Speicher beim Initialisieren der Variable. Weil es nur einen Besitzer geben darf, erfordert die Zuweisung einer Variable an eine andere ein anderes Vorgehen als bei anderen Programmiersprachen. Ein Weg ist, Werte zu klonen, womit sie doppelt vorhanden sind, doppelt so viel Speicher benötigen und eine Änderung nur für den jeweiligen Besitzer gilt.

Der Eintrag erwähnt auch, dass Rust unsichere Operationen erlaubt, die aber explizit als unsafe gekennzeichnet sein müssen. In einigen Bereichen der Low-Level-Programmierung auf Systemebene ist das unerlässlich, aber Unsafe Rust erlaubt nur begrenzte unsichere Aktionen und sollte die Ausnahme beim Entwickeln sein.

Weitere Details lassen sich dem Blog der Rust Foundation entnehmen.

(rme)