Uma vulnerabilidade no cryptsetup que permite desabilitar a criptografia em partições LUKS2

Foi identificada uma vulnerabilidade (CVE-2021-4122) no pacote Cryptsetup, usado para criptografar partições de disco no Linux, que permite desabilitar a criptografia em partições no formato LUKS2 (Linux Unified Key Setup) modificando metadados. Para explorar a vulnerabilidade, o invasor deve ter acesso físico à mídia criptografada, ou seja, O método faz sentido principalmente para atacar dispositivos de armazenamento externo criptografados, como pen drives, aos quais o invasor tem acesso, mas não sabe a senha para descriptografar os dados.

O ataque é aplicável apenas ao formato LUKS2 e está associado à manipulação de metadados responsáveis ​​pela ativação da extensão “reencriptação online”, que permite, caso seja necessário alterar a chave de acesso, iniciar o processo de reencriptação de dados em tempo real sem parar de trabalhar com a partição. Como o processo de descriptografia e criptografia com uma nova chave leva muito tempo, a “recriptografia online” permite não interromper o trabalho com a partição e realizar a recriptografia em segundo plano, recriptografando gradativamente os dados de uma chave para outra . Também é possível selecionar uma chave de destino vazia, o que permite converter a seção em um formato descriptografado.

Um invasor pode fazer alterações nos metadados do LUKS2 que simulam uma anulação da operação de descriptografia como resultado de uma falha e conseguir a descriptografia de parte da partição após a ativação e uso da unidade modificada pelo proprietário. Neste caso, o usuário que conectou o drive modificado e o desbloqueou com a senha correta não recebe nenhum aviso sobre o processo de restauração da operação de recriptografia interrompida e só pode saber o andamento desta operação através do “luks Dump” comando. A quantidade de dados que um invasor pode descriptografar depende do tamanho do cabeçalho LUKS2, mas no tamanho padrão (16 MiB) pode exceder 3 GB.

O problema é causado pelo fato de que, embora a nova criptografia exija o cálculo e a verificação dos hashes das chaves novas e antigas, um hash não é necessário para iniciar a descriptografia se o novo estado implicar na ausência de uma chave de texto simples para criptografia. Além disso, os metadados LUKS2, que especificam o algoritmo de criptografia, não estão protegidos contra modificação se caírem nas mãos de um invasor. Para bloquear a vulnerabilidade, os desenvolvedores adicionaram proteção adicional para metadados ao LUKS2, para o qual um hash adicional é agora verificado, calculado com base em chaves conhecidas e conteúdos de metadados, ou seja, um invasor não pode mais alterar sub-repticiamente os metadados sem saber a senha de descriptografia.

Um cenário típico de ataque exige que o invasor consiga colocar as mãos na unidade várias vezes. Primeiramente, um invasor que não conhece a senha de acesso faz alterações na área de metadados, acionando a descriptografia de parte dos dados na próxima vez que o drive for ativado. A unidade é então devolvida ao seu lugar e o invasor espera até que o usuário a conecte digitando uma senha. Quando o dispositivo é ativado pelo usuário, um processo de nova criptografia em segundo plano é iniciado, durante o qual parte dos dados criptografados é substituída por dados descriptografados. Além disso, se o invasor conseguir colocar as mãos no dispositivo novamente, alguns dos dados na unidade estarão em formato descriptografado.

O problema foi identificado pelo mantenedor do projeto cryptsetup e corrigido nas atualizações cryptsetup 2.4.3 e 2.3.7. O status das atualizações sendo geradas para corrigir o problema nas distribuições pode ser acompanhado nestas páginas: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. A vulnerabilidade só aparece desde o lançamento do cryptsetup 2.2.0, que introduziu suporte para a operação de “recriptografia online”. Como solução alternativa para proteção, pode ser usada a inicialização com a opção “--disable-luks2-reencryption”.

Fonte: opennet.ru

Adicionar um comentário