Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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-2020-25637-libvirt-double-free — Dupla Liberação | Kitploit
Ferramentas/GitHubGitHub/brahmiboudjema/cve-2020-25637-libvirt-double-free
Análise de VulnerabilidadesExploraçãoDepuradoresAprendizado e EducaçãoExploração de BináriosLabs e Prática
GitHubbrahmiboudjema/cve-2020-25637-libvirt-double-free

CVE-2020-25637-libvirt-double-free

Dupla Liberação

Ver Repositório
4há 5 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

root@kitploit:~
 CVE-2020-25637 
                                    

root@kitploit:~
*** Descrição ***

Ocorreu um problema de dupla liberação de memória na API libvirt, em versões anteriores à versão 6.8.0, responsável por solicitar informações sobre as interfaces de rede de um domínio QEMU em execução. Esta falha afeta o driver de controle de acesso polkit. Mais especificamente, clientes que se conectam ao socket em modo leitura-escrita com permissões ACL limitadas poderiam usar esta falha para travar o daemon libvirt, resultando em uma negação de serviço, ou potencialmente elevar seus privilégios no sistema. A maior ameaça desta vulnerabilidade diz respeito à confidencialidade e integridade dos dados, bem como à disponibilidade do sistema.

A ameaça mais significativa desta vulnerabilidade é:

  • Confidencialidade
  • Integridade dos dados
  • Disponibilidade do sistema.

As pontuações da falha:

  • Uma falha moderada pela RedHat com média de 6.4

    • Vetor = Local
    • Complexidade = Baixa
    • Autenticação = Nenhuma
  • Uma falha moderada pela NVD com média de 6.7

    • Vetor = Local
    • Complexidade = Alta
    • Autenticação = Nenhuma

root@kitploit:~
*** Diferentes ferramentas e pré-requisitos importantes para explorar esta falha ***
    

  1. Instalação do qemu-kvm e libvirt :

Antes de tudo, é necessário verificar a compatibilidade do nosso sistema operacional. Basta executar este comando:

root@kitploit:~
 grep -E -c "vmx|svm" /proc/cpuinfo

Se o comando responder ok, você pode prosseguir com a instalação:

root@kitploit:~
sudo apt-get -y install qemu-kvm libvirt-bin virt-top outils-libguestfs virtinst bridge-utils

2) Instalação do vagrant :

Para instalar o vagrant, basta executar este comando:

root@kitploit:~
sudo apt -y install vagrant

Uma vez instalados o Vagrant e o KVM, você deve estar pronto para instalar um plugin libvirt para começar a gerenciar máquinas virtuais KVM usando o Vagrant.

root@kitploit:~
vagrant plugin install vagrant-libvirt

Você pode confirmar que o plugin foi instalado com:

root@kitploit:~
vagrant plugin list

3) Box vagrant (vagrant box) :

É possível usar um modelo pronto diretamente pelo vagrant. No nosso caso, usaremos uma imagem Ubuntu 20.04.

Para adicionar nossa imagem à box vagrant, basta executar este comando:

root@kitploit:~
vagrant box add generic / ubuntu1804 --provider = libvirt

Para consultar a lista de boxes presentes localmente:

root@kitploit:~
vagrant box list

4) Depuração

Duas possibilidades de depuração:

  • GDB, se a ferramenta não estiver disponível no seu sistema operacional, execute este comando:

    root@kitploit:~
    sudo apt-get install gdb
    
  • Valgrind, se a ferramenta não estiver disponível no seu sistema operacional, execute este comando:

    root@kitploit:~
    sudo apt-get install valgrind
    

root@kitploit:~
*** Execução do código ***

Iniciar uma VM via vagrant:

root@kitploit:~
vagrant up

Antes de tudo, instale a biblioteca:

root@kitploit:~
sudo apt-get install -y libvirt-dev

Compilação:

root@kitploit:~
gcc -g -Wall info1.c -o info1 -lvirt

Execução do código:

root@kitploit:~
./info1 qemu:///system vagrant-vms_ubuntu-01

Execução com depuração:

root@kitploit:~
valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=valgrind-out.txt ./info1 qemu:///system vagrant-vms_ubuntu-01

root@kitploit:~
*** Ativar a falha ***

Antes de ativar a falha, é essencial entender o funcionamento da função problemática no libvirt.

Suponha que um atacante possa provocar o uso de uma área de memória liberada através de qemuAgentGetInterfaces() do libvirt, precisamente na área de memória da variável ifname, para causar uma negação de serviço e, possivelmente, executar código.

  • Esta função processa uma lista de interfaces de um domínio em execução com seus endereços IP e MAC.
  • Em seguida, retorna o número de interfaces em caso de sucesso, ou -1 em caso de erro.

O momento esperado chegou.

Assim que o arquivo vagrant for iniciado, é necessário executar o código info1.c dentro de uma máquina virtual ela mesma iniciada pelo Qemu/KVM. Ou seja, fazer VMs dentro de uma VM, ou seja, executar o código na VM criada pelo vagrant.


root@kitploit:~
*** Correção desta falha ***

Basta passar a variável ifname para null na função qemuAgentGetInterfaces() do libvirt. Ou seja, a variável ifname deve ser liberada para cada interface.


root@kitploit:~
*** Demonstração ***

Você encontrará uma demonstração simples do problema (double free) no arquivo PowerPoint.


root@kitploit:~
*** Importante ***

O projeto não foi concluído até o final devido à complexidade da falha, ao hardware e à falta de tempo.

Baixar ferramenta