Matthew Garrett, um renomado desenvolvedor do kernel Linux e premiado pelo Open Source Initiative, explicou recentemente o funcionamento do SBAT (Secure Boot Advanced Targeting), um mecanismo projetado para mitigar vulnerabilidades no carregador de inicialização sem revogar assinaturas digitais. Esse sistema foi crucial em um recente incidente envolvendo uma atualização do Windows que interrompeu a inicialização de algumas distribuições Linux instaladas em modo dual boot em sistemas com UEFI Secure Boot habilitado.
Garrett explicou que o problema surgiu devido à combinação de uma atualização da Microsoft que não foi suficientemente testada e distribuída para sistemas onde não deveria ser aplicada, e o fato de que alguns desenvolvedores de distribuições Linux não atualizaram o carregador GRUB ou o número de geração do SBAT quando vulnerabilidades foram identificadas no GRUB.
O SBAT foi criado para evitar a necessidade de revogar uma grande quantidade de arquivos binários assinados quando uma vulnerabilidade é descoberta. Em vez disso, ele permite que o sistema defina um “número de geração” de segurança, que é incluído nos arquivos binários assinados. Quando uma vulnerabilidade é corrigida, esse número é incrementado, e uma atualização pode ser lançada para garantir que apenas componentes com um número de geração igual ou superior ao especificado sejam confiáveis.
A situação se tornou problemática quando a Microsoft lançou uma atualização do Windows que informava ao sistema para não confiar em versões do GRUB com um número de geração abaixo de um certo nível, devido a vulnerabilidades que poderiam comprometer a cadeia de inicialização segura do Windows. Infelizmente, alguns sistemas de dual boot aplicaram essa atualização, resultando na incapacidade de inicializar o Linux.
Isso aconteceu porque alguns distribuidores de Linux não emitiram novas versões do GRUB com um número de geração atualizado, levando o carregador shim (que foi projetado para considerar as atualizações do SBAT) a recusar a inicialização do GRUB, apresentando a mensagem de erro “Algo deu muito errado”. O resultado foi que usuários finais se viram incapazes de inicializar seus sistemas, uma falha que Garrett atribui a múltiplos fatores.
Microsoft deveria ter realizado mais testes para garantir que o update não fosse aplicado em sistemas dual boot. Por outro lado, as distribuições Linux também deveriam ter atualizado seus carregadores GRUB e o número de geração do SBAT para impedir que o problema ocorresse.
No final das contas, Garrett, que participou da implementação inicial do mecanismo SBAT para Linux em 2012, reconhece a complexidade do problema e sugere que a responsabilidade é compartilhada entre as partes envolvidas. Ele ainda se oferece como um dos culpados, refletindo sobre as consequências inesperadas desse mecanismo de segurança, e se desculpa pelos transtornos causados aos usuários finais.