Checkpoint hà prupostu a tecnica di prutezzione Safe-Linking, facendu più difficiuli di sfruttà e vulnerabilità

Checkpoint Company prisentatu Meccanisimu di prutezzione Safe-Linking, chì rende difficiuli di creà sfruttamenti chì manipulanu a definizione o mudificazione di i puntatori à i buffers attribuiti quandu eseguisce una chjama malloc. Safe-Linking ùn impedisce micca cumplettamente a pussibilità di sfruttà e vulnerabilità, ma cù un minimu di sopravvivenza complica significativamente a creazione di certe categurie di sfruttamenti, postu chì in più di u buffer overflow sfruttable, hè necessariu di truvà una altra vulnerabilità chì pruvuca a fuga di infurmazioni circa. a piazza di u munzeddu in memoria.

Patchs chì implementanu Safe-Linking sò stati preparati per Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) è Google TCMalloc, è sò ancu pruposti per aghjurnà a prutezzione in Chromium (in
Dapoi u 2012, Chromium hà digià custruitu in a tecnica di prutezzione MaskPtr destinata à risolve u listessu prublema, ma a suluzione di Checkpoint mostra un rendimentu più altu).
I patch suggeriti sò digià stati appruvati per a consegna in a liberazione d'aostu Glibc 3.32 è Safe-Linking serà attivatu per automaticamente. uClibc-NG supporta Safe-Linking intrutu inclusu in a versione 1.0.33 è hè attivatu per automaticamente. Cambiamenti in gperftools (vechju tcmalloc) accettatu, ma serà prupostu cum'è una opzione in una futura versione.

Sviluppori TCMalloc (novu tcmalloc) ricusatu di accettà cambià, citendu a degradazione severa di u rendiment è a necessità di aghjunghje testi estensivi per verificà regularmente chì tuttu funziona cum'è previstu. A prova di l'ingegneri di Checkpoint hà dimustratu chì u metudu Safe-Linking ùn porta micca à un cunsumu di memoria supplementu, è u rendimentu quandu eseguisce operazioni di heap hè ridottu in media solu da 0.02%, è in u peghju scenariu di 1.5% (per paragunà, u overhead in u metudu usatu in Chromium sò stimati cum'è "menu di 2%"). Inclusione
Safe-Linking risulta in 2-3 istruzioni di assemblea supplementari chì sò eseguite ogni volta chì free() hè chjamatu, è 3-4 struzzioni ogni volta chì malloc () hè chjamatu. Eseguisce l'inizializazione è e fasi di generazione di valore aleatoriu ùn hè micca necessariu.

Checkpoint hà prupostu a tecnica di prutezzione Safe-Linking, facendu più difficiuli di sfruttà e vulnerabilità

Safe-Linking pò esse aduprata micca solu per migliurà a sicurità di diverse implementazioni di l'heap, ma ancu per aghjunghje cuntrolli di integrità à qualsiasi strutture di dati chì utilizanu listi di puntatori cunnessi singolamenti posti vicinu à i buffer stessi. U metudu hè assai simplice di implementà è solu esige l'aghjunghje una macro è l'applicà à i puntatori à u prossimu bloccu in u codice (per esempiu, per Glibc cambiamenti solu uni pochi di linee di codice). U metudu si riduce à i seguenti cambiamenti:

+#definisce 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);
...

L'essenza di u metudu hè di utilizà e dati aleatorii da u mecanismu di randomizazione di l'indirizzu ASLR (mmap_base) per prutege listi ligate singolamenti cum'è Fast-Bins è TCache. Prima chì u valore hè appiicatu à un punteru à l'elementu prossimu in a lista, eseguisce una cunversione di maschera è verifica l'allineamentu di a pagina. U puntatore hè rimpiazzatu da u risultatu di l'operazione "(L >> PAGE_SHIFT) XOR (P)", induve P hè u valore di u puntatore è L hè u locu di memoria induve u puntatore hè almacenatu.

Checkpoint hà prupostu a tecnica di prutezzione Safe-Linking, facendu più difficiuli di sfruttà e vulnerabilità

Quandu s'utilice in u sistema ASLR (Address Space Layout Randomization) a parte di i L bits cù l'indirizzu di basa di l'heap cuntene valori aleatori chì sò usati cum'è chjave per codificà P (estratti da una operazione di shift 12-bit per pagine di 4096 byte). Questa manipulazione reduce u risicu di u pirate di u punteru in un sfruttamentu, postu chì u punteru ùn hè micca almacenatu in a so forma originale è a so sustituzione richiede a cunniscenza di l'allocazione di heap. Inoltre, u codice di patch cuntene ancu un verificatu supplementu per l'allineamentu di bloccu, chì ùn permette micca à un attaccu di rimpiazzà un punteru cù un valore micca allineatu è esige a cunniscenza di u numeru di bits chì sò allinati, chì in i sistemi di 64-bit permette ancu di bluccà. 15 di 16 tentativi d'attaccu chì ùn piglianu micca l'allinjamentu in contu.

U metudu hè efficace per a prutezzione di l'attacchi chì utilizanu a riscrittura di puntatore parziale (cambiendu byte bassu), a riscrittura completa di puntatore (redirecting à u codice di l'attaccante) è cambià a pusizione di lista à un indirizzu unaligned. Cum'è un esempiu, hè dimustratu chì l'usu di Safe-Linking in malloc permetterebbe bluccà u sfruttamentu di pocu tempu identificatu da i stessi ricercatori di vulnerabilità CVE-2020-6007 in a luce intelligente Philips Hue Bridge, causata da un buffer overflow è chì permette di ottene u cuntrollu di u dispusitivu.

Source: opennet.ru

Add a comment