Een framework voor het schrijven van beveiligde stuurprogramma's voor de Linux-kernel in de programmeertaal Rust

Josh Triplett, die werkt bij Intel en deel uitmaakt van de commissie die de ontwikkeling van Crates.io begeleidt, sprak op de Open Source Technology Summit. gepresenteerd een werkgroep die zich richt op het brengen van de Rust-taal op gelijke voet met C op het gebied van systeemprogrammering.

In de op te richten werkgroep zullen Rust-ontwikkelaars samen met ingenieurs van Intel specificaties voorbereiden voor de functionaliteit die in Rust moet worden geĆÆmplementeerd voor systeemprogrammering. Systeemprogrammering vereist vaak laag-niveau manipulaties, zoals het uitvoeren van priviligeerde processorinstructies en het verkrijgen van gedetailleerde informatie over de status van de processor. Onder de al ontwikkelde mogelijkheden voor Rust zijn anonieme structuren, unions, assembler-invoegingen (de macro "asm!") en het getalformaat BFLOAT16.

Josh gelooft dat de toekomst van systeemprogrammering bij Rust ligt, terwijl C in de huidige realiteit strijft om de ruimte die vroeger door Assemblers werd ingenomen.
Rust bevrijdt ontwikkelaars niet alleen van de problemen van C die voortkomen uit laag-niveau geheugenbeheer, maar biedt ook mogelijkheden voor het toepassen van moderne programmeerparadigma's.

Tijdens discussie de presentatie
Josha's toespraak werd het idee geopperd om de mogelijkheid voor het ontwikkelen van stuurprogramma's in Rust aan de Linux-kernel toe te voegen, wat het mogelijk zou maken om met minimale inspanning veilige en kwalitatief hoogwaardige stuurprogramma's te creƫren, die vrij zijn van problemen zoals het aanroepen van geheugen na vrijgave, het dereferencen van null-pointer en buffer overflow.

Greg Kroah-Hartman, die verantwoordelijk is voor de ondersteuning van de stabiele tak van de Linux-kernel, heeft zijn bereidheid uitgesproken om een framework voor het ontwikkelen van stuurprogramma's in Rust toe te voegen aan de kernel, mits dit echte voordelen biedt ten opzichte van C, zoals veilige wrappers rond de kernel-API. Bovendien beschouwt Greg dit framework slechts als een optie, niet standaard ingeschakeld, om Rust niet op te nemen in de bouwafhankelijkheden van de kernel.

Het blijkt dat verschillende teams al in deze richting werken. Bijvoorbeeld, ontwikkelaars van het bedrijf "Fish in a Barrel". bereid Een toolkit voor het schrijven van laadtmodules voor de Linux-kernel in Rust, met behulp van een set abstracte lagen bovenop de kernelinterfaces en -structuren om de beveiliging te verbeteren. De lagen worden automatisch gegenereerd op basis van de beschikbare headerbestanden van de kernel met behulp van de tool bindgen. Voor het bouwen van de lagen wordt Clang gebruikt. De gebouwde modules gebruiken naast de lagen ook het pakket staticlib.

Tegelijkertijd een vrij alternatief voor XenServer wordt ontwikkeld, waarin functies zijn teruggebracht die uit de gratis versie van XenServer zijn verwijderd. een ander project dat zich richt op de ontwikkeling van stuurprogramma's voor embedded systemen en Internet of Things-apparaten, dat ook bindgen gebruikt voor het genereren van lagen op basis van de headerbestanden van de kernel. Het framework maakt het mogelijk om de veiligheid van stuurprogramma's te verbeteren zonder wijzigingen in de kernel aan te brengen — in plaats van extra isolatieniveaus voor stuurprogramma's in de kernel te creĆ«ren, wordt voorgesteld om problemen tijdens de compilatiefase te blokkeren door een veiliger programmeertaal zoals Rust te gebruiken. Aangenomen wordt dat deze aanpak in de smaak zal vallen bij fabrikanten van hardware die snel propriĆ«taire stuurprogramma's ontwikkelen zonder de nodige audits.

Niet alle geplande functionaliteit is momenteel geĆÆmplementeerd, maar het framework is al goed bruikbaar en is gebruikt voor het schrijven van een werkend stuurprogramma voor de Ethernet-controller LAN9512 USB, geleverd op het Raspberry Pi 3-bord. Bij het schrijven van het Rust-stuurprogramma werd de bestaande stuurprogramma smsc95xx, geschreven in C, als referentie-implementatie gebruikt. Het wordt opgemerkt dat de grootte van de module en de overhead van runtime-componenten bij het ontwikkelen van een stuurprogramma in Rust minimaal zijn, wat het mogelijk maakt om het framework te gebruiken voor apparaten met beperkte middelen.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster