Für mehr Sicherheit: Microsoft erwägt Einsatz der Programmiersprache Rust

Für mehr Sicherheit: Microsoft erwägt Einsatz der Programmiersprache Rust

Geht es um die Frage, wie viele Programmiersprachen ein Technologiekonzern aus den USA gleichzeitig vorantreibt, gehört Microsoft zweifelsohne zu den fleißigsten Vertretern. Während sich Google (mit Dart und Go) und Apple (mit Swift und Objective-C) im Schnitt auf etwa zwei Sprachen beschränken, werden in Redmond neben den vier .NET-Sprachen C#, F#, Q# und VB.net auch noch der JavaScript-Aufsatz TypeScript und der jüngste Sprößling Bosque sehr aktiv weiterentwickelt. Hinzu kommen weitere, eher externe Sprachen wie Python oder C++, die Microsoft im Rahmen von Visual Studio unterstützt und selbst auch aktiv nutzt.

Allerdings altern Programmiersprachen auch und so denkt man bei Microsoft nun offen darüber nach, vor allem C++ und das klassische C als Programmiersprachen (zunehmend) abzulösen und Teile verschiedener Microsoft-Produkte, einschließlich Windows, in einer sichereren Sprache neu zu implementieren. Wie Gavin Thomas nun im Blog des Microsoft Security Response Center verkündete, wird Microsoft deshalb den Einsatz der Programmiersprache Rust intensiv prüfen, die im Wesentlichen von Mozilla entwickelt wird und in weiten Teilen von Firefox sowie in der experimentellen Engine Servo zum Einsatz kommt. Aber auch andere Unternehmen wie Oracle haben Teile ihrer Infrastruktur in Rust neu geschrieben.

Rust selbst unterscheidet sich in einigen Punkten stark von etablierten Vertretern wie C++ oder Python und wurde von Mozilla Research mit einigen neuen Ansätzen ausgestattet, die vor allem die Ausnutzung von Speicherfehlern oder Pufferüberläufen entweder unmöglich machen oder zumindest stark erschweren sollen. Hierfür verzichtet Rust zum Beispiel auf eine Garbage Collection und setzt stattdessen auf ein besonderes Typsystem, wogegen andere Sprachen wie C# hier eher mit eingeschränkten Rechten arbeiten. Sprachen wie C++ lassen dem Entwickler dagegen viel mehr Freiheiten, entsprechend ist hier aber auch die Gefahr größer, entsprechende Sicherheitslücken in den Code einzupflegen.

Mozilla selbst bezeichnet Rust aufgrund seines Designs auch als „standardmäßig sicher“. Wer sich selbst einmal genauer mit Rust befassen möchte, kann sich auf der offiziellen Seite die entsprechenden Binaries herunterladen. Persönlich würde ich empfehlen, für Windows (64-bit only!) den .msi-Installer mit MSVC zu verwenden, sofern ihr Visual Studio sowieso nutzt. Der Installer bringt alle notwendigen Abhängigkeiten wie den Paketmanager Cargo bereits mit, Rust selbst kann mit dem Befehl „rustup update“ dann jederzeit über die Kommandozeile auf die neueste Version aktualisiert werden. Für Visual Studio Code existiert eine offizielle Erweiterung, die auf dem entsprechenden Language Server Protocol aufbaut.

Über den Autor
Kevin Kozuszek
  • Kevin Kozuszek auf Twitter
Seit 1999 bin ich Microsoft eng verbunden, daneben schlägt mein Herz aber auch für die OpenSource-Welt, wo mein besonderes Interesse der Mozilla Foundation gilt. Wenn ich mich mal nicht mit Technik beschäftige, tauche ich gerne in die japanische Kultur mit all ihren Facetten ab oder widme mich einem meiner zahlreichen anderen Hobbies.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.



Kommentare
  1. Den Einsatz von Rust intensiv zu prüfen, heißt aber noch nicht, dass das auch sicher künftig umgesetzt und übernommen wird, oder? Oder gibt es schon einen (inoffiziellen) konkreten Zeitplan, ab wann Rust C und C++ ersetzen wird?
    Von Rust hört man immer häufiger, es scheint ja langsam wirklich immer mehr in der Praxis anzukommen. Ich hatte es anfangs für eine weitere dieser esoterischen Randgruppen-Sprachen gehalten aber da lag ich wohl falsch...
    Microsoft hat grundsätzlich erstmal vor, von Programmiersprachen wie C++, die aufgrund ihres Designs viel unsicheren Code ausspucken können, zu Sprachen wie Rust, die schon vom Aufbau her deutlich mehr Sicherheit bieten, zu wechseln. Wo Microsoft genau auf Rust wechseln würde, ist die große Frage. Rust kommt als Programmiersprache vor allem in den kritischen Bereichen zum Einsatz, die der Nutzer nicht sieht. Das ist auch bei Firefox nicht anders. Mozilla hat hier den kompletten Kern von Firefox Quantum (die CSS-Engine Stylo, WebRender, große Teile von Gecko etc.) in Rust neu geschrieben, weil der ja von Servo übernommen wurde. Die Oberfläche und alles weitere wurden aber mit klassischen Webtechnologien (HTML, CSS und - über React und Redux - JavaScript) neu gebaut.
    Microsoft ist da schon auf einem ähnlichen Weg, wobei ich mich schon frage, wo genau sie klassisches C als Sprache verwenden (bei C++ weiss ich das, diverse Universal Apps wie der Rechner sind darin geschrieben). An der Oberfläche ist Microsoft jedenfalls schon lange auf dem Weg, neben XAML und C# auch Webtechnologien wie React Native (siehe Skype oder bald auch Office) zu fördern, und bei Dingen wie den Universal Apps können sie C++ nicht einfach durch Rust ersetzen. Erstens ist Rust dafür (noch) nicht ausgelegt und zweitens sieht Rust-Code gegenüber C++ auch grundlegend anders aus, sie müssten also eine grundlegend neue App schreiben und Rust auch entsprechend zusammen mit Mozilla anpassen. Das werden sie nicht machen, dafür ist das Interesse an UWP und vor allem Universal Apps einfach nicht mehr groß genug. Und auch bei Apps, die im Hintergrund sehr stark auf Chromium zurückgreifen, wird Rust nicht kommen, weil Chromium damit so in der Form nicht kompatibel ist (wobei ich das auch nicht ausschließen würde, Microsoft und Facebook arbeiten für React Native mit Hermes auch an einer eigenen JavaScript-Engine, sodass zumindest hier v8 ersetzt werden kann).
    Wenn ich raten müsste, sehen wir Rust vor allem in der eigenen Infrastruktur (Cloud, Accountsicherung etc.) und in Windows und Co. bei den besonders sicherheitskritischen Bereichen wie zum Beispiel der Windows Defender Engine oder kernelnahen Sachen. Da würde Rust Sinn machen und das würde sich auch nicht mit anderen Sachen beißen. Aber wie gesagt, ich denke hier nur laut.
    @ Kevin Kozuszek: Danke für die Infos. Die Befürchtung, es stehe demnächst ein großer Bruch in Sachen Programmiersprachen bevor, der die Windows Universal Apps "erledigen" und nutzlos machen könnte, ist also unbegründet. Das Problem sind die zunehmend höheren Windows Versionen als Limitationen, weshalb manche auf meinen geschätzten Mobile Phones nicht mehr lauffähig bzw. nicht mehr neu aus dem Store installierbar sein werden.
    KeinUntertan
    Die Befürchtung, es stehe demnächst ein großer Bruch in Sachen Programmiersprachen bevor, der die Windows Universal Apps "erledigen" und nutzlos machen könnte, ist also unbegründet.

    Das habe ich nicht gesagt. Mal abgesehen davon, dass Windows 10 Mobile sowieso nahezu keinen mehr interessiert und die Entwicklung dafür im Gleichschritt mit Windows 7 um den Jahreswechsel herum ausläuft, brauche ich dafür weder höhere Versionen von Windows 10 noch sonstige großartige Anstrengungen. Erst kompiliere ich die App einfach nicht mehr für deine Plattform, womit weitere Updates, sofern sie noch möglich wären, wegfallen. Anschließend drehe ich dir bei den Webdiensten serverseitig den Saft ab und wenn du dann mit dem ohnehin obsoleten UWP-Edge eine mögliche Webseite ansurfen solltest, blocke ich einfach den Support weg mit der Begründung, dass EdgeHTML als Engine ohnehin veraltet ist und nicht mehr weiterentwickelt wird, ich aber neuere Webstandards voraussetze. Spätestens dann kannst du einpacken.
    Der Punkt ist ein anderer: Rust gehört im Wesentlichen zu den Programmiersprachen, die sich gut im Zusammenspiel mit anderen Sprachen einsetzen lassen. Python und C++ blasen ins gleiche Horn, sie können alleine eingesetzt werden, aber auch im Zusammenspiel mit z.B. Java oder .NET. Was den oberflächlichen Teil betrifft, geht Microsoft sowieso in zwei andere Richtungen. Einerseits investieren sie mehr denn je in React Native und damit die Möglichkeit, über TypeScript auch Webtechnologien für seine Apps nutzbar zu machen, und zum anderen haben sie immer noch .NET mit XAML und C#, was sicherheitstechnisch schon ganz gute Ansätze hat. Rust könnte da eher zum Einsatz kommen, wo innerhalb dieser Apps besonders sicherheitskritische Umgebung sind, die ganz besonders gegen Speicherlecks und Co. geschützt werden sollen.
    Dass die Reise bei den Universal Apps weg geht und hin zu PWAs, ist ja bekannt. Office und Skype hats schon erwischt, demnächst ist OneDrive dran und die Insider von 20H1 haben seit Kurzem eine von Grund auf erneuerte Fotos-App im Test. Vielleicht hast du Glück, dass Microsoft neben dem Rechner weitere Apps wie Paint 3D oder Groove Music im Quellcode offenlegt. Ansonsten sollte man außer gelegentlichen Fehlerkorrekturen nicht mehr viel erwarten.
    Zitat von Kevin Kozuszek: "Spätestens dann kannst du einpacken."
    Oder das 950 XL auf Windows 10 ARM 64 umstellen ... ;-)
Nach oben