Greg Kroa-Hartmann fortalte om, hvordan Rust kan hjælpe med at bekæmpe fejl i Linux-kernen

Greg Kroah-Hartman, der står for vedligeholdelse af stabile og »staging« kernegrene i Linux og fungerer som hovedvedligeholder i 16 kerneundersystemer, præsenterede et foredrag på Rust Week 2026, hvor han fortalte, hvordan Rust-sproget kan hjælpe med at forhindre sårbarheder i kernen, som opstår på grund af typiske fejl fra udviklere, der arbejder med C, når det kommer til hukommelse, låsning, fejlbehandling og behandling af usikre data. Den primære fordel ved Rust nævnes som muligheden for at opdage sådanne fejl på kompileringstidspunktet snarere end ved menneskelig kodegennemgang. Desuden betragtes Rust ikke som en mirakelløsning, der kan løse alle problemer, og der er ingen planer om at skrive kernen om i Rust: Det forventes, at Rust gradvist implementeres gennem dets brug til nye drivere og undersystemer.

Som et eksempel på fejl i kernen, som kunne være undgået med Rust, nævnes en fejl i Bluetooth-undersystemet, der forblev uset i 15 år, samt et problem i hypervisoren Xen. I det første tilfælde udførte udvikleren en dereferencering af en peger uden at tjekke, og i det andet glemte han at frigive en lås i kode til fejlhåndtering.
Ifølge Greg stammer de fleste fejl i kernen fra sådanne småting, der akkumuleres over tid og dukker op som sårbarheder. I Rust forhindrer kompilatoren mange af sådanne problemer, for eksempel tillader Rust-abstraktioner for låsninger i kernen adgangen til interne pegere i strukturer kun efter, at den relevante lås er blevet grebet, og som frigives automatisk. Uden at gribe låsen kan man ikke få adgang til strukturers pegere i Rust.

Greg mener, at sådanne muligheder i Rust ville have forhindret 60% af de fejl, der blev opdaget i kernen, og at de kontroller, som kompilatoren udfører, ville have sparret vedligeholdelse for tid brugt på at diskutere korrektheden af fejlhåndtering og berettigelsen af at sætte låsninger det rigtige sted. Desuden har implementeringen af Rust-støtte allerede haft en gavnlig effekt på C-koden i kernen ved at rydde op i C-koden og grænsefladerne, samt ved at låne nogle udviklingsteknikker (for eksempel blev der implementeret låsninger med begrænset omfang).

Takket være typesystemet, der sikrer overholdelse af fastsatte regler, samt anvendelsen af systemer til kontinuerlig integration, der kontrollerer koden under bygningen, kan gennemseere af ændringer i Rust fokusere på at kontrollere logikken i arbejdet i stedet for at spore manipulationer med ressourcer. Anvendelsen af Rust giver også mulighed for en mere omhyggelig håndtering af data, der kommer fra hardware eller eksterne systemer. Dette opnås gennem en klar adskillelse af betroede og ikke-betroede data på niveauet af typesystemet: udvikleren skal blot udføre en analyse ved overgangen fra en ikke-betroet til en betroet tilstand.

På det seneste udgiver teamet, der arbejder med sikkerheden i kernen, næsten 13 rapporter om sårbarheder hver dag, hvilket i forhold til den tidligere dynamik i opdagelsen af sårbarheder virker som en form for vanvid (for eksempel blev der i går offentliggjort 277 rapporter om sårbarheder i kernen). Ifølge Greg er brugen af Rust en af de virkelige måder at reducere antal fejl i kernen, som skyldes traditionelle fejlhåndteringsfejl og ressourcehåndtering. Støtten til Rust i kernen er allerede gået ud over eksperimentet og blev sidste år anerkendt som en standardfunktion i kernen.

Afspil video


Kilde: opennet.ru
Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster