#use wml::debian::template title="Vulnerabilidade do boot seguro UEFI no GRUB2 - 'BootHole'"

Os(As) desenvolvedores(as) no Debian e em outras comunidades Linux ficaram cientes recentemente de um problema severo no bootloader GRUB2 que permite que um malfeitor contorne completamente o boot seguro UEFI (UEFI Secure Boot). Os detalhes completos do problema estão descritos no alerta de segurança 4735 do Debian. O objetivo deste documento é explicar as consequências desta vulnerabilidade de segurança e apresentar os passos que foram tomados para remediá-la.

Contexto: o que é o boot seguro UEFI?

O boot seguro UEFI (UEFI Secure Boot - SB) é um mecanismo de verificação para garantir que o código executado por um firmware do UEFI do computador é confiável. Ele é projetado para proteger um sistema contra código malicioso sendo carregado e executado cedo no processo de boot, antes do sistema operacional ter sido carregado.

O SB funciona usando um checksum criptográfico e assinaturas. Cada programa que é carregado pelo firmware inclui uma assinatura e um checksum, e antes de permitir a execução, o firmware verificará se o programa é confiável pela validação do checksum e da assinatura. Quando o SB está habilitado em um sistema, qualquer tentativa de executar um programa não confiável não será permitida. Isto bloqueia códigos não esperados/não autorizados de rodarem no ambiente UEFI.

A maior parte do hardware X86 vem de fábrica com as chaves da Microsoft pré-carregadas. Isto significa que o firmware desses sistemas confiarão nos binários que foram assinados pela Microsoft. A maioria dos sistemas será enviada com o SB habilitado - eles não executarão qualquer código não assinado por padrão, mas é possível alterar a configuração do firmware para, ou desabilitar o SB, ou adicionar chaves de assinatura extras.

O Debian, como muitos outros sistemas operacionais baseados em Linux, usa um programa chamado shim para estender essa confiança do firmware para outros programas que nós precisamos que estejam seguros durante o boot inicial: o bootloader GRUB2, o kernel do Linux e ferramentas de atualização de firmware (fwupd e fwupdate).

Múltiplos bugs do GRUB2 encontrados

Infelizmente, um bug sério foi encontrado no código do bootloader GRUB2 que lê e analisa o arquivo de configuração dele (grub.cfg). Este bug quebra a cadeia de confiança; ao explorar esse bug, é possível romper com o ambiente seguro e carregar programas não assinados durante o boot inicial. Esta vulnerabilidade foi descoberta por pesquisadores(as) do Eclypsium e dado o nome de BootHole.

Em vez de somente corrigir este bug, os(as) desenvolvedores(as) foram demandados(as) a fazer uma auditoria profunda do código-fonte do GRUB2. Seria irresponsável corrigir uma grande falha sem também procurar outras! Um time de engenheiros(as) trabalhou por várias semanas para identificar e reparar uma gama de problemas adicionais. Nós encontramos alguns lugares nos quais alocações internas de memória poderiam estourar com entradas não esperadas, muitos outros lugares onde um estouro de inteiro em cálculos matemáticos poderia causar problemas, e alguns poucos lugares onde a memória poderia ser usada após ser liberada. Correções para tudo isso foram compartilhadas e testadas entre a comunidade.

Novamente, veja o alerta de segurança 4735 do Debian para uma lista completa de problemas encontrados.

Bugs do Linux também encontrados

Enquanto discutia-se as falhas do GRUB2, os(as) desenvolvedores(as) também falaram sobre dois desvios recentemente encontrados e corrigidos por Jason A. Donenfeld (zx2c4) (1, 2) nos quais o Linux também poderia permitir o desvio do boot seguro. Esses dois desvios permitem ao root que substitua tabelas ACPI em um sistema bloqueado quando isto não deveria ser permitido. Correções já foram lançadas para esses problemas.

Revogações de chave necessárias para corrigir a cadeia de boot seguro

O Debian e outros(as) fornecedores(as) de sistemas operacionais obviamente lançarão versões corrigidas do GRUB2 e do Linux. Entretanto, isto pode não ser uma correção completa para os problemas vistos aqui. Intervenientes maliciosos ainda serão capazes de usar versões mais antigas e vulneráveis para contornar o boot seguro.

Para impedir isso, o próximo passo será a Microsoft colocar na lista de bloqueio aqueles binários inseguros para que sejam barrados na execução sob o SB. Isto é alcançado usando a lista DBX, uma funcionalidade do projeto do boot seguro UEFI. Todas as distribuições Linux enviadas com cópias do shim assinadas pela Microsoft foram demandadas a fornecer detalhes dos binários ou chaves envolvidas para facilitar este processo. O arquivo da lista de revogação UEFI será atualizado para incluir esta informação. Em algum ponto no futuro, os sistemas começarão a usar aquela lista atualizada e recusarão a executar os binários vulneráveis sob o boot seguro.

A linha do tempo exata para que esta mudança seja implementada não está clara ainda. Os(As) fornecedores(as) de BIOS/UEFI incluirão a nova lista de revogação nas novas construções de firmware para novos hardwares em algum momento. Também a Microsoft talvez possa enviar atualizações para sistemas existentes via atualizações do Windows. Algumas distribuições Linux podem enviar atualizações através de seus próprios processos de atualizações de segurança. O Debian ainda não fez isso, mas nós estamos examinando a situação para o futuro.

Quais são os efeitos de revogação de chave?

A maior parte dos(as) fornecedores(as) são cautelosos(as) sobre aplicações automáticas de atualizações que revoguem as chaves usadas no boot seguro. Instalações existentes de software com SB habilitado podem, repentinamente, recusar o boot completamente, a menos que o(a) usuário(a) seja cuidadoso(a) em também instalar todas as necessárias atualizações de software. Sistemas Windows/Linux em dual boot podem repentinamente parar o boot do Linux. Mídias de instalação e live antigas também, é claro, falharão no boot, potencialmente fazendo com que seja mais difícil a recuperação de sistemas.

Existem duas maneiras óbvias de consertar um sistema como este que não inicializa:

Ambas podem parecer opções simples, mas cada uma pode consumir muito tempo para usuários(as) com múltiplos sistemas. Também esteja ciente de que, por projeto, habilitar e desabilitar o boot seguro são ações que necessitam de acesso direto à máquina. Normalmente, não é possível alterar essa configuração fora da configuração de firmware do computador. Máquinas de servidores remotos podem precisar de cuidado extra aqui, por essa mesma razão.

Devido a esses motivos, é altamente recomendado que todos(as) usuários(as) Debian sejam cautelosos(as) e instalem todas as atualizações recomendadas para seus sistemas tão logo quanto possível, para reduzir as chances de problemas no futuro.

Pacotes atualizados

Nota: sistemas executando o Debian 9 (stretch) e mais antigos não necessariamente receberão atualizações aqui, já que o Debian 10 (buster) foi o primeiro lançamento do Debian a incluir suporte para boot seguro UEFI.

Aqui, as versões assinadas de todos os pacotes foram atualizadas, mesmo que nenhuma outra alteração tenha sido necessária. O Debian teve que gerar uma nova chave/certificado de assinatura para seus próprios pacotes de boot seguro. O certificado antigo foi rotulado de Debian Secure Boot Signer (fingerprint f156d24f5d4e775da0e6a9111f074cfce701939d688c64dba093f97753434f2c); o novo certificado é o Debian Secure Boot Signer 2020 (3a91a54f9f46a720fe5bbd2390538ba557da0c2ed5286f5351fe04fff254ec31).

Há cinco pacotes-fonte no Debian que serão atualizados devido às alterações do boot seguro UEFI descritas aqui:

1. GRUB2

As versões atualizadas do pacote GRUB2 do Debian estão disponíveis agora através do repositório debian-security para o lançamento do Debian 10 estável (buster). Versões corrigidas logo estarão no repositório normal do Debian para as versões de desenvolvimento do Debian (instável (unstable) e teste (testing)).

2. Linux

As versões atualizadas dos pacotes linux do Debian estão disponíveis agora através do repositório buster-proposed-updates para o lançamento do Debian 10 estável (stable) (buster) e serão incluídas na versão pontual 10.5 que está por vir. Novos pacotes também estão no repositório do Debian para versões de desenvolvimento do Debian (instável (unstable) e teste (testing)). Nós também esperamos que pacotes corrigidos sejam enviados em breve para buster-backports.

3. Shim

Devido ao funcionamento específico da administração de chaves do boot seguro do Debian, o Debian não precisa revogar seus pacotes existentes do shim assinados pela Microsoft. Contudo, as versões assinadas dos pacotes shim-helper precisaram de reconstrução para usar a nova chave de assinatura.

As versões atualizadas dos pacotes shim do Debian estão disponíveis agora através do repositório buster-proposed-updates para o lançamento do Debian 10 estável (stable) (buster) e serão incluídas na versão pontual 10.5 que está por vir. Novos pacotes também estão no repositório do Debian para versões de desenvolvimento do Debian (instável (unstable) e teste (testing)).

4. Fwupdate

As versões atualizadas dos pacotes fwupdate do Debian estão disponíveis agora através do repositório buster-proposed-updates para o lançamento do Debian 10 estável (stable) (buster) e serão incluídas na versão pontual 10.5 que está por vir. O fwupdate já tinha sido removido da instável e da teste um tempo atrás, substituído por fwupd.

5. Fwupd

As versões atualizadas dos pacotes fwupd do Debian estão disponíveis agora através do repositório buster-proposed-updates para o lançamento do Debian 10 estável (stable) (buster) e serão incluídas na versão pontual 10.5 que está por vir. Novos pacotes também estão no repositório do Debian para versões de desenvolvimento do Debian (instável (unstable) e teste (testing)).

Lançamento pontual Debian 10.5 (buster), mídias de instalação e live atualizadas

Todas as correções descritas aqui estão marcadas para inclusão na versão pontual Debian 10.5 (buster), pronta para lançamento em 1 de agosto de 2020. A 10.5 seria, portanto, uma boa escolha para os(as) usuários(as) que procuram mídia do Debian para instalação e live. Imagens anteriores talvez não funcionem com boot seguro no futuro, assim que as revogações forem lançadas.

Mais informações

Muitas outras informações sobre a configuração do boot seguro do Debian estão no wiki do Debian - veja https://wiki.debian.org/SecureBoot.

Outras fontes (em inglês) sobre este tópico incluem: