Open-Source-Browser: Google öffnet Chromium für Rust


Die Programmiersprache Rust wird künftig in Chromium Einzug halten. Der Browser ist die Open-Source-Grundlage für einige Browser wie Google Chrome, Microsoft Edge, Vivaldi, Brave und Opera. Allerdings geht es bei der Integration von Rust zunächst nicht um die Weiterentwicklung des direkten Stacks von Chromium, die weiterhin in C++ erfolgen wird, sondern zumindest im ersten Schritt lediglich um das Einbinden von Third-Party-Libraries.

Rust entstand ursprünglich bei Mozilla, und die Programmiersprache ist seit 2016 Bestandteil von Firefox. Google bekennt sich in verschiedenen Bereichen zur Programmiersprache unter anderem für das mobile Betriebssystem Android und das im Oktober 2022 angekündigte Embedded-Betriebssystem KataOS. In Linux hat Rust nach langer Diskussion in Version 6.1 Einzug gehalten.

Grund für die Öffnung von Chromium für Rust ist laut einem Beitrag im Google-Security-Blog vor allem die Sicherheit ohne Performanceverlust. Rust bietet im Gegensatz zu C++ ein Memory-Safety-Konzept, das viele Speicherfehler verhindert, ohne dabei den Overhead einer Speicherverwaltung aufzusetzen. Nach wie vor sind Speicherfehler für einen Großteil der kritischen Schwachstellen in Software verantwortlich.

Laut dem Blogbeitrag ist die Anbindung auch ein einfacher und sicherer Weg, sich an die „Rule of 2“ zu halten, die bei Chromium nichts mit Star Wars zu tun hat. Sie beschreibt, dass Code für den Browser niemals mehr als zwei von drei kritischen Risiken – Verarbeitung nicht vertrauenswürdiger Eingaben, Code außerhalb einer Sandbox und Verwenden einer unsicheren Sprache – aufweisen darf. Für Rust-Komponenten, die nicht den Ausweg über unsafe gehen, entfällt der letzte Punkt.



Da mit Rust der Code in unsicheren Sprachen wie C++ entfällt, lässt sich die Rule of 2 für Chromium einfacher erfüllen.

(Bild: Google)

Anfang 2022 hatte das Chromium-Team bereits mit Rust experimentiert und kam nach ein paar Monaten zu dem Schluss, dass die Sprache in komplexen Aufgaben mit asynchronem Code, der mit vorhandenem Code zusammenarbeiten muss, zunächst nicht als C++-Ersatz geeignet ist.

Daher ist der geplante Einsatz von Rust in Chromium zum Start deutlich limitiert. Zum einen wird es Interop nur in eine Richtung geben: von C++ nach Rust. Zum anderen ist zunächst nur der Einsatz von Third-Party-Libraries erlaubt. Diese arbeiten als eigenständige Komponenten und sind unabhängig von den Chromium-Interna. Die Libraries sollten eine einfache API für ihre spezifische Aufgabe aufweisen. Das Chromium-Team wird die Bibliotheken daraufhin untersuchen.

Spezielle Tools sollen das saubere Zusammenspiel von C++ und Rust sicherstellen. Google arbeitet derzeit an Crubit, einem Open-Source-Tool für die bidirektionale Interop zwischen Rust und C++. Das zugehörige GitHub-Repository bezeichnet das Projekt jedoch derzeit als Experiment und rät explizit vom Einsatz ab.

Ein Issue für eine Toolchain zum Integrieren von Rust existiert seit Anfang 2022. Google will sie nun aktiv vorantreiben. Die Chromium-Dokumentation nennt die Regeln für den Auswahlprozess von Third-Party-Libraries in Rust. Dazu gehört, dass die Rust-Implementierung die beste beziehungsweise einzige Implementierung ist oder sie das Risiko für Speicherfehler verringert.

Weitere Details lassen sich dem Security-Blog bei Google entnehmen.


(rme)

Zur Startseite



Heinz Duthel

Schreibe einen Kommentar