În pachetul Cryptsetup, folosit pentru criptarea partițiilor de disc în Linux, a fost identificată o vulnerabilitate (CVE-2021-4122) care permite, prin modificarea metadatelor, dezactivarea criptării în partițiile în format LUKS2 (Linux Unified Key Setup). Pentru a exploata vulnerabilitatea, atacatorul trebuie să aibă acces fizic la suportul criptat, adică metoda are sens în principal pentru atacuri asupra unităților externe criptate, cum ar fi unitățile Flash, la care infractorul are acces, dar nu cunoaște parola pentru decriptarea datelor.
Atacul este aplicabil doar pentru formatul LUKS2 și este legat de manipularea metadatelor responsabile pentru activarea extinderii „online reencryption”, care permite, la necesitatea schimbării cheii de acces, inițierea procesului de recriptare a datelor în timp real fără a opri lucrul cu partiția. Deoarece procesul de decriptare și criptare cu noua cheie durează mult timp, „online reencryption” oferă posibilitatea de a nu întrerupe lucrul cu partiția și de a efectua recriptarea în fundal, recriptând treptat datele de la o cheie la alta. De asemenea, există posibilitatea selectării unei chei țintă goale, ceea ce permite transformarea partiției în stare decriptată.
Atacatorul poate aduce modificări în metadatele LUKS2 care simulează o întrerupere neașteptată a operațiunii de decriptare ca urmare a unei erori și poate obține decriptarea unei părți a partiției după activarea și utilizarea suportului modificat de către proprietar. În acest caz, utilizatorul care a conectat suportul modificat și l-a deblocat cu parola corectă nu primește nicio avertizare cu privire la desfășurarea procesului de recuperare a operațiunii de recriptare întrerupte și poate afla despre desfășurarea acestei operațiuni doar cu ajutorul comenzii „luks Dump”. Volumul de date pe care atacatorul îl poate decripta depinde de dimensiunea antetului LUKS2, dar cu dimensiunea implicită (16 MiB) poate depăși 3 GB.
Problema este cauzată de faptul că, deși recriptarea necesită calculul și verificarea hash-urilor pentru noile și vechile chei, pentru începutul decriptării nu este necesar un hash dacă noul stadiu implică absența unei chei pentru criptare (plaintext). În plus, metadatele LUKS2, în care este specificat algoritmul de criptare, nu sunt protejate împotriva modificării în cazul în care ajung în mâinile unui atacator. Pentru a bloca vulnerabilitatea, dezvoltatorii au adăugat o protecție suplimentară metadatelor LUKS2, pentru care acum se verifică un hash suplimentar, calculat pe baza cheilor cunoscute și a conținutului metadatelor; adică atacatorul nu mai poate modifica neobservat metadatele fără a cunoaște parola pentru decriptare.
Scenariul tipic de atac necesită ca atacatorul să aibă posibilitatea de a obține de mai multe ori unitatea de stocare. La început, atacatorul care nu cunoaște parola de acces aduce modificări în zona de metadate, inițiind decriptarea unei părți a datelor la următoarea activare a unității. Apoi, unitatea este returnată la locul ei, iar atacatorul așteaptă ca utilizatorul să o conecteze, introducând parola. În timpul activării dispozitivului de către utilizator, un proces de fundal de recriptare este lansat, în cadrul căruia o parte din datele criptate este înlocuită cu date decriptate. Ulterior, dacă atacatorul reușește să obțină din nou dispozitivul, o parte din datele de pe unitate se va afla în format decriptat.
Problema a fost identificată de către întreținătorul proiectului cryptsetup și a fost rezolvată în actualizările cryptsetup 2.4.3 și 2.3.7. Starea formării actualizărilor care corectează problema în distribuții poate fi urmărită pe aceste pagini: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Vulnerabilitatea apare doar începând cu lansarea cryptsetup 2.2.0, care a introdus suport pentru operațiunea „online reencryption”. Ca soluție temporară, se poate utiliza pornirea cu opțiunea „--disable-luks2-reencryption.”
Sursa: opennet.ro
