Checkpoint predstavil techniku ochrany Safe-Linking, ktorá sťažuje využívanie zraniteľností.

Spoločnosť Checkpoint predstavila mechanizmus ochrany Safe-Linking, ktorý sťažuje vytváranie exploitov manipulujúcich s definovaním alebo zmenou ukazovateľov na vyhradené pamäťové bloky pri volaní malloc. Safe-Linking síce úplne neblokuje možnosť vykorisťovania zraniteľností, ale pri minimálnych nákladoch výrazne sťažuje vytváranie niektorých kategórií exploitov, pretože okrem vyžadovaného pretečenia bufferu je potrebné nájsť ešte jednu zraniteľnosť, ktorá spôsobuje únik informácií o umiestnení hromady (heap) v pamäti.

Opravy s implementáciou Safe-Linking sú pripravené pre Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) a Google TCMalloc, ako aj sú navrhnuté na modernizáciu ochrany v Chromium (v
Chromium je už od roku 2012 zabudovaná technika ochrany MaskPtr, zameraná na riešenie tej istej problematiky, avšak riešenie od Checkpoint ukazuje vyšší výkon).
Navrhnuté opravy sú už schválené na dodanie v augustom vydaní Glibc 3.32 a zavedenie Safe-Linking bude zahrnuté predvolene. V uClibc-NG podpora Safe-Linking sa dostala vydanie 1.0.33 a je zahrnuté predvolene. V gperftools (starý tcmalloc) zmeny boli prijaté, ale budú navrhnuté v jednej z budúcich verzií ako volba.

Vývojári TCMalloc (nový tcmalloc) odmietli prijať zmena, odvolávajúc sa na výrazné zníženie výkonu a potrebu pridať rozšírené testy na pravidelnú kontrolu, že všetko funguje správne. Testovanie vykonané inžiniermi Checkpoint ukázalo, že metóda Safe-Linking nezvyšuje spotrebu pamäte, pričom výkon pri vykonávaní operácií s hromadou sa priemerne znižuje len o 0,02 %, a pri najhoršom scenári o 1,5 % (pre porovnanie, náklady v používanom v Chromium spôsobe sú hodnotené ako „menej ako 2 %“). Zahrnutie
Safe-Linking vedie k vykonaniu 2-3 dodatočných assemblerových inštrukcií pri každom volaní free() a 3-4 inštrukcií pri volaní malloc(). Spustenie štádií inicializácie a generovania náhodných hodnôt nie je potrebné.

Checkpoint predstavil techniku ochrany Safe-Linking, ktorá sťažuje využívanie zraniteľností.

Safe-Linking sa môže používať nielen na zvyšovanie bezpečnosti rôznych realizácií hromady, ale aj na pridávanie prostriedkov na kontrolu integrity do akýchkoľvek dátových štruktúr, v ktorých sa používajú jednokrúžkové zoznamy ukazovateľov umiestnených vedľa samotných buffrov. Metóda je veľmi jednoduchá na realizáciu a vyžaduje iba pridanie jedného makra a jeho aplikáciu na ukazovatele na nasledujúci blok v kóde (napríklad pre Glibc mení sa len niekoľko riadkov v kóde). Metóda spočíva v nasledujúcich zmenách:

+#define PROTECT_PTR(pos, ptr) \
+ ((__typeof (ptr)) ((((size_t) pos) >> 12) ^ ((size_t) ptr)))

+#define REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr)

— nextp = p->fd;
+ nextp = REVEAL_PTR (p->fd);
…

Podstata metódy spočíva v použití náhodných dát z mechanizmu randomizácie adries ASLR (mmap_base) na ochranu jednokrúžkových zoznamov, ako sú Fast-Bins a TCache. Pred aplikovaním na hodnotu ukazovateľa na nasledujúci prvok v zozname sa vykoná transformácia pomocou masky a kontrola zarovnania na hranici pamäťovej stránky. Ukazovateľ sa nahrádza výsledkom operácie „(L >> PAGE_SHIFT) XOR (P)“, kde P je hodnota ukazovateľa a L je umiestnenie v pamäti, kde sa tento ukazovateľ uchováva.

Checkpoint predstavil techniku ochrany Safe-Linking, ktorá sťažuje využívanie zraniteľností.

Pri použití v systéme ASLR (Address Space Layout Randomization) časť bitov L s základnou adresou hromady obsahuje náhodné hodnoty, ktoré sa používajú ako kľúč na kódovanie P (vyťahujú sa operáciou posunu o 12 bitov pre 4096-bajtové stránky). Takáto manipulácia znižuje riziko zachytenia ukazovateľa v exploite, pretože ukazovateľ sa neuchováva v pôvodnej podobe a na jeho nahradenie je potrebné poznať informácie o umiestnení hromady. Navyše, v kóde záplaty sa nachádza aj dodatočná kontrola zarovnania bloku, ktorá neumožňuje útočníkovi nahradiť ukazovateľ na nezarovnanú hodnotu a vyžaduje vedomosť o počte bitov, o ktoré bolo zarovnanie vykonané, čo na 64-bitových systémoch ďalej umožňuje zablokovať 15 z 16 pokusov o útoky, nezohľadňujúce zarovnanie.

Metóda je účinná na ochranu pred útokmi, v ktorých sa používajú čiastočné prepísania ukazovateľov (zmena nižších bajtov), úplné prepísanie ukazovateľov (presmerovanie na kód útočníka) a zmena pozície zoznamu na nezarovnanú adresu. Ako príklad sa ukazuje, že aplikácia Safe-Linking v malloc by mohla zablokovať exploatáciu nedávno zistené tými istými výskumníkmi zraniteľnosti CVE-2020-6007 v inteligentnom osvetlení Philips Hue Bridge, spôsobenú preplnením vyrovnávacej pamäte a umožňujúcou získať kontrolu nad zariadením.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster