Microsoft intensywnie pracuje nad przepisaniem podstawowego kodu systemu Windows w bezpiecznym języku Rust

Microsoft przepisuje podstawowe biblioteki systemu Windows w języku programowania Rust, zapewniając bardziej bezpieczny dla pamięci kod, który jest już dostępny dla programistów.

David „dwizzle” Weston, dyrektor ds. bezpieczeństwa systemu operacyjnego Windows, ogłosił pojawienie się Rusta w jądrze systemu operacyjnego podczas BlueHat IL 2023 w Tel Awiwie w Izraelu w zeszłym miesiącu.

„Prawdopodobnie w ciągu najbliższych kilku tygodni lub miesięcy system Windows będzie uruchamiał się z Rust w jądrze, co jest naprawdę fajne” – powiedział. „Podstawowym celem było przekonwertowanie niektórych wewnętrznych typów w C++ na ich odpowiedniki w Rust”.

Microsoft wykazał zainteresowanie Rustem kilka lat temu jako sposobem na wyłapanie i wyeliminowanie błędów bezpieczeństwa pamięci, zanim kod trafi w ręce użytkowników; tego rodzaju błędy były sercem około 70 procent luk w zabezpieczeniach z listy CVE załatanych przez producenta systemu Windows w jego własnych produktach od 2006 roku.

Łańcuch narzędzi Rust stara się zapobiegać tworzeniu i dostarczaniu kodu, który można wykorzystać, co w idealnym świecie zmniejsza możliwości atakowania słabych punktów oprogramowania przez przestępców. Mówiąc prościej, Rust koncentruje się na bezpieczeństwie pamięci i podobnych zabezpieczeniach, co zmniejsza liczbę poważnych błędów w wynikowym kodzie.

Wśród rosnącego wsparcia branży dla programowania bezpiecznego dla pamięci, Microsoft stał się bardziej entuzjastyczny w eksploracji Rust. We wrześniu ubiegłego roku stało się to nieformalnym mandatem: CTO Microsoft Azure Mark Russinovich oświadczył, że nowe projekty oprogramowania powinny wykorzystywać Rust zamiast C/C++.

Renowacja systemu Windows w języku Rust rozpoczęła się w 2020 roku od DWriteCore, implementacji Windows App SDK silnika DWrite systemu Windows do analizy tekstu, układu i renderowania. DWriteCore składa się obecnie z około 152 000 wierszy kodu Rust i około 96 000 wierszy kodu C++.

Poza domniemaną poprawą bezpieczeństwa, wydajność ma być od 5 do 15 procent szybsza w przypadku kształtowania (zastępowania) glifów za pomocą OTLS (OpenType Library Services).

Interfejs graficzny Microsoft Windows (Win32 GDI) jest przenoszony do Rust i jak dotąd ma 36 000 linii kodu Rust. Najnowsza wersja Windows 11 uruchamia się z wersją Rust, która przechodzi wszystkie testy GDI, ale port Rust jest obecnie wyłączony.

„W jądrze systemu Windows istnieje obecnie wywołanie SysCall, które jest zaimplementowane w Rust” – powiedział Weston.

Uwielbienie Microsoftu dla Rusta ma swoje granice. „Przepisanie systemu Windows w Rust prawdopodobnie nie nastąpi w najbliższym czasie” – powiedział Weston – „więc chociaż kochamy Rust, potrzebujemy strategii, która obejmuje również zabezpieczenie większej ilości naszego natywnego kodu”.

Ale nawet wykwalifikowane wsparcie ze strony Microsoftu sprawia, że Rust jest bardziej wydajny dzięki wsparciu kodu, co jest korzystne dla całej społeczności open source.