KFence-subsystemet til at identificere fejlhåndtering i Linux-kernen 5.12 er blevet accepteret

Det udviklede Linux 5.12 kerne inkluderer implementeringen af KFence (Kernel Electric Fence) mekanismen, som tjekker hukommelsesarbejdet ved at opdage buffer-overskridelse, adgang til hukommelse efter frigivelse og andre fejl i samme klasse.

Sådan funktionalitet har allerede været til stede i kernen som en KASAN (kernel address sanitizer) bygningsmulighed, der bruger Address Sanitizer i moderne gcc og clang — men blev hovedsageligt positioneret til fejlfinding. KFence subsystemet adskiller sig fra KASAN ved højere hastighed, hvilket gør det muligt at bruge denne funktion selv på kerner i produktionssystemer.

Anvendelse i produktionssystemer vil muliggøre opdagelse af hukommelsesfejl, der ikke manifesterer sig ved testkørsler og kun dukker op under arbejdsbelastninger eller ved langvarig drift (ved høj oppetid). Desuden vil anvendelsen af KFence på produktionssystemer væsentligt øge antallet af maskiner involveret i verificeringen af kernen med hukommelse.

De minimale overheadomkostninger, der ikke afhænger af belastningen, opnås i KFence ved installationen af beskyttelsessider (guard pages) i bunken med faste intervaller. Efter udløbet af det aktuelle beskyttelsesinterval tilføjer KFence gennem det almindelige hukommelsesfordelingssystem (SLAB eller SLUB allocator) en ny beskyttelsesside fra KFence objektsamlingen og starter en ny tidsoptælling. Hvert KFence-objekt placeres på en individuel hukommelsesside, og hukommelsessiderne til venstre og højre danner beskyttelsessider (guard pages), hvis størrelse vælges tilfældigt.

Dermed adskilles sider med objekter fra hinanden af beskyttelsessider, som er indstillet til at generere "page fault" ved ethvert adgang. For at identificere skriveoperationer uden for bufferet inden for objektsiderne anvendes desuden "røde zoner" baseret på skabeloner, som optager hukommelse, der ikke bruges af objekterne, og som er tilbageholdt under udjævning af hukommelsessiderne.

Hvis man forsøger at tilgå et område uden for buffergrænsen, påvirker operationen beskyttelsessiden, hvilket fører til generering af en «page fault», som opsnappes af KFence og logger oplysninger om det identificerede problem. Som standard blokerer KFence ikke fejlen og logger kun en advarsel, men der er en indstilling «panic_on_warn», der tillader, at kerne kan skifte til en nedbrudstilstand (panic) ved påvisning af en fejl.

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