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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cve-2024-21980-poc — Exploit para CVE-2024-21980 que visa o firmware AMD SEV para descriptografar memória arbitrária de convidados SEV-SNP desativados via bypass de execução de buffer de comando. | Kitploit
Ferramentas/GitHubGitHub/freax13/cve-2024-21980-poc
Ferramentas de Criptografia/DescriptografiaAnálise de VulnerabilidadesExploraçãoSegurança de HardwareDesenvolvimento de PayloadsExploração de Binários
GitHubfreax13/cve-2024-21980-poc

cve-2024-21980-poc

Exploit para CVE-2024-21980 que visa o firmware AMD SEV para descriptografar memória arbitrária de convidados SEV-SNP desativados via bypass de execução de buffer de comando.

Ver Repositório
8147há 2 anosAinda 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

Vulnerabilidade no Firmware SEV

Este repositório contém um exploit para uma vulnerabilidade no firmware SEV. O exploit permite descriptografar memória arbitrária de um convidado SEV-SNP após ele ter sido descomissionado.

Testado na versão 1.55.16 (a mais recente no momento da escrita).

Causa Raiz

O firmware SEV possui uma tabela chamada master_handler_table contendo ponteiros de função para todos os comandos, com algumas propriedades adicionais relevantes para os comandos. Duas dessas propriedades adicionais são cmd_buf_type e snp_cmd_buf_enforcement. cmd_buf_type determina se o buffer de comando deve ser copiado para e/ou da memória do host. snp_cmd_buf_enforcement determina se essas operações de cópia devem estar sujeitas a verificações que confirmam se a memória que sustenta o buffer de comando está no estado FIRMWARE ou DEFAULT. Comandos para os quais cmd_buf_type é CMD_BUF_OUTPUT_ONLY, CMD_BUF_INPUT_AND_OUTPUT ou CMD_BUF_INPUT_AND_OUTPUT_ERROR devem ter snp_cmd_buf_enforcement definido como true. Caso contrário, a gravação da saída do comando poderia causar corrupção de memória dentro da área coberta pelo RMP. snp_cmd_buf_enforcement é true para todos esses comandos, com uma exceção - SEV_MCMD_ID_ATTESTATION: Este comando tem cmd_buf_type definido como CMD_BUF_INPUT_AND_OUTPUT_ERROR, mas também tem snp_cmd_buf_enforcement definido como false. Como resultado, é possível executar SEV_MCMD_ID_ATTESTATION com um buffer de comando apontando para memória coberta pelo RMP e fazer com que essa memória seja corrompida quando a saída for gravada de volta.

Não vejo por que SEV_MCMD_ID_ATTESTATION precisaria ser uma exceção; parece-me plausível que isso possa ser um erro de digitação/cópia e colagem.

Exploit

SEV_MCMD_ID_ATTESTATION grava apenas em um único campo length (4 bytes) no buffer de comando e, portanto, esses são os únicos bytes que podemos usar para corromper memória. SEV_MCMD_ID_ATTESTATION sempre grava o mesmo valor - 0x000000d0. Felizmente, não há requisitos de alinhamento no buffer de comando e, portanto, podemos deslocar o buffer de comando repetidamente para corromper uma faixa maior de memória contígua. Usaremos isso para corromper os primeiros 16 bytes de uma página de contexto de convidado com um padrão estático. Esses primeiros 16 bytes contêm a semente da chave UMC e, ao forçá-la para um valor estático, podemos forçar a chave de criptografia do convidado para um valor estático.

O exploit fornecido aqui é fortemente baseado no que forneci para SWPSIRT-2684/CVE-2023-31355.

Para explorar a vulnerabilidade, podemos executar os seguintes passos:

  1. Inicie um convidado SEV ou SEV-ES. Isso é necessário para SEV_MCMD_ID_ATTESTATION. Mantenha esse convidado em execução.
  2. Crie uma página de contexto de convidado no endereço 0x2000 para o convidado vítima. Qualquer outro endereço na área coberta pelo RMP também serviria, embora um endereço fixo seja útil para depuração.
  3. Use a vulnerabilidade para corromper a semente da chave UMC do convidado vítima.
  4. Ative a página de contexto do convidado vítima e inicie e execute o convidado vítima.
  5. Descomissione o convidado vítima.
  6. Crie uma página de contexto de convidado no endereço 0x2000 para o convidado atacante. Este deve ser o mesmo endereço usado no passo 1.
  7. Use a vulnerabilidade para corromper a semente da chave UMC do convidado atacante.
  8. Ative a página de contexto do convidado atacante e inicie com a flag de depuração habilitada.
  9. Atribua a memória do convidado vítima ao convidado atacante.
  10. Use o comando SNP_DBG_ENCRYPT para descriptografar a memória do convidado vítima usando a página de contexto do convidado atacante. Isso terá êxito porque o convidado vítima e o convidado atacante compartilham uma semente de chave UMC.

Impacto

O impacto aqui deve ser pelo menos o mesmo do SWPSIRT-2684. No momento, não está claro para mim se esse bug pode ser usado para descriptografar a memória de um convidado em execução antes de ele ser descomissionado.

Mitigação

snp_cmd_buf_enforcement deve ser definido como true para SEV_MCMD_ID_ATTESTATION.

Curiosamente, os patches de suporte ao host KVM do Linux não precisam ser atualizados, pois já listam SEV_CMD_ATTESTATION_REPORT em sev_cmd_buf_writable como um comando que exige que seu buffer de comando esteja no estado FIRMWARE. Alterações podem ou não ser necessárias para outros hipervisores.

Uso do PoC

Baixar ferramenta