
Engenharia reversa estática de uma imagem de BIOS GIGABYTE H510M K V2 (`H510MKV2.F3`): análise completa de extração de volumes de firmware UEFI do alocador de memória SMM Core da especificação PI e uma busca direcionada pelas quatro vulnerabilidades de corrupção de memória SMM que a GIGABYTE/Binarly divulgou em 2025 (CVE-2025-7026 CVE-2025-7027 CVE-2025-7028 CVE-2025-7029).
Reverse-engineering estática de uma imagem de BIOS GIGABYTE H510M K V2 (H510MKV2.F3): extração completa e análise dos volumes de firmware UEFI, do alocador de memória do SMM Core da especificação PI, e uma busca direcionada às quatro vulnerabilidades de corrupção de memória SMM divulgadas pela GIGABYTE/Binarly em 2025 (CVE-2025-7026, CVE-2025-7027, CVE-2025-7028, CVE-2025-7029).
Estado: 1 de 4 CVEs confirmada como presente (CVE-2025-7027). As outras 3 foram ativamente procuradas em todo o firmware acessível e não foram encontradas — consulte CVEs não confirmadas para ver exatamente o que isso significa e o que não significa.
Esta é uma pesquisa n-day, não uma divulgação de 0-day. Todas as quatro CVEs referidas aqui já foram divulgadas publicamente e corrigidas pela GIGABYTE (o firmware corrigido começou a ser distribuído em 2025-06-12), com CVEs atribuídas e documentadas pela Binarly e pelo CERT/CC antes de esta pesquisa começar. Nada neste repositório é uma descoberta de vulnerabilidade nova — é uma verificação independente de análise estática para determinar se as classes de bug anteriormente divulgadas e corrigidas estão presentes numa compilação de BIOS específica e publicamente descarregável.
| Placa | GIGABYTE H510M K V2 (H510MKV2) |
| Ficheiro de BIOS | H510MKV2.F3 |
| Tamanho do ficheiro | 16777216 bytes (16 MB) |
| Data do ficheiro | 2023-12-20 |
| MD5 | a9bca8aeb55061824af1c3eedfb5c846 |
| SHA-256 | 934a935e5faba8d2cea4e1d51e9edb6aed86b32f412d0da5bae602bd9fd8f9f3 |
| Chipset | Intel H510 |
| Patch do fornecedor disponível desde | 2025-06-12 (esta compilação é anterior a essa data em ~18 meses) |
uefi-firmware-parser) — 356 ficheiros FFS enumerados no volume SMM/DXE, 302 com uma imagem PE32/TE extraível.PiSmmCore (o SMM Core da especificação PI), confirmando e identificando o verdadeiro alocador de pool/páginas SMM (internals de SmmAllocatePool/SmmFreePool/SmmAllocatePages/SmmFreePages) através das suas assinaturas de guarda embutidas "sphd"/"tail" — uma correspondência exata com o MdeModulePkg/Core/PiSmmCore/Pool.c open-source do EDK2.GenericComponentSmmEntry: uma variável NVRAM (SetupXtuBufferAddress) é obtida via GetVariable() sem validação e usada diretamente como ponteiro de escrita acessível através do SW SMI 0xB2 — isto corresponde ponto por ponto à descrição pública da causa raiz da Binarly.uefi_firmware (uefi-firmware-parser -e) desempacotou recursivamente a imagem de BIOS: regiões do Intel Flash Descriptor → volumes de firmware → ficheiros FFS → secções, descomprimindo todos os volumes de firmware comprimidos com LZMA/Tiano que encontrou..ui (nome de apresentação do driver) e uma secção de imagem .pe/.te foram copiados como binários PE32+/TE autónomos nomeados <DriverName>__<GUID8>.<pe32|te>.ida-pro-mcp / idalib) com o descompilador Hex-Rays, uma base de dados por módulo. Apenas auto-análise + Hex-Rays; não havia assinaturas FLIRT nem bibliotecas de tipos EDK2 disponíveis neste ambiente (assinalado como limitação abaixo).A imagem de BIOS contém quatro regiões do Intel Flash Descriptor; apenas region-bios contém código GIGABYTE/OEM (region-me.fd, region-gbe.fd, region-pdr.fd são firmware do Intel Management Engine / GbE / descritor — componentes separados, fora do âmbito, não explorados).
Dentro de region-bios foram encontrados e extraídos quatro volumes de firmware:
| Volume (contentor GUID de FFS) | Conteúdo | Ficheiros extraídos |
|---|---|---|
file-9e21fd93-... → volume-ee4e5898-... | Volume principal de drivers DXE/SMM — todos os drivers Smm*, drivers DXE de plataforma | 302 |
file-f641ac56-... → volume-ee4e5898-... | Cópia duplicada/fase PEI do anterior (subconjunto mais pequeno: PiSmmCommunicationPei, IT8728FSmmFeaturesPei etc.) | 22 |
file-3417f275-... → volume-3417f275-... | Volume de arranque PEI/DXE inicial (DxeIpl, FspS3Notify ...) | 21 (2 com imagens) |
file-05ca020b-... → volume-05ca020b-... | Pequeno volume auxiliar sem imagens executáveis | 2 |
Os quatro foram extraídos e submetidos à pesquisa de marcadores (consulte CVEs não confirmadas).