Greg Kroah-Hartman, odpowiedzialny za wsparcie stabilnej i „staging” gałęzi jądra Linuksa oraz pełniący funkcję głównego opiekuna w 16 podsystemach jądra, wygłosił referat na konferencji Rust Week 2026, w którym opisał, w jaki sposób język Rust może pomóc w zapobieganiu powstawaniu w jądrze luk bezpieczeństwa wynikających z typowych błędów programistów w języku C dotyczących zarządzania pamięcią, blokad, obsługi błędów i pracy z danymi nieufnymi. Główną zaletą Rusta jest możliwość wykrywania takich błędów na etapie kompilacji, a nie podczas przeglądania kodu przez ludzi. Rust nie jest jednak uważany za panaceum, które mogłoby wyeliminować wszystkie problemy, a nikt nie planuje przepisywać jądra na Rust: oczekiwane jest stopniowe wprowadzenie Rusta poprzez jego zastosowanie do nowych sterowników i podsystemów.
Jako przykład błędów w jądrze, które można by było uniknąć przy użyciu Rusta, wymieniono błąd w podsystemie Bluetooth, który pozostawał niezauważony przez 15 lat, oraz problem w hypervisorze Xen. W pierwszym przypadku programista wykonał dereferencję wskaźnika bez sprawdzenia, a w drugim zapomniał zdjąć blokadę w kodzie obsługi błędów.
Według Grega większość błędów w jądrze jest spowodowana takimi drobnymi kwestiami, które z czasem się kumulują i ujawniają jako luki bezpieczeństwa. W Rust wiele z takich problemów jest zapobieganych przez kompilator, na przykład, abstrahacje blokad w jądrze Rusta pozwalają na dostęp do wewnętrznych wskaźników struktur tylko po przejęciu odpowiedniej blokady, która jest usuwana automatycznie. Bez przejęcia blokady nie można uzyskać dostępu do wskaźników struktur w Rust.
Greg uważa, że takie możliwości Rusta zapobiegłyby powstawaniu 60% błędów wykrywanych w jądrze, a sprawdzania wykonywane przez kompilator uwolniłyby opiekunów od marnowania czasu na dyskusje z autorami o poprawności obsługi błędów i uzasadnieniu umieszczania blokad w odpowiednich miejscach. Co więcej, wdrożenie wsparcia dla Rusta już miało korzystny wpływ na kod C w jądrze, porządkując kod C i interfejsy, a także zapożyczając pewne techniki programowania (na przykład, zrealizowano blokady o ograniczonym zasięgu).
Dzięki systemowi typów, który zapewnia przestrzeganie ustalonych reguł, oraz zastosowaniu systemów ciągłej integracji, które sprawdzają kod na etapie budowy, podczas przeglądu zmian w Rust recenzenci mogą skupić się na weryfikacji logiki działania, a nie na monitorowaniu manipulacji z zasobami. Użycie Rust pozwala również na bardziej wnikliwe traktowanie danych pochodzących z urządzeń lub z systemów zewnętrznych. Osiąga się to dzięki wyraźnemu rozróżnieniu danych godnych i niegodnych zaufania na poziomie systemu typów: deweloper musi przeprowadzić analizę przy przejściu z stanu nieufnego na zaufany.
Ostatnio zespół odpowiedzialny za bezpieczeństwo w jądrze publikuje każdego dnia około 13 raportów o lukach w zabezpieczeniach, co w kontekście wcześniejszej dynamiki ujawniania luk postrzegane jest jako pewnego rodzaju szaleństwo (na przykład wczoraj opublikowano 277 raportów o lukach w jądrze). Zdaniem Grega, użycie Rust jest jednym z realnych sposobów na zmniejszenie liczby błędów w jądrze, spowodowanych tradycyjnymi błędami podczas obsługi błędów i zarządzania zasobami. W jądrze wsparcie dla Rust już wyszło poza ramy eksperymentu i pod koniec zeszłego roku zostało uznane za standardową funkcjonalność jądra.

Źródło: opennet.ru
