Уязвимост в cryptsetup позволи да се деактивира криптирането на дялове LUKS2

Наскоро беше обявено, че е идентифицирана уязвимост (вече каталогизирана като CVE-2021-4122) в пакета Cryptsetup, който се използва за криптиране на дискови дялове в Linux.

Споменава се, че за да използва уязвимостта, нападателят трябва да има физически достъп до криптирания носител; т.е. методът е подходящ главно за атакуване на криптирани външни устройства, като например флаш памети, до които нападателят има достъп, но не знае паролата за декриптиране на данните.

Атаката е приложима само за формата LUKS2 и е свързана с манипулиране на метаданни, отговорни за активирането на разширението „онлайн рекриптиране“, което позволява, ако е необходимо, промяна на ключа за достъп и стартиране на процеса на рекриптиране на данни в движение, без да се спира работата с дяла.

Тъй като процесът на декриптиране и криптиране с нов ключ отнема много време, "онлайн повторното криптиране" ви позволява да не прекъсвате работата с дяла и да извършвате повторно криптиране във фонов режим, като постепенно прехвърляте данни от един ключ на друг. По-специално, възможно е да изберете празен целеви ключ, който ви позволява да преведете секцията в некриптирана форма.

Нападателят може да направи промени в метаданните LUKS2, които симулират прекратяване на операцията по декриптиране в резултат на неуспех и да постигне декриптиране на част от дяла след последващо активиране и използване на модифицираното устройство от собственика. В този случай потребителят, който е свързал модифицираното устройство и го е отключил с правилната парола, не получава никакво предупреждение за възстановяване на прекъсната операция за повторно криптиране и може да разбере хода на тази операция само с командата „luks Dump“ . Количеството данни, което атакуващият може да декриптира, зависи от размера на заглавката LUKS2, но с размер по подразбиране (16 MiB) може да надхвърли 3 GB.

Проблемът произтича от факта, че въпреки че операцията по повторно криптиране изисква изчисляване и проверка на хешовете на новия и стария ключ, хешът не е необходим за възстановяване на прекъснатия процес на декриптиране, ако новото състояние включва липсата на ключ за криптиране (открит текст).

Освен това, метаданните на LUKS2, които определят алгоритъма за криптиране, не са защитени от промяна, ако попаднат в ръцете на атакуващ. За да блокират тази уязвимост, разработчиците добавиха допълнителна защита на метаданните към LUKS2, която вече включва проверка на допълнителен хеш, изчислен въз основа на известни ключове и съдържание на метаданни. Това означава, че атакуващият вече не може тайно да променя метаданните, без да знае паролата за декриптиране.

Типичен сценарий на атака изисква нападателят да има възможност да осъществи многократен достъп до диска. Първо, нападателят, който не знае паролата за достъп, прави промени в областта с метаданни, които инициират декриптирането на някои от данните при следващото активиране на устройството.

След това устройството се връща на мястото си и нападателят изчаква, докато потребителят го свърже, като въведе парола. По време на активиране на устройството от потребителя се стартира процес на повторно криптиране във фонов режим, по време на който част от криптираните данни се заменят с декриптирани данни. Освен това, ако нападателят успее да се добере до устройството отново, част от данните на устройството ще бъдат декриптирани.

Проблемът беше идентифициран от поддържащия проекта cryptsetup и отстранен в актуализациите на cryptsetup 2.4.3 и 2.3.7.

Състоянието на актуализациите, адресиращи тази уязвимост в дистрибуциите, може да се проследи на тези страници: RHEL , SUSE , Fedora , Ubuntu , Arch . Уязвимостта се появява едва след пускането на cryptsetup 2.2.0, който въведе поддръжка за вградено повторно криптиране. Започването с опцията `--disable-luks2-reencryption` може да се използва като мярка за сигурност.

И накрая, ако се интересувате да научите повече за новините, можете да намерите подробностите на следния линк.


Добавяне като предпочитан източник в Google