Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
edk2-security — Descobertas de segurança do EDK2 BrotliCustomDecompressLib — divulgação coordenada | Kitploit
Ferramentas/GitHubGitHub/lukr54/edk2-security
Segurança de Sistemas EmbarcadosScanners de VulnerabilidadesAnálise de VulnerabilidadesExploraçãoSegurança de Hardware e IoTPapers e PesquisaAnálise de FirmwareExploração de Binários
GitHublukr54/edk2-security

edk2-security

Descobertas de segurança do EDK2 BrotliCustomDecompressLib — divulgação coordenada

17há 1 diaAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório

EDK2 BrotliCustomDecompressLib — estouro de heap (não corrigido)

Um heap-buffer-overflow na própria camada de descompressão Brotli do EDK2 (MdeModulePkg/Library/BrotliCustomDecompressLib), presente desde 2017, não corrigido no HEAD em 2026-10-25. Confirmado por ASAN com uma prova de conceito e uma demonstração de corrupção controlada de ponta a ponta.

Resumo

O wrapper Brotli do EDK2 lê o tamanho da saída descomprimida de um cabeçalho de seção GUIDed controlado pelo atacante, trunca-o de UINT64 → UINT32 sem nenhuma proteção, e o passa ao núcleo DXE, que aloca um buffer desse tamanho. BrotliDecompressInternal então descomprime nesse buffer sem limite — ele executa até o fluxo Brotli terminar, escrevendo além da alocação.

Resultado: estouro de heap (primitiva de escrita) na fase DXE, antes da verificação do Secure Boot ser concluída. Um atacante que controla a imagem de firmware (flash, cápsula, ou ESP) pode sobrescrever objetos de pool adjacentes — ponteiros de função, flags de segurança, estruturas de protocolo — com bytes escolhidos.

Este é o irmão Brotli negligenciado do CVE-2021-28211 (o LZMA recebeu uma proteção >MAX_UINT32 em 2021; o Brotli nunca recebeu). Uma varredura de variantes confirma que o Brotli é o único descompressor do EDK2 que carece tanto da proteção de truncamento quanto de um limite de saída.

Código afetado

ArquivoO que faz
BrotliDecompress.c:238Converte o tamanho decodificado UINT64 para UINT32 — sem proteção MAX_UINT32
BrotliDecompress.c:118–157Descomprime no buffer de destino sem verificação de limite
GuidedSectionExtraction.cChama GetInfo e depois Decompress — confia no tamanho declarado
CoreSectionExtraction.c:1597Aloca o buffer de destino no tamanho declarado

Tudo em tianocore/edk2, MdeModulePkg/Library/BrotliCustomDecompressLib.

Evidências

ArtefatoDescrição
harness/edk2_brotli_overflow_poc.cProva de conceito ASAN: fluxo de 4096 bytes em buffer de 64 bytes
harness/asan_output.txtSaída ASAN: heap-buffer-overflow em BrotliDecompressInternal → memcpy
harness/edk2_brotli_overflow_demo.cDemonstração de ponta a ponta: corrupção controlada de objetos de pool adjacentes
harness/demo_output.txtSaída da demonstração: ponteiros de função sequestrados, Secure Boot desativado
harness/lvfs_brotli_scan.pyScanner de firmware LVFS (medição do raio de impacto)
harness/lvfs_scan_output.txtResultados da varredura: 0/200 imagens de firmware usam Brotli
evidence/Cópias dos arquivos-fonte vulneráveis do EDK2 no HEAD
FINDINGS.mdRelatório completo: referências de linha, busca de trabalhos anteriores, varredura de variantes, auditoria do LZMA

Raio de impacto

Estreito. Duas pesquisas independentes encontraram zero plataformas que usam seções GUIDed Brotli na prática:

  • Busca de código no GitHub (todos os repositórios públicos): 0 arquivos DSC de plataforma referenciam BrotliCustomDecompressLib. Toda ocorrência é o próprio MdeModulePkg.dsc.
  • Varredura de firmware LVFS (200 imagens em produção, 9 fornecedores): GUID Brotli encontrado em 0/200 imagens. LZMA (controle positivo) encontrado em 161/200.

O código vulnerável é distribuído na árvore do EDK2, mas é código morto hoje — adicionado em 2017, nunca adotado por IBVs ou OEMs. O bug é real e explorável em princípio; se a adoção do Brotli aumentar, ele se torna imediatamente alcançável.

Correção

Duas mudanças, correspondendo ao que o LZMA e o Tiano já possuem:

  1. Adicionar a proteção MAX_UINT32 a BrotliUefiDecompressGetInfo (BrotliDecompress.c:238): rejeitar tamanhos decodificados > MAX_UINT32, como LzmaDecompress.c:149 faz desde o CVE-2021-28211.
  2. Limitar a saída em BrotliDecompressInternal: rastrear os bytes escritos e parar em DestinationSize, como o descompressor Tiano faz com mOrigSize.

Reproduzir

Compile a PoC no Linux com libbrotli e GCC:

# ASAN proof (aborts at the overflow)
gcc -fsanitize=address -g -O1 -o poc harness/edk2_brotli_overflow_poc.c \
    -lbrotlienc -lbrotlidec
./poc

# Controlled-corruption demo (completes the overflow, shows the damage)
gcc -g -O1 -o demo harness/edk2_brotli_overflow_demo.c \
    -lbrotlienc -lbrotlidec
./demo

Arte anterior

  • CVE-2021-28211 — o irmão LZMA, corrigido em 2021. O caminho do Brotli foi negligenciado.
  • CVE-2026-111497 — um bug separado no decodificador Brotli upstream (9.2). O EDK2 também é afetado (issue #13378), mas essa é uma descoberta diferente.
  • Nenhum CVE, advisory, issue ou PR público aborda o overflow da cola do Brotli. Verificado: todos os 14 GHSAs do EDK2, todas as 29 issues do Brotli, todos os 28 PRs do Brotli, CVE/NVD, EDK2 HEAD.

Divulgação

Divulgação pública completa, 2026-10-26. Nenhum período de divulgação coordenada foi concedido ao TianoCore. O raio de impacto restrito (nenhum firmware em produção afetado) e o fato de que o bug irmão do LZMA é público desde 2021 embasaram esta decisão.

Autor

@lukr54

Baixar ferramenta