Уязвимост в cryptsetup, позволяваща да деактивира шифрирането в LUKS2-раздели

В пакета Cryptsetup, използван за шифриране на дискови раздели в Linux, е открита уязвимост (CVE-2021-4122), която позволява чрез модификация на метаданните да се деактивира шифрирането в разделите с формат LUKS2 (Linux Unified Key Setup). За експлоатацията на уязвимостта атакуващият трябва да има физически достъп до шифрования носител, т.е. методът е значим основно за атака на шифровани външни устройства, като Flash-дискове, до които злонамереният потребител има достъп, но не знае паролата за декодиране на данните.

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

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

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

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

Проблемата е идентифицирана от мейнтейнера на проекта cryptsetup и е отстранена в актуализациите cryptsetup 2.4.3 и 2.3.7. Състоянието на формирането на актуализации с отстранена проблема в дистрибутивите може да се проследи на следните страници: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Уязвимостта се проявява само от версия cryptsetup 2.2.0, в която е добавена поддръжката на операцията „online reencryption“. Като обходен маршрут за защита може да се използва стартиране с опцията „—disable-luks2-reencryption“.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster