A fost propusă o metodă de atac pentru a determina de la distanță fragmentele de memorie de pe server

Un grup de cercetători de la Universitatea Tehnică din Graz (Austria), cunoscut anterior pentru dezvoltarea atacurilor MDS, NetSpectre, Throwhammer și ZombieLoad, a publicat o nouă metodă de atac pe canal lateral (CVE-2021-3714) împotriva mecanismului de deduplicare a memoriei , care permite determinarea prezenței în memorie a anumitor date, organizarea unei scurgeri octet-cu-octet a conținutului memoriei sau determinarea aspectului memoriei pentru a ocoli protecția randomizării bazate pe adrese (ASLR). Noua metodă diferă de variantele demonstrate anterior de atacuri asupra mecanismului de deduplicare prin efectuarea unui atac de la o gazdă externă folosind ca criteriu modificarea timpului de răspuns la cererile trimise atacatorului prin protocoalele HTTP/1 și HTTP/2. Abilitatea de a efectua atacul a fost demonstrată pentru serverele bazate pe Linux și Windows.

Atacurile asupra mecanismului de deduplicare a memoriei folosesc diferența de timp de procesare a unei operațiuni de scriere ca un canal pentru a scurge informații în situațiile în care o modificare a datelor duce la clonarea unei pagini de memorie deduplicată folosind mecanismul Copy-On-Write (COW) . În timpul funcționării, nucleul detectează pagini de memorie identice din diferite procese și le îmbină, mapand pagini de memorie identice într-o zonă a memoriei fizice pentru a stoca o singură copie. Când unul dintre procese încearcă să modifice datele asociate paginilor deduplicate, apare o excepție (defecțiune de pagină) și, folosind mecanismul Copy-On-Write, este creată automat o copie separată a paginii de memorie, care este atribuită procesului. Este alocat timp suplimentar pentru completarea copiei, ceea ce poate fi un semn al modificărilor datelor care interferează cu un alt proces.

Cercetătorii au arătat că întârzierile rezultate din mecanismul COW pot fi surprinse nu numai la nivel local, ci și prin analizarea modificărilor timpilor de livrare a răspunsului în rețea. Au fost propuse mai multe metode pentru determinarea conținutului memoriei de la o gazdă la distanță prin analiza timpului de execuție a cererilor prin protocoalele HTTP/1 și HTTP/2. Pentru a salva șabloanele selectate, se folosesc aplicații web standard care stochează în memorie informațiile primite în cereri.

Principiul general al atacului se rezumă la umplerea unei pagini de memorie de pe server cu date care pot repeta conținutul unei pagini de memorie deja existente pe server. Atacatorul așteaptă apoi timpul necesar nucleului pentru a deduplica și a îmbina pagina de memorie, apoi modifică datele duplicate controlate și evaluează timpul de răspuns pentru a determina dacă lovitura a avut succes.

A fost propusă o metodă de atac pentru a determina de la distanță fragmentele de memorie de pe server

În timpul experimentelor, rata maximă de scurgere a informațiilor a fost de 34.41 octeți pe oră când atacați printr-o rețea globală și de 302.16 octeți pe oră când atacați printr-o rețea locală, ceea ce este mai rapid decât alte metode de extragere a datelor prin canale terțe (de exemplu, într-un atac NetSpectre, rata de transfer de date este de 7.5 octeți la ora unu).

Au fost propuse trei opțiuni de atac de lucru. Prima opțiune vă permite să determinați datele din memoria serverului web care utilizează Memcached. Atacul se rezumă la încărcarea anumitor seturi de date în stocarea Memcached, ștergerea blocului deduplicat, rescrierea aceluiași element și crearea unei condiții pentru ca copierea COW să aibă loc prin modificarea conținutului blocului. În timpul experimentului cu Memcached, a fost posibil să se determine în 166.51 secunde versiunea libc instalată pe un sistem care rulează într-o mașină virtuală.

A doua opțiune a făcut posibilă aflarea conținutului înregistrărilor din SGBD-ul MariaDB, atunci când se folosește stocarea InnoDB, prin recrearea conținutului octet cu octet. Atacul este efectuat prin trimiterea de solicitări special modificate, rezultând nepotriviri de un singur octet în paginile de memorie și analizând timpul de răspuns pentru a determina dacă presupunerea despre conținutul octetului a fost corectă. Rata unei astfel de scurgeri este scăzută și se ridică la 1.5 octeți pe oră atunci când se atacă dintr-o rețea locală. Avantajul metodei este că poate fi folosită pentru a recupera conținutul de memorie necunoscut.

A treia opțiune a făcut posibilă ocolirea completă a mecanismului de protecție KASLR în 4 minute și obținerea de informații despre offset-ul memoriei imaginii kernel-ului mașinii virtuale, într-o situație în care adresa offset este într-o pagină de memorie în care alte date nu se modifică. Atacul a fost efectuat de la o gazdă situată la 14 hop de sistemul atacat. Exemple de cod pentru implementarea atacurilor prezentate sunt promise a fi publicate pe GitHub.

Sursa: opennet.ru

Adauga un comentariu