Në kernin Linux 5.12 është pranuar nën-sistemi KFence për identifikimin e gabimeve gjatë punës me memorien.

Në versionin e zhvillimit të kernit Linux 5.12 është përfshirë implementimi i mekanizmit KFence (Kernel Electric Fence), i cili kontrollon aksesin në memorie, duke kapur tejkalimin e kufijve të bufeve, qasjet në memorie pas lirimit dhe gabime të ngjashme.

NjĂ« funksionalitet i tillĂ« kishte qenĂ« tashmĂ« i pranishĂ«m nĂ« kern, nĂ« formĂ«n e opsionit tĂ« ndĂ«rtimit KASAN (kernel address sanitizer, qĂ« pĂ«rdor Address Sanitizer nĂ« gcc dhe clang moderne) — por kryesisht ishte pozicionuar pĂ«r pĂ«rdorim nĂ« debug. NĂ«n-sistemi KFence dallon nga KASAN pĂ«r shpejtĂ«sinĂ« e tij tĂ« lartĂ« tĂ« funksionimit, çka e bĂ«n tĂ« mundur pĂ«rdorimin e kĂ«saj mundĂ«sie edhe nĂ« kernet e sistemeve nĂ« punĂ«.

Përdorimi në sistemet e punës do të mundësojë kapjen e gabimeve të punës me memorien, të cilat nuk shfaqen në testimet e zakonshme dhe dalin në pah vetëm në ngarkesa operative ose gjatë funksionimit të gjatë (në uptime të madh). Për më tepër, aplikimi i KFence në sistemet e punës do të rrisë ndjeshëm numrin e makinave të përfshira në kontrollin e funksionimit të kernit me memorien.

KFence siguron kosto minimale tĂ« menaxhimit, tĂ« pavarura nga ngarkesa, duke prezantuar faqe mbrojtĂ«se (guard pages) nĂ« grumbull pĂ«rmes intervaleve fikse. Pasi tĂ« kalojĂ« koha e intervalit tĂ« mbrojtjes, KFence pĂ«rmes sistemit standard tĂ« ndarjes sĂ« memories (SLAB ose SLUB allocator) shton njĂ« faqe mbrojtĂ«se tĂ« re nga grupi i objekteve KFence dhe fillon njĂ« raport tĂ« ri tĂ« numĂ«ratorit tĂ« kohĂ«s. Çdo objekt KFence vendoset nĂ« njĂ« faqe tĂ« veçantĂ« tĂ« memories, ndĂ«rsa faqet e memories nĂ« kufijtĂ« e majtĂ« dhe tĂ« djathtĂ« formojnĂ« faqet mbrojtĂ«se (guard pages), pĂ«rmasat e tĂ« cilave zgjidhen rastĂ«sisht.

KĂ«shtu, faqet me objekte ndahen nga njĂ«ra-tjetra me faqet mbrojtĂ«se, tĂ« cilat konfigurohen pĂ«r tĂ« gjeneruar "page fault" me çdo thirrje. PĂ«r identifikimin e operacioneve tĂ« shkruar jashtĂ« kufijve tĂ« buffers nĂ« faqet me objekte, pĂ«rdoren gjithashtu "zona tĂ« kuqe" bazuar nĂ« modele, tĂ« cilat zĂ«nĂ« memorie qĂ« nuk pĂ«rdoret nga objektet, duke mbetur pas rregullimit tĂ« madhĂ«sisĂ« sĂ« faqeve tĂ« memories. —+————+————+————+————+————+— | 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 | —+————+————+————+————+————+—

Në rast të një përpjekjeje për të accesuar një zonë përtej kufijve të buffers, operacioni prek faqen mbrojtëse, e cila çon në gjenerimin e "page fault", i cili kapet nga KFence dhe regjistron në log të dhënat mbi çështjen e zbuluar. Me përjashtim, KFence nuk bllokon gabimin dhe thjesht regjistron një paralajmërim në log, por është parashikuar një konfigurim "panic_on_warn", e cila lejon që në rast të zbuluar të gabimit, bërthama të kalojë në një gjendje kolapsi (panic).

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster