Greg Kroah-Hartman, verantwoordelijk voor het onderhoud van de stabiele en 'staging' takken van de Linux-kernel en hoofdonderhouder van 16 subsystemen van de kernel, heeft een presentatie gehouden op de Rust Week 2026-conferentie, waarin hij uitlegde hoe de programmeertaal Rust kan helpen bij het voorkomen van kwetsbaarheden in de kernel, die ontstaan door typische fouten van ontwikkelaars in de programmeertaal C, met betrekking tot geheugen, blokkeringen, foutafhandeling en onbetrouwbare gegevens. Een van de belangrijkste voordelen van Rust is de mogelijkheid om dergelijke fouten al tijdens de build-fase te detecteren, in plaats van tijdens codebeoordelingen door mensen. Daarbij wordt Rust niet gezien als een panacee die ons van alle problemen kan verlossen, en niemand is van plan om de kernel in Rust te herschrijven: de verwachtingen zijn dat Rust geleidelijk geĆÆmplementeerd zal worden door het gebruik ervan voor nieuwe drivers en subsystemen.
Als voorbeeld van fouten in de kernel die voorkomen hadden kunnen worden met Rust, werd een fout in het Bluetooth-subsyteem genoemd, die 15 jaar lang onopgemerkt is gebleven, evenals een probleem in de Xen-hypervisor. In het eerste geval heeft de ontwikkelaar een pointer dereferentie uitgevoerd zonder controle, en in het tweede geval vergat hij een lock vrij te geven in de foutafhandelingscode.
Volgens Greg worden de meeste fouten in de kernel veroorzaakt door dergelijke kleinigheden die zich in de loop der tijd opstapelen en uiteindelijk naar voren komen als kwetsbaarheden. In Rust worden veel van deze problemen voorkomen door de compiler. Bijvoorbeeld, de Rust-abstrahering voor locks in de kernel staat alleen toegang tot interne pointers van structuren toe na het verkrijgen van de juiste lock, die automatisch wordt vrijgegeven. Zonder het verkregen lock is toegang tot structuren in Rust niet mogelijk.
Greg is van mening dat deze mogelijkheden van Rust 60% van de fouten in de kernel zouden hebben kunnen voorkomen, en de controles die door de compiler worden uitgevoerd, zouden ontwikkelaars tijd hebben bespaard bij het bespreken van de juistheid van de foutafhandeling en of het op de juiste plaatsen inzetten van locks gerechtvaardigd was. Bovendien heeft de implementatie van Rust-ondersteuning al een positief effect gehad op de C-code in de kernel door de C-code en interfaces te verbeteren en door enkele ontwikkeltechnieken over te nemen (bijvoorbeeld zijn er locks met beperkte scope geĆÆmplementeerd).
Dankzij het typesysteem, dat de naleving van vastgestelde regels garandeert, en het gebruik van systemen voor continue integratie die de code tijdens de opbouw controleren, kunnen beoordelaars zich bij het beoordelen van wijzigingen in Rust richten op het controleren van de logica van de werking, in plaats van het volgen van de manipulatie van middelen. Het toepassen van Rust stelt ook in staat om aandachtiger te zijn voor gegevens die van hardware of uit externe systemen komen. Dit wordt bereikt door een duidelijke scheiding van betrouwbare en niet-bruikbare gegevens op het niveau van het typesysteem: het is voldoende voor de ontwikkelaar om een analyse uit te voeren bij de overgang van een niet-vertrouwd naar een vertrouwd staat.
De laatste tijd publiceert het team dat verantwoordelijk is voor de beveiliging in de kernel dagelijks ongeveer 13 rapporten over kwetsbaarheden, wat, vergeleken met de voorgaande dynamiek van kwetsbaarheidsdetectie, als een soort waanzin wordt ervaren (bijvoorbeeld, er werden gisteren 277 rapporten over kwetsbaarheden in de kernel gepubliceerd). Volgens Greg is het gebruik van Rust een van de reƫle manieren om het aantal fouten in de kernel, veroorzaakt door traditionele fouten bij foutafhandeling en resourcebeheer, te verminderen. In de kernel is de ondersteuning voor Rust al voorbij de fase van experimenten en werd aan het einde van vorig jaar erkend als een standaardfunctie van de kernel.

Bron: opennet.ru
