Greg Kroah-Hartman, som ansvarar för att stödja den stabila grenen av Linux-kÀrnan, har uttryckt sitt stöd för utvecklingen av nya komponenter i kÀrnan pÄ Rust-sprÄket. Som person genom vilken all information om buggar och sÄrbarheter i Linux-kÀrnan passerar de senaste 15 Ären, hÀvdar han att de flesta buggar i kÀrnan orsakas av oövervÀgda funktioner i C-sprÄket (corner cases), som helt utesluts i kod skriven pÄ Rust.
AnvÀndningen av Rust kommer att göra det möjligt att lÀmna bakom sig problem som Ätkomst till minne efter att det har frigjorts, bufferöverflöden (delvis), felaktig frigöring av resurser vid felhantering och glömda kontroller av felkoder, vilket gör att underhÄllarna kan fokusera pÄ verkliga fel, som race conditions och logikproblem, istÀllet för att sprida sitt fokus pÄ smÄsaker under granskning.
Den befintliga gamla koden i C kommer inte att försvinna, men för ny kod och nya drivrutiner kommer införandet av Rust avsevÀrt att förbÀttra kvaliteten. InrÀttandet av Rust kommer ocksÄ att ge möjlighet att strukturera interna programgrÀnssnitt i kÀrnan pÄ ett sÀtt som praktiskt taget utesluter fel vid anvÀndning av det interna API:et - det har samlats för mycket komplicerat och förvirrat API som lÀgger stor belastning pÄ underhÄllarna i deras arbete med att verifiera att dessa API anvÀnds korrekt. Under utvecklingen av Rust-bindningar fÄr underhÄllarna möjlighet att omvÀrdera och stÀda upp API:erna, vilket kommer att gynna alla, inklusive dem som anvÀnder C.
Greg anser inte att Rust Àr en "silverkula" som kommer att lösa alla problem i kÀrnan, men detta sprÄk kommer definitivt att hjÀlpa i mÄnga situationer. Stödet för Rust kommer ocksÄ att tillfredsstÀlla behoven hos drivrutinsutvecklare som hoppas pÄ att fÄ ett verktyg som gör det möjligt att skriva kod för sin hÄrdvara och undvika mÄnga typer av fel. NÀr det gÀller att blanda flera sprÄk ser Greg inte detta som ett stort problem; han anser att kÀrnutvecklarna i det förflutna har hanterat mer komplexa uppgifter, och det finns ingen anledning att avstÄ frÄn att föra in nya bra idéer i kÀrnan som kan hjÀlpa till att sÀkerstÀlla projektets framgÄng de kommande 20+ Ären.
Kees Cook, tidigare huvudsystemadministratör för kernel.org och ledare för Ubuntu Security Team, har ocksÄ anslutit sig till diskussionen. Kees klargjorde att det handlar om att ge möjlighet att anvÀnda Rust för att skapa nya drivrutiner och delsystem, snarare Àn att skriva om existerande kod i kÀrnan. AnvÀndning av Rust för ny kod kommer inte bara att minska antalet minnesfel, utan ocksÄ minska utvecklingstiden. Utvecklingshastigheten ökar tack vare minskade anstrÀngningar för felsökning och strikta garantier i sprÄket som gör det möjligt att upptÀcka fel tidigt i kodskrivning, innan produktens testning börjar.
Effektiviteten av strategin att anvÀnda Rust för att förbÀttra kvaliteten pÄ ny kod har redan demonstrerats av Google pÄ Android-plattformen. Det har visat sig att den frÀmsta kÀllan till sÀkerhetsproblem Àr ny kod, och att det Àr viktigt att fokusera pÄ att förbÀttra dess kvalitet. För gammal kod finns det en exponentiell beroende av sÀkerhet i förhÄllande till tid (till exempel har fem Är gammal kod i genomsnitt 3,4 gÄnger lÀgre sÄrbarhetstÀthet Àn ny kod).
KĂ€lla: opennet.ru
