Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2020-25637-libvirt-double-free — Doble liberación | Kitploit
Herramientas/GitHubGitHub/brahmiboudjema/cve-2020-25637-libvirt-double-free
Análisis de VulnerabilidadesExplotaciónDepuradoresAprendizaje y EducaciónExplotación de BinariosLabs y Práctica
GitHubbrahmiboudjema/cve-2020-25637-libvirt-double-free

CVE-2020-25637-libvirt-double-free

Doble liberación

Ver Repositorio
4hace 5 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

root@kitploit:~
 CVE-2020-25637 
                                    

root@kitploit:~
*** Descripción ***

Se produjo un problema de doble liberación de memoria en la API libvirt, en versiones anteriores a la versión 6.8.0, encargada de solicitar información sobre las interfaces de red de un dominio QEMU en ejecución. Esta falla afecta al controlador de control de acceso polkit. Específicamente, los clientes que se conectan al socket en modo lectura-escritura con permisos ACL limitados podrían usar esta falla para bloquear el demonio libvirt, provocando una denegación de servicio, o potencialmente aumentar sus privilegios en el sistema. La mayor amenaza de esta vulnerabilidad es para la confidencialidad e integridad de los datos, así como para la disponibilidad del sistema.

La amenaza más importante de esta vulnerabilidad es:

  • La confidencialidad
  • La integridad de los datos
  • La disponibilidad del sistema.

Puntuaciones de la falla:

  • Una falla moderada por RedHat con una puntuación media de 6.4

    • Vector = Local
    • Complejidad = Baja
    • Autenticación = Ninguna
  • Una falla moderada por NVD con una puntuación media de 6.7

    • Vector = Local
    • Complejidad = Alta
    • Autenticación = Ninguna

root@kitploit:~
*** Diferentes herramientas y requisitos importantes para explotar esta falla ***
    

  1. Instalación de qemu-kvm y libvirt:

Antes que nada, es necesario verificar la compatibilidad de nuestro sistema operativo, basta con ejecutar este comando:

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

Si el comando responde ok, puede proceder a la instalación:

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

2) Instalación de Vagrant:

Para instalar Vagrant, basta con ejecutar este comando:

root@kitploit:~
sudo apt -y install vagrant

Una vez que haya instalado Vagrant y KVM, debería estar listo para instalar un complemento libvirt para poder comenzar a gestionar las máquinas virtuales KVM usando Vagrant.

root@kitploit:~
vagrant plugin install vagrant-libvirt

Puede confirmar que el complemento se ha instalado:

root@kitploit:~
vagrant plugin list

3) Caja Vagrant (box vagrant):

Es posible usar una plantilla ya preparada directamente con Vagrant; en nuestro caso se usará una imagen de Ubuntu 20.04.

Para agregar nuestra imagen a la caja Vagrant, basta con ejecutar este comando:

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

Para consultar la lista de cajas presentes localmente:

root@kitploit:~
vagrant box list

4) Depuración

Dos posibilidades de depuración:

  • GDB: Si la herramienta no está disponible en su sistema operativo, ejecute este comando:

    root@kitploit:~
    sudo apt-get install gdb
    
  • Valgrind: Si la herramienta no está disponible en su sistema operativo, ejecute este comando:

    root@kitploit:~
    sudo apt-get install valgrind
    

root@kitploit:~
*** Ejecución del código ***

Iniciar una VM mediante Vagrant:

root@kitploit:~
vagrant up

Antes que nada, instalar la biblioteca:

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

Compilación:

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

Ejecución del código:

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

Ejecución con depuración:

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:~
*** Activar la falla ***

Antes de activar la falla, es primordial conocer el funcionamiento de la función que presenta el problema en libvirt.

Supongamos que un atacante puede provocar el uso de una zona de memoria liberada a través de qemuAgentGetInterfaces() de libvirt, precisamente en la zona de memoria de la variable ifname para causar una denegación de servicio y, eventualmente, ejecutar código.

  • Esta función procesa una lista de las interfaces de un dominio en ejecución con sus direcciones IP y MAC.
  • Luego devuelve el número de interfaces en caso de éxito, o -1 en caso de error.

El momento esperado ha llegado.

Una vez que el archivo Vagrant está en marcha, hay que ejecutar el código info1.c en una máquina virtual que a su vez está lanzada por Qemu/KVM. Por lo tanto, hacer VMs dentro de una VM, es decir, ejecutar el código en la VM creada por Vagrant.


root@kitploit:~
*** Corrección de esta falla ***

Basta con pasar la variable ifname a null en la función qemuAgentGetInterfaces() de libvirt, es decir, la variable ifname debe ser liberada para cada interfaz.


root@kitploit:~
*** Demostración ***

Encontrará una demostración simple del problema (doble liberación) en el archivo PowerPoint.


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

El proyecto no está terminado hasta el final por razones de complejidad de la falla y de hardware, así como la falta de tiempo.

Descargar herramienta