Vulnerabilidades no GRUB2 que permitem ignorar a inicialização segura UEFI

2 vulnerabilidades foram corrigidas no bootloader GRUB7 que permitem ignorar o mecanismo UEFI Secure Boot e executar código não verificado, por exemplo, introduzir malware em execução no bootloader ou no nível do kernel. Além disso, há uma vulnerabilidade na camada shim, que também permite ignorar o UEFI Secure Boot. O grupo de vulnerabilidades recebeu o codinome Boothole 3, semelhante a problemas semelhantes identificados anteriormente no bootloader.

Para solucionar problemas no GRUB2 e shim, as distribuições poderão usar o mecanismo SBAT (UEFI Secure Boot Advanced Targeting), que é compatível com GRUB2, shim e fwupd. O SBAT foi desenvolvido em conjunto com a Microsoft e envolve a adição de metadados adicionais aos arquivos executáveis ​​dos componentes UEFI, que incluem informações sobre fabricante, produto, componente e versão. Os metadados especificados são certificados com assinatura digital e podem ser incluídos separadamente nas listas de componentes permitidos ou proibidos para UEFI Secure Boot.

A maioria das distribuições Linux usa uma pequena camada de shim assinada digitalmente pela Microsoft para inicialização verificada no modo UEFI Secure Boot. Essa camada verifica o GRUB2 com seu próprio certificado, o que permite que os desenvolvedores de distribuição não tenham todos os kernels e atualizações do GRUB certificados pela Microsoft. Vulnerabilidades no GRUB2 permitem que você execute seu código no estágio após a verificação de correção bem-sucedida, mas antes de carregar o sistema operacional, entrando na cadeia de confiança quando o modo de inicialização segura está ativo e obtendo controle total sobre o processo de inicialização adicional, incluindo carregar outro sistema operacional, modificar os componentes do sistema operacional e ignorar a proteção de bloqueio.

Para corrigir problemas no bootloader, as distribuições terão que criar novas assinaturas digitais internas e atualizar instaladores, bootloaders, pacotes de kernel, firmware fwupd e camada de shim. Antes da introdução do SBAT, a atualização da lista de certificados revogados (dbx, UEFI Revocation List) era um pré-requisito para bloquear completamente a vulnerabilidade, uma vez que um invasor, independentemente do sistema operacional usado, poderia usar mídia inicializável com uma versão antiga e vulnerável do GRUB2, certificado por uma assinatura digital, para comprometer o UEFI Secure Boot.

Em vez de revogar uma assinatura, o SBAT permite bloquear seu uso para números de versão de componentes individuais sem precisar revogar as chaves para inicialização segura. O bloqueio de vulnerabilidades via SBAT não requer o uso de uma lista de revogação de certificados UEFI (dbx), mas é realizado no nível de substituição da chave interna para gerar assinaturas e atualizar GRUB2, shim e outros artefatos de inicialização fornecidos pelas distribuições. Atualmente, o suporte SBAT já foi adicionado às distribuições Linux mais populares.

Vulnerabilidades identificadas:

  • CVE-2021-3696, CVE-2021-3695 são buffer overflows baseados em heap ao processar imagens PNG especialmente projetadas, que podem teoricamente ser usadas para executar código invasor e ignorar a inicialização segura UEFI. Observa-se que o problema é difícil de explorar, pois a criação de um exploit funcional requer a consideração de um grande número de fatores e a disponibilidade de informações sobre o layout da memória.
  • CVE-2021-3697 – Um estouro de buffer no código de processamento de imagem JPEG. Explorar o problema requer conhecimento do layout da memória e está aproximadamente no mesmo nível de complexidade que o problema do PNG (CVSS 7.5).
  • CVE-2022-28733 - Um estouro de número inteiro na função grub_net_recv_ip4_packets() permite que o parâmetro rsm->total_len seja afetado pelo envio de um pacote IP especialmente criado. O problema está marcado como o mais perigoso das vulnerabilidades apresentadas (CVSS 8.1). Se explorada com sucesso, a vulnerabilidade permite que os dados sejam gravados além do limite do buffer, alocando um tamanho de memória deliberadamente menor.
  • CVE-2022-28734 – Estouro de buffer de byte único ao processar cabeçalhos HTTP removidos. Um problema pode causar corrupção de metadados do GRUB2 (gravação de um byte nulo logo após o final do buffer) ao analisar solicitações HTTP especialmente criadas.
  • CVE-2022-28735 Um problema no verificador shim_lock permite o carregamento de arquivos não-kernel. A vulnerabilidade pode ser usada para carregar módulos de kernel não assinados ou código não verificado no modo UEFI Secure Boot.
  • CVE-2022-28736 Um acesso à memória já liberado na função grub_cmd_chainloader() por meio de uma nova execução do comando chainloader, usado para inicializar sistemas operacionais não suportados pelo GRUB2. A exploração pode resultar na execução do código do invasor se o invasor for capaz de determinar a alocação de memória no GRUB2
  • CVE-2022-28737 – Um buffer overflow na camada shim ocorre na função handle_image() ao carregar e executar imagens EFI criadas.

Fonte: opennet.ru

Adicionar um comentário