È stato proposto un metodo di attacco per determinare in remoto i frammenti di memoria sul server

Un gruppo di ricercatori dell'Università Tecnica di Graz (Austria), precedentemente noto per aver sviluppato gli attacchi MDS, NetSpectre, Throwhammer e ZombieLoad, ha pubblicato un nuovo metodo di attacco side-channel (CVE-2021-3714) contro il meccanismo di deduplicazione della memoria , che consente di determinare la presenza in memoria di determinati dati, organizzare una perdita byte per byte del contenuto della memoria o determinare il layout della memoria per bypassare la protezione ASLR (address-based randomization). Il nuovo metodo si differenzia dalle varianti di attacco al meccanismo di deduplicazione precedentemente dimostrate poiché effettua un attacco da un host esterno utilizzando come criterio la modifica del tempo di risposta alle richieste inviate all'aggressore tramite i protocolli HTTP/1 e HTTP/2. La capacità di effettuare l'attacco è stata dimostrata per server basati su Linux e Windows.

Gli attacchi al meccanismo di deduplicazione della memoria utilizzano la differenza nel tempo di elaborazione di un'operazione di scrittura come canale per perdere informazioni in situazioni in cui una modifica nei dati porta alla clonazione di una pagina di memoria deduplicata utilizzando il meccanismo Copy-On-Write (COW) . Durante il funzionamento, il kernel rileva pagine di memoria identiche da processi diversi e le unisce, mappando pagine di memoria identiche in un'unica area di memoria fisica per archiviare solo una copia. Quando uno dei processi tenta di modificare i dati associati alle pagine deduplicate, si verifica un'eccezione (page fault) e, utilizzando il meccanismo Copy-On-Write, viene creata automaticamente una copia separata della pagina di memoria, che viene assegnata al processo. Viene impiegato più tempo per completare la copia, il che potrebbe essere un segno di modifiche dei dati che interferiscono con un altro processo.

I ricercatori hanno dimostrato che i ritardi derivanti dal meccanismo COW possono essere rilevati non solo a livello locale, ma anche analizzando i cambiamenti nei tempi di consegna della risposta sulla rete. Sono stati proposti diversi metodi per determinare il contenuto della memoria da un host remoto analizzando il tempo di esecuzione delle richieste sui protocolli HTTP/1 e HTTP/2. Per salvare i modelli selezionati, vengono utilizzate applicazioni web standard che archiviano in memoria le informazioni ricevute nelle richieste.

Il principio generale dell'attacco si riduce al riempimento di una pagina di memoria sul server con dati che potenzialmente ripetono il contenuto di una pagina di memoria già esistente sul server. L'aggressore attende quindi il tempo necessario al kernel per deduplicare e unire la pagina di memoria, quindi modifica i dati duplicati controllati e valuta il tempo di risposta per determinare se l'attacco ha avuto successo.

È stato proposto un metodo di attacco per determinare in remoto i frammenti di memoria sul server

Durante gli esperimenti, il tasso massimo di perdita di informazioni è stato di 34.41 byte all'ora in caso di attacco attraverso una rete globale e di 302.16 byte all'ora in caso di attacco attraverso una rete locale, che è più veloce rispetto ad altri metodi di estrazione dei dati attraverso canali di terze parti (ad esempio, in un attacco NetSpectre la velocità di trasferimento dati è di 7.5 byte all'una).

Sono state proposte tre opzioni di attacco funzionanti. La prima opzione consente di determinare i dati presenti nella memoria del server web che utilizza Memcached. L’attacco si riduce al caricamento di determinati set di dati nello spazio di archiviazione Memcached, cancellando il blocco deduplicato, riscrivendo lo stesso elemento e creando una condizione affinché avvenga la copia COW modificando il contenuto del blocco. Durante l'esperimento con Memcached è stato possibile determinare in 166.51 secondi la versione di libc installata su un sistema in esecuzione su una macchina virtuale.

La seconda opzione ha reso possibile scoprire il contenuto dei record nel DBMS MariaDB, quando si utilizza lo storage InnoDB, ricreando il contenuto byte per byte. L'attacco viene effettuato inviando richieste appositamente modificate, provocando discrepanze di singoli byte nelle pagine di memoria e analizzando il tempo di risposta per determinare se l'ipotesi sul contenuto del byte era corretta. La velocità di una tale perdita è bassa e ammonta a 1.5 byte all'ora in caso di attacco da una rete locale. Il vantaggio del metodo è che può essere utilizzato per recuperare contenuti di memoria sconosciuti.

La terza opzione ha permesso di bypassare completamente il meccanismo di protezione KASLR in 4 minuti e ottenere informazioni sull'offset di memoria dell'immagine del kernel della macchina virtuale, in una situazione in cui l'indirizzo di offset si trova in una pagina di memoria in cui gli altri dati non cambiano. L'attacco è stato effettuato da un host situato a 14 passi dal sistema attaccato. Si promette che gli esempi di codice per l'implementazione degli attacchi presentati saranno pubblicati su GitHub.

Fonte: opennet.ru

Aggiungi un commento