Greg Kroah-Hartman ezen a héten Utrechtben járt a RustWeek 2026 rendezvényen, ahol egy még fejlesztés alatt álló, Rust-alapú javaslatról beszélt. Ha ez megvalósul, a Linux kernel által termelt CVE-k nagyjából 80%-át kiirthatja.
Ez egyáltalán nem kis állítás. Ráadásul olyasvalakitől származik, aki 2005 óta, a Linux kernel biztonsági csapatának megalakulása óta személyesen átnézett minden kernel-beli biztonsági hibát.
A C vakfoltja
A fő gond Greg értelmezése szerint a nem Rustelt adat. Valahányszor adat érkezik user space-ből vagy hardverről, a kernel-nek gyanakvással kellene kezelnie. C erre sosem adott megbízható, kikényszeríthető megoldást.
Amint az adat átkerül user space-ből a kernel-ba, sima pointerré válik, és elveszíti minden információját arról, honnan jött. Szabadon adogatják tovább, és azokat a külső ellenőrző eszközöket, amelyeknek ki kellene szúrniuk a problémákat, nem mindig futtatják le.
A hardver ugyanezt a problémát egy újabb szinttel megfejeli. A kernel eredetileg abból indult ki, hogy a hardver megbízható, ezt a feltételezést viszont egyre nehezebb tartani, ahogy a rosszindulatú hardver valós és növekvő fenyegetéssé válik.
Mit javít már most a Rust?
Már a mostani állapotában is látszik a Rust hatása, pedig az új javaslat még meg sem jelent. Két tipikus forrása a kernel CVE-knek, hogy nem ellenőrzik a hibakód-visszatéréseket, illetve elfelejtik elengedni a lockokat. A Rust mindkettőt kezeli fordítási időben.
Greg becslése szerint ez a két javítás önmagában a kernel-hibák nagyjából 60%-át lefedi.
És itt nem áll meg a hatása. A meglévő C kódhoz írt Rust bindingok csendben arra kényszerítették a kernel karbantartóit, hogy ténylegesen dokumentálják és átgondolják az API-jaikat: tisztázzák a tulajdonlási szabályokat, a lockolási elveket és a const-helyességet.
Jön az „untRusted” típus
Greg javasolt megoldása egy Rust típus, az
UntRusted<T>
, amelyet a kernel-közreműködő Benno Lossinnal közösen dolgozott ki. Ez a típus fordítási idejű jelölőként kapcsolódik minden olyan adathoz, amely user space-ből vagy hardverről érkezik, futásidejű költség nélkül.
A mögöttes adathoz nem lehet hozzáférni anélkül, hogy ne menne át egy ellenőrzési lépésen, amely kifejezetten tRusted adattá alakítja. Így minden ellenőrző kód egy jól látható, könnyen átnézhető helyre kerül.
Mit jelent ez számodra, mint Linux-felhasználó számára? A CVE-k jelentős része, amelyek ma még biztonsági frissítésként csorognak le a disztribúciódhoz, eleve nem is jönne létre.
Mindez azonban még nincs bent a kernelben. A Rust fordítóhoz továbbra is szükség van módosításokra, és ezzel párhuzamosan zajlik a mezőprojekciókkal kapcsolatos munka is. Greg azzal zárta az előadását, hogy több Rust kernel fejlesztőt kért, és kiemelte a Rust for Linux levelezőlistát, mint kiindulópontot.

