Codegenerierung Ein sicheres C-Subset für automatisierte Rust-Konvertierung

Von Sebastian Gerstl 2 min Lesedauer

Anbieter zum Thema

Forschende des Computer Science Centers INRIA in Paris haben ein Subset der Programmiersprache C entwickelt, das sich mit geringem Aufwand direkt in Rust kompilieren lässt. Die C-Teilmenge soll bei der automatischen Übersetzung von in C geschriebenen Bibliotheken in Rust helfen, um einen sichereren Code zu erhalten, der weniger anfällig für Hackerangriffe durch Speicherprobleme ist.

Die Popularität der Sprache Rust nimmt weiter zu, doch viele kritische Codebasen sind nach wie vor in C verfasst. Forschende des INRIA Computer Science Centers in Paris haben nun ihre Erkenntnisse zu einem Ansatz veröffentlicht, wie sich ganze C-Bibliotheken nmit wenig Aufwand nach Rust konvertieren lassen.(Bild:  KI-Generiert / Dall-E)
Die Popularität der Sprache Rust nimmt weiter zu, doch viele kritische Codebasen sind nach wie vor in C verfasst. Forschende des INRIA Computer Science Centers in Paris haben nun ihre Erkenntnisse zu einem Ansatz veröffentlicht, wie sich ganze C-Bibliotheken nmit wenig Aufwand nach Rust konvertieren lassen.
(Bild: KI-Generiert / Dall-E)

„Viele kritische Codebasen sind nach wie vor in C verfasst und können realistischerweise nicht von Hand umgeschrieben werden. Die automatische Übersetzung von C nach Rust ist daher ein attraktiver Ansatz“, so Aymeric Fromherz, Forscher am INRIA in Paris. Das Paradigma von Rust verfolgt die Generierung von speichersicherem Code, was unter C nicht immer garantiert ist. Doch C ist seit Jahrzehnten fest in der Programmierwelt etabliert und verfügt über zahlreiche Programmbibliotheken, die erst komplett neu für Rust aufgestellt werden müssten. Eine leichte Methode der Konvertierung solcher Bibliotheken nach Rust, die durch das befolgen des Rust-Paradigmas zeitgleich trivialwerweise speichersicher ist, wäre daher sehr attraktiv, da dies aufwändige Neuentwicklungen spart.

Dem INRIA-Team ist es mit dem von den Forschenden verfolgten Ansatz gelungen, die C-Version der kryptografischen Bibliothek HACL* zum ersten Mal nach Rust zu portieren. Das Ergebnis ist eine 80.000 Zeilen umfassende verifizierte kryptografische Bibliothek, die in reinem Rust geschrieben ist und alle modernen Algorithmen implementiert.

„Unsere Arbeit enthält mehrere originelle Beiträge: eine typgeleitete Übersetzung von (einer Teilmenge von) C in sicheres Rust; eine neuartige statische Analyse auf der Basis von „Split Trees“, die es ermöglicht, die Zeigerarithmetik von C mit den Slices und Splitting-Operationen von Rust auszudrücken; eine Analyse, die genau ableitet, welche Borgens veränderbar sein müssen; und eine Kompilierungsstrategie für die struct-Typen von C, die mit der Unterscheidung zwischen nicht-eigenen und eigenen Zuweisungen in Rust kompatibel ist“, sagte er.

Zusammen mit der kryptographischen Bibliothek HACL* wurde dieser Ansatz mit binären Parsern und Serialisierern von EverParse verwendet und zeigt, dass die Teilmenge von C ausreicht, um beide Anwendungen in sicheres Rust zu übersetzen. Für die wenigen Stellen, die die Aliasing-Disziplin von Rust verletzen, sind automatisierte, chirurgische Umschreibungen ausreichend, sagt er.

Das INRIA-Team hat seine Erkentnisse in einer Preprint-Studie auf der offen einsehbaren Plattform arxiv.org der Cornell University unter dem Titel "Compiling C to Safe Rust, Formalized" veröffentlicht. Das Paper steht als PDF unter der verlinkten Seite vie Creative Commons Lizenz (CC BY-NC-SA 4.0) bereit. (sg)

(ID:50276017)

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung