Unha vulnerabilidade en cryptsetup que permite desactivar o cifrado nas particións LUKS2

Identificouse unha vulnerabilidade (CVE-2021-4122) no paquete Cryptsetup, usado para cifrar particións de disco en Linux, que permite desactivar o cifrado en particións no formato LUKS2 (Linux Unified Key Setup) modificando os metadatos. Para explotar a vulnerabilidade, o atacante debe ter acceso físico aos medios cifrados, é dicir. O método ten sentido principalmente para atacar dispositivos de almacenamento externo cifrados, como unidades flash, aos que o atacante ten acceso pero non coñece o contrasinal para descifrar os datos.

O ataque é aplicable só para o formato LUKS2 e está asociado á manipulación de metadatos encargados de activar a extensión "recifrado en liña", que permite, se é necesario cambiar a clave de acceso, iniciar o proceso de reencriptación de datos sobre a marcha. sen deixar de traballar coa partición. Dado que o proceso de descifrado e cifrado cunha nova chave leva moito tempo, o "recifrado en liña" permite non interromper o traballo coa partición e realizar o cifrado de novo en segundo plano, volvendo cifrar os datos dunha chave a outra. . Tamén é posible seleccionar unha clave de destino baleira, o que lle permite converter a sección nun formulario descifrado.

Un atacante pode facer cambios nos metadatos de LUKS2 que simulan un aborto da operación de descifrado como resultado dun fallo e lograr o descifrado de parte da partición despois da activación e uso da unidade modificada polo propietario. Neste caso, o usuario que conectou a unidade modificada e a desbloqueou co contrasinal correcto non recibe ningún aviso sobre o proceso de restauración da operación de reencriptación interrompida e só pode coñecer o progreso desta operación mediante o "luks Dump". mando. A cantidade de datos que un atacante pode descifrar depende do tamaño da cabeceira LUKS2, pero no tamaño predeterminado (16 MiB) pode superar os 3 GB.

O problema é causado polo feito de que, aínda que o reencriptado require calcular e verificar os hash das claves novas e antigas, non é necesario un hash para comezar o descifrado se o novo estado implica a ausencia dunha clave de texto claro para o cifrado. Ademais, os metadatos LUKS2, que especifican o algoritmo de cifrado, non están protexidos contra a modificación se caen en mans dun atacante. Para bloquear a vulnerabilidade, os desenvolvedores engadiron protección adicional para os metadatos a LUKS2, para o que agora se comproba un hash adicional, calculado en función de claves coñecidas e contidos de metadatos, é dicir. un atacante xa non pode cambiar subrepticiamente os metadatos sen coñecer o contrasinal de descifrado.

Un escenario de ataque típico require que o atacante poida poñer as súas mans na unidade varias veces. En primeiro lugar, un atacante que descoñece o contrasinal de acceso fai cambios na área de metadatos, provocando o descifrado de parte dos datos a próxima vez que se active a unidade. Despois, a unidade volve ao seu lugar e o atacante agarda ata que o usuario a conéctese introducindo un contrasinal. Cando o usuario activa o dispositivo, iníciase un proceso de cifrado en segundo plano, durante o cal parte dos datos cifrados substitúense por datos descifrados. Ademais, se o atacante consegue volver poñer as mans no dispositivo, algúns dos datos da unidade estarán descifrados.

O problema foi identificado polo mantedor do proxecto cryptsetup e solucionado nas actualizacións de cryptsetup 2.4.3 e 2.3.7. O estado das actualizacións que se xeran para solucionar o problema nas distribucións pódese seguir nestas páxinas: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. A vulnerabilidade só aparece dende o lanzamento de cryptsetup 2.2.0, que introduciu soporte para a operación de "recifrado en liña". Como solución alternativa para a protección, pódese utilizar o inicio coa opción "--disable-luks2-reencryption".

Fonte: opennet.ru

Engadir un comentario