Zraniteľnosť v cryptsetup, ktorá vám umožňuje zakázať šifrovanie v oddieloch LUKS2

V balíku Cryptsetup, ktorý sa používa na šifrovanie diskových oddielov v systéme Linux, bola identifikovaná chyba zabezpečenia (CVE-2021-4122), ktorá umožňuje deaktiváciu šifrovania na oddieloch vo formáte LUKS2 (Linux Unified Key Setup) úpravou metadát. Na zneužitie zraniteľnosti musí mať útočník fyzický prístup k šifrovaným médiám, t.j. Metóda má zmysel hlavne pri napadnutí šifrovaných externých úložných zariadení, ako sú napríklad Flash disky, ku ktorým má útočník prístup, no nepozná heslo na dešifrovanie dát.

Útok je použiteľný iba pre formát LUKS2 a je spojený s manipuláciou s metadátami zodpovednými za aktiváciu rozšírenia „online reencryption“, ktoré umožňuje v prípade potreby zmeniť prístupový kľúč spustiť proces opätovného šifrovania údajov za behu. bez zastavenia práce s oddielom. Keďže proces dešifrovania a šifrovania pomocou nového kľúča trvá veľa času, „online opätovné šifrovanie“ umožňuje neprerušovať prácu s oddielom a vykonávať opätovné šifrovanie na pozadí, čím sa postupne prešifrujú údaje z jedného kľúča na druhý. . Je tiež možné vybrať prázdny cieľový kľúč, ktorý umožňuje previesť sekciu do dešifrovanej podoby.

Útočník môže vykonať zmeny v metadátach LUKS2, ktoré simulujú prerušenie operácie dešifrovania v dôsledku zlyhania a dosiahnuť dešifrovanie časti oddielu po aktivácii a použití upravenej jednotky vlastníkom. V tomto prípade používateľ, ktorý pripojil upravený disk a odomkol ho správnym heslom, nedostane žiadne upozornenie na proces obnovenia prerušenej operácie opätovného šifrovania a o priebehu tejto operácie sa môže dozvedieť iba pomocou „luks Dump“ príkaz. Množstvo dát, ktoré môže útočník dešifrovať, závisí od veľkosti hlavičky LUKS2, ale pri predvolenej veľkosti (16 MiB) môže presiahnuť 3 GB.

Problém je spôsobený skutočnosťou, že hoci opätovné zašifrovanie vyžaduje výpočet a overenie hash nového a starého kľúča, hash nie je potrebný na začatie dešifrovania, ak nový stav znamená absenciu kľúča otvoreného textu na šifrovanie. Navyše, metadáta LUKS2, ktoré špecifikujú šifrovací algoritmus, nie sú chránené pred úpravou, ak sa dostanú do rúk útočníka. Na zablokovanie zraniteľnosti pridali vývojári do LUKS2 dodatočnú ochranu metadát, pre ktorú sa teraz kontroluje dodatočný hash vypočítaný na základe známych kľúčov a obsahu metadát, t.j. útočník už nemôže tajne meniť metadáta bez toho, aby poznal dešifrovacie heslo.

Typický scenár útoku vyžaduje, aby sa útočníkovi podarilo dostať do rúk disk viackrát. Po prvé, útočník, ktorý nepozná prístupové heslo, vykoná zmeny v oblasti metadát, čím spustí dešifrovanie časti údajov pri ďalšej aktivácii disku. Disk sa potom vráti na svoje miesto a útočník čaká, kým ho používateľ pripojí zadaním hesla. Po aktivácii zariadenia používateľom sa spustí proces opätovného šifrovania na pozadí, počas ktorého sa časť zašifrovaných údajov nahradí dešifrovanými údajmi. Ďalej, ak sa útočníkovi podarí znova dostať do rúk zariadenie, niektoré údaje na disku budú v dešifrovanej forme.

Problém bol identifikovaný správcom projektu cryptsetup a opravený v aktualizáciách cryptsetup 2.4.3 a 2.3.7. Stav aktualizácií generovaných na odstránenie problému v distribúciách je možné sledovať na týchto stránkach: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Zraniteľnosť sa objavuje len od vydania cryptsetup 2.2.0, ktorý zaviedol podporu pre operáciu „online reencryption“. Ako riešenie ochrany možno použiť spustenie s možnosťou „--disable-luks2-reencryption“.

Zdroj: opennet.ru

Pridať komentár