Ranljivost v cryptsetup, ki vam omogoča, da onemogočite šifriranje v particijah LUKS2

V paketu Cryptsetup, ki se uporablja za šifriranje diskovnih particij v Linuxu, je bila ugotovljena ranljivost (CVE-2021-4122), ki omogoča onemogočanje šifriranja na particijah v formatu LUKS2 (Linux Unified Key Setup) s spreminjanjem metapodatkov. Za izkoriščanje ranljivosti mora napadalec imeti fizični dostop do šifriranega medija, tj. Metoda je smiselna predvsem za napad na šifrirane zunanje pomnilniške naprave, kot so bliskovni pogoni, do katerih ima napadalec dostop, vendar ne pozna gesla za dešifriranje podatkov.

Napad je uporaben samo za format LUKS2 in je povezan z manipulacijo metapodatkov, ki so odgovorni za aktiviranje razširitve »online reencryption«, ki omogoča, da se v primeru, da je treba spremeniti ključ za dostop, sproži postopek ponovnega šifriranja podatkov. brez prekinitve dela s particijo. Ker proces dešifriranja in šifriranja z novim ključem traja veliko časa, »spletno ponovno šifriranje« omogoča, da ne prekinete dela s particijo in izvedete ponovno šifriranje v ozadju, postopoma znova šifrira podatke iz enega ključa v drugega . Možno je tudi izbrati prazen ciljni ključ, ki omogoča pretvorbo razdelka v dešifrirano obliko.

Napadalec lahko spremeni metapodatke LUKS2, ki simulirajo prekinitev operacije dešifriranja zaradi napake in dosežejo dešifriranje dela particije po aktivaciji in uporabi spremenjenega pogona s strani lastnika. V tem primeru uporabnik, ki je povezal spremenjeni pogon in ga odklenil s pravilnim geslom, ne prejme nobenega opozorila o postopku obnovitve prekinjene operacije ponovnega šifriranja in lahko le izve o napredku te operacije z uporabo "luks Dump" ukaz. Količina podatkov, ki jih lahko napadalec dešifrira, je odvisna od velikosti glave LUKS2, vendar pri privzeti velikosti (16 MiB) lahko preseže 3 GB.

Težavo povzroča dejstvo, da čeprav ponovno šifriranje zahteva izračun in preverjanje zgoščenih vrednosti novega in starega ključa, zgoščena vrednost ni potrebna za začetek dešifriranja, če novo stanje pomeni odsotnost ključa z navadnim besedilom za šifriranje. Poleg tega metapodatki LUKS2, ki določajo algoritem šifriranja, niso zaščiteni pred spreminjanjem, če padejo v roke napadalcu. Da bi blokirali ranljivost, so razvijalci v LUKS2 dodali dodatno zaščito za metapodatke, za katere se zdaj preverja dodatna zgoščena vrednost, izračunana na podlagi znanih ključev in vsebine metapodatkov, tj. napadalec ne more več prikrito spreminjati metapodatkov, ne da bi poznal geslo za dešifriranje.

Tipičen scenarij napada zahteva, da se lahko napadalec večkrat dokopa do pogona. Najprej napadalec, ki ne pozna gesla za dostop, spremeni področje metapodatkov, kar sproži dešifriranje dela podatkov ob naslednji aktivaciji pogona. Disk se nato vrne na svoje mesto in napadalec počaka, da ga uporabnik z vnosom gesla poveže. Ko uporabnik aktivira napravo, se sproži proces ponovnega šifriranja v ozadju, med katerim se del šifriranih podatkov nadomesti z dešifriranimi podatki. Nadalje, če se napadalec spet uspe dokopati do naprave, bodo nekateri podatki na pogonu v dešifrirani obliki.

Težavo je odkril vzdrževalec projekta cryptsetup in jo odpravil v posodobitvah cryptsetup 2.4.3 in 2.3.7. Stanje posodobitev, ustvarjenih za odpravo težave v distribucijah, lahko spremljate na teh straneh: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Ranljivost se pojavi šele od izdaje cryptsetup 2.2.0, ki je uvedel podporo za operacijo »ponovnega spletnega šifriranja«. Kot rešitev za zaščito lahko uporabite zagon z možnostjo »--disable-luks2-reencryption«.

Vir: opennet.ru

Dodaj komentar