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
CVE-2022-34301 — Demonstra o bypass do Secure Boot da CVE-2022-34301 através do UEFI Shell assinado pela Eurosoft (esdiags.efi), utilizando o comando mm para anular o gSecurity2 e carregar aplicações UEFI não assinadas. | Kitploit
Ferramentas/GitHubGitHub/themalwareguardian/cve-2022-34301
Mecanismos de PersistênciaAnálise de VulnerabilidadesExploraçãoSegurança de HardwareAprendizado e EducaçãoAnálise de FirmwareExploração de Binários
GitHub

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 →
themalwareguardian/cve-2022-34301

CVE-2022-34301

Demonstra o bypass do Secure Boot da CVE-2022-34301 através do UEFI Shell assinado pela Eurosoft (esdiags.efi), utilizando o comando mm para anular o gSecurity2 e carregar aplicações UEFI não assinadas.

Ver Repositório
120há 20 diasAinda não revisado
Compartilhar

🕷️ CVE-2022-34301 - Vulnerabilidade do Boot Loader Eurosoft

Eurosoft Pc-Check UEFI Diagnostics Shell - Bring Your Own Vulnerable UEFI Application (BYOVUA) - Bypass do Secure Boot via UEFI Shell assinado e corrupção do gSecurity2.




📑 Índice

  • Visão Geral
  • Contexto
    • Bring Your Own Vulnerable UEFI Application
    • O Shell Assinado
    • A Vulnerabilidade
    • O Comando mm
    • gSecurity2 e o Security Architectural Protocol
    • Paralelo com Kernel BYOVD
  • Como Funciona
    • Fase 1 - Inicializar o Shell Assinado
    • Fase 2 - Enumerar Handles do Protocolo Security2
    • Fase 3 - Localizar gSecurity2 na Memória
    • Fase 4 - Anular gSecurity2
    • Fase 5 - Carregar Aplicações UEFI Não Assinadas
    • Fase 6 - Persistência via startup.nsh
    • Extra - Processo de Descoberta
  • Exploit
  • Configuração do Laboratório
  • Referências



Visão Geral

Este repositório demonstra a técnica BYOVUA (Bring Your Own Vulnerable UEFI Application) explorando a CVE-2022-34301, uma vulnerabilidade de bypass do Secure Boot no ambiente de diagnóstico UEFI Eurosoft Pc-Check.

Neste caso, o componente confiado pelo Secure Boot é o esdiags.efi, um UEFI Shell distribuído como parte do produto de diagnóstico de hardware UEFI Pc-Check da Eurosoft, assinado por uma cadeia de certificados confiada pela Microsoft UEFI Third Party Certificate Authority. Uma vez executado, este shell expõe o comando mm (memory modify) e, portanto, fornece capacidades de leitura e escrita arbitrária de memória durante a fase de boot pré-SO.

Esta primitiva pode então ser usada para localizar e anular o ponteiro global gSecurity2 no núcleo DXE. Como resultado, a verificação subsequente de imagens UEFI é desativada, permitindo que aplicações UEFI não assinadas, bootkits, sejam carregadas apesar do Secure Boot estar ativado.




Contexto


Bring Your Own Vulnerable UEFI Application

BYOVUA é o equivalente UEFI da técnica BYOVD (Bring Your Own Vulnerable Driver) usada ao nível do kernel. Em vez de trazer um driver de kernel assinado com uma vulnerabilidade, o atacante traz uma aplicação UEFI assinada - neste caso, um UEFI Shell completo - que contém funcionalidades capazes de comprometer o Secure Boot.

Como a aplicação é assinada com uma cadeia de certificados confiada pelo Secure Boot, é aceite sem questionar, tornando-se confiável em qualquer sistema que inclua a Microsoft UEFI Third Party Certificate Authority na sua base de dados Secure Boot (db) - o que é praticamente todos os PCs com capacidade UEFI enviados na última década. Uma vez em execução, os seus comandos incorporados fornecem ao atacante acesso direto ao hardware e à memória que opera antes do sistema operativo carregar, num ambiente onde os controlos de segurança modernos (ASLR, DEP, proteções do kernel) simplesmente não existem.


O Shell Assinado

esdiags.efi é um UEFI Shell distribuído como parte do Eurosoft Pc-Check UEFI, um produto de diagnóstico de hardware pré-boot usado por fabricantes de PCs, organizações de serviço e equipas de TI para testes de sistemas bare-metal.

PropriedadeValor
FicheiroEFI/Boot/Bootx64.efi (Microsoft) -> EFI/Boot/esdiags.efi (Shell)
FornecedorEurosoft (UK) Ltd
CVECVE-2022-34301
AssinaturaMicrosoft Corporation UEFI CA 2011 (Third Party)
DescobertaEclypsium (Mickey Shkatov, Jesse Michael) - Agosto 2022
ApresentaçãoDEF CON 30 - "One Bootloader to Load Them All"
RevogaçãoAdicionado ao DBX via Microsoft KB5012170 (Agosto 2022)

A Vulnerabilidade

A vulnerabilidade não é um bug - é uma falha de design. Os UEFI Shells são ferramentas de diagnóstico legítimas que nunca foram concebidas para serem executadas em ambientes Secure Boot. No entanto, ao assiná-los com um certificado confiado pela Microsoft e distribuí-los como parte de produtos comerciais, os fornecedores criaram inadvertidamente um bypass assinado para o Secure Boot.

A questão central: um binário assinado que é confiado pelo Secure Boot fornece capacidades irrestritas de leitura/escrita de memória através dos seus comandos incorporados. Esta combinação quebra todo o modelo de confiança do Secure Boot.


O Comando mm

O comando mm (memory modify) é um comando incorporado padrão do UEFI Shell que fornece acesso direto de leitura e escrita à memória do sistema. Está documentado na UEFI Shell Specification (Secção 5.3).``` MM Address [Value] [-w 1|2|4|8] [-MEM | -MMIO | -IO | -PCI | -PCIE] [-n]

| Parâmetro | Descrição |
|-----------|-------------|
| `Address` | Endereço de memória de destino |
| `Value` | Valor a escrever (omitir para somente leitura) |
| `-w` | Largura: 1, 2, 4 ou 8 bytes |
| `-MEM` | Acesso à memória do sistema |
| `-MMIO` | I/O mapeado em memória |
| `-IO` | Acesso à porta de I/O |
| `-n` | Não interativo (sem prompt para o próximo endereço) |

---

<div id='gsecurity2'/>

### ***gSecurity2 e o Security Architectural Protocol***

A verificação de imagem do Secure Boot em UEFI é imposta através dos [Security Architectural Protocols](https://uefi.org/specs/PI/1.8/V2_DXE_Architectural_Protocols.html#security-architectural-protocols), definidos na Especificação UEFI Platform Initialization (PI).

O núcleo DXE (DxeMain) mantém um ponteiro global chamado [`gSecurity2`](https://github.com/tianocore/edk2/blob/edk2-stable202608/MdeModulePkg/Core/Dxe/DxeMain.h#L252), que aponta para a estrutura `EFI_SECURITY2_ARCH_PROTOCOL`. Este protocolo contém um único ponteiro de função - `FileAuthenticationState` - que é chamado por `LoadImage()` sempre que uma imagem UEFI é carregada:```c
// EFI_SECURITY2_ARCH_PROTOCOL structure (PI Specification)
typedef struct _EFI_SECURITY2_ARCH_PROTOCOL {
	EFI_SECURITY_FILE_AUTHENTICATION_STATE FileAuthenticationState;
} EFI_SECURITY2_ARCH_PROTOCOL;

// GUID: 94AB2F58-1438-4EF1-9152-18941A3A0E68

Quando LoadImage() é chamado, o núcleo DXE verifica:```c if (gSecurity2 != NULL) { Status = gSecurity2->FileAuthenticationState(gSecurity2, DevicePath, FileBuffer, FileSize, BootPolicy ); if (EFI_ERROR(Status)) { // Image rejected - signature verification failed } }

Ao definir `gSecurity2 = NULL`, a verificação `if` falha e `FileAuthenticationState` nunca é chamada. A verificação de imagem é completamente ignorada - **O Secure Boot permanece "ativado", mas já não é aplicado**. Aplicações UEFI não assinadas podem então ser carregadas livremente.

Para uma compreensão técnica profunda desta técnica, incluindo uma aplicação UEFI criada especificamente para localizar e corrigir automaticamente o gSecurity2, consulte o projeto complementar: [Exploitation Technique - UEFI Secure Boot Bypass via gSecurity2 Corruption](https://github.com/TheMalwareGuardian/Exploitation-Technique-UEFI-SecureBoot-Bypass-gSecurity2-Corruption).

---

<div id='BYOVD'/>

### ***Paralelo com o BYOVD do Kernel***
Baixar ferramenta