Linuxi kernelisse 5.12 on lisatud KFence alamsĂŒsteem mĂ€lu vigu tuvastamiseks

Arenduses oleva Linuxi kerneli 5.12 koosseisu on lisatud KFence’i (Kernel Electric Fence) mehhanismi teostus, mis kontrollib mĂ€lukasutust, tuvastades puhvri piiridest vĂ€ljumise, juba vabastatud mĂ€lule pöördumise ja muud sama klassi vead.

Sarnane funktsionaalsus oli kernelis juba olemas KASANi (kernel address sanitizer, kasutab tĂ€napĂ€evastes gcc ja clang kompilaatorites Address Sanitizerit) koostevalikuna, kuid see oli mĂ”eldud peamiselt silumiseks. KFence erineb KASANist suure jĂ”udluse poolest, mis vĂ”imaldab seda kasutada ka töökoormusega sĂŒsteemide kernelites.

Kasutamine töösĂŒsteemides vĂ”imaldab tuvastada mĂ€lukasutuse vigu, mis ei avaldu testkĂ€ivitustes ja ilmnevad alles reaalse töökoormuse all vĂ”i pika tööaja korral (suure uptime’i puhul). Lisaks vĂ”imaldab KFence’i kasutamine töösĂŒsteemides mĂ€rkimisvÀÀrselt suurendada nende masinate arvu, mis on kaasatud kerneli mĂ€lutöö kontrollimisse.

KFence saavutab minimaalse koormusest sĂ”ltumatu lisakulu tĂ€nu sellele, et hunnikusse lisatakse kindlate ajavahemike jĂ€rel kaitselehed (guard pages). Kui jĂ€rgmine kaitseintervall lĂ”peb, lisab KFence tavapĂ€rase mĂ€lueraldussĂŒsteemi (SLAB vĂ”i SLUB allocator) kaudu KFence’i objektide puulist jĂ€rgmise kaitselehe ja alustab uue ajaloenduri arvestust. Iga KFence’i objekt paigutatakse eraldi mĂ€lulehele ning vasakul ja paremal piiril asuvad mĂ€lulehed toimivad kaitselehtedena (guard pages), mille suurus valitakse juhuslikult.

Seega on objektidega lehed ĂŒksteisest eraldatud kaitselehtedega, mis on seadistatud tekitama mis tahes pöördumise korral „page fault’i“. Puhvri piiridest vĂ€ljapoole tehtavate kirjutusoperatsioonide tuvastamiseks kasutatakse objektilehtede sees tĂ€iendavalt mustripĂ”hiseid „punaseid tsoone“, mis hĂ”ivavad mĂ€lu, mida objektid ei kasuta ja mis jÀÀb alles mĂ€lulehtede suuruse joondamisel. —+————+————+————+————+————+— | xxxxxxxxx | O : | xxxxxxxxx | : O | xxxxxxxxx | | xxxxxxxxx | B : | xxxxxxxxx | : B | xxxxxxxxx | | x GUARD x | J : RED- | x GUARD x | RED- : J | x GUARD x | | xxxxxxxxx | E : ZONE | xxxxxxxxx | ZONE : E | xxxxxxxxx | | xxxxxxxxx | C : | xxxxxxxxx | : C | xxxxxxxxx | | xxxxxxxxx | T : | xxxxxxxxx | : T | xxxxxxxxx | —+————+————+————+————+————+—

Kui pĂŒĂŒtakse pöörduda puhvri piiridest vĂ€ljapoole jÀÀvasse alasse, tabab operatsioon kaitselehte, mille tulemusel tekib page fault. Selle pĂŒĂŒab kinni KFence ja kirjutab logisse avastatud probleemi andmed. Vaikimisi KFence viga ei peata ja vĂ€ljastab vaid hoiatuse logisse, kuid olemas on seadistus «panic_on_warn», mis vĂ”imaldab vea tuvastamisel viia tuuma paanikaolekusse (panic).

Allikas: opennet.ru

Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster