Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2020-25637-libvirt-double-free — Doppia Liberazione | Kitploit
Strumenti/GitHubGitHub/brahmiboudjema/cve-2020-25637-libvirt-double-free
Analisi delle VulnerabilitàExploitDebuggerApprendimento e FormazioneBinary ExploitationLab e Pratica
GitHubbrahmiboudjema/cve-2020-25637-libvirt-double-free

CVE-2020-25637-libvirt-double-free

Doppia Liberazione

Vedi Repository
175 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

 CVE-2020-25637 
                                    

*** Descrizione ***

Un problema di doppia deallocazione di memoria si è verificato nell'API libvirt, nelle versioni precedenti alla versione 6.8.0, incaricata di richiedere informazioni sulle interfacce di rete di un dominio QEMU in esecuzione. Questa falla interessa il driver di controllo accessi polkit. Più precisamente, i client che si connettono al socket in lettura-scrittura con autorizzazioni ACL limitate potrebbero utilizzare questa falla per causare un crash del demone libvirt, portando a un denial of service, o potenzialmente aumentare i propri privilegi sul sistema. La minaccia maggiore di questa vulnerabilità riguarda la riservatezza e l'integrità dei dati, nonché la disponibilità del sistema.

La minaccia più importante di questa vulnerabilità riguarda:

  • La riservatezza
  • L'integrità dei dati
  • La disponibilità del sistema.

I punteggi della falla:

  • una falla moderata da RedHat con un punteggio medio di 6.4

    • Vettore = Locale
    • Complessità = Bassa
    • Autenticazione = Nessuna
  • una falla moderata da NVD con un punteggio medio di 6.7

    • Vettore = Locale
    • Complessità = Alta
    • Autenticazione = Nessuna

*** Diversi strumenti e prerequisiti importanti da impostare per sfruttare questa falla ***
    

  1. Installazione qemu-kvm e libvirt :

Prima di tutto è necessario verificare la compatibilità del nostro sistema operativo; basta eseguire questo comando:

 grep -E -c "vmx|svm" /proc/cpuinfo

Se il comando risponde ok, puoi procedere con l'installazione:

sudo apt-get -y install qemu-kvm libvirt-bin virt-top outils-libguestfs virtinst bridge-utils

2) Installazione vagrant :

Per installare vagrant basta eseguire questo comando:

sudo apt -y install vagrant

Una volta installati Vagrant e KVM, dovresti essere pronto per installare un plugin libvirt per poter iniziare a gestire le macchine virtuali KVM utilizzando Vagrant.

vagrant plugin install vagrant-libvirt

Puoi confermare che il plugin è stato installato:

vagrant plugin list

3) Box vagrant (vagrant box) :

È possibile utilizzare un modello già pronto direttamente da Vagrant; in questo caso useremo un'immagine Ubuntu 20.04.

Per aggiungere la nostra immagine alla box vagrant basta eseguire questo comando:

vagrant box add generic / ubuntu1804 --provider = libvirt

Per visualizzare l'elenco delle box presenti localmente:

vagrant box list

4) Debug

Due possibilità di debug

  • GDB, se lo strumento non è disponibile nel tuo sistema operativo esegui questo comando:

    sudo apt-get install gdb
    
  • Valgrind, se lo strumento non è disponibile nel tuo sistema operativo esegui questo comando:

    sudo apt-get install valgrind
    

*** Esecuzione del codice ***

Avvia una vm tramite vagrant:

vagrant up

Prima di tutto installa la libreria:

sudo apt-get install -y libvirt-dev

Compilazione:

gcc -g -Wall info1.c -o info1 -lvirt

Esecuzione del codice:

./info1 qemu:///system vagrant-vms_ubuntu-01

Esecuzione con debug:

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

*** Attivare la falla ***

Prima di attivare la falla è fondamentale conoscere il funzionamento della funzione che causa il problema in libvirt.

Supponiamo che un attaccante possa provocare l'utilizzo di una zona di memoria già liberata tramite qemuAgentGetInterfaces () di libvirt, precisamente nella zona di memoria della variabile ifname, al fine di causare un denial of service e, eventualmente, eseguire codice.

  • Questa funzione elabora un elenco delle interfacce di un dominio in esecuzione con i loro indirizzi IP e MAC.
  • Poi restituisce il numero di interfacce in caso di successo, altrimenti -1 in caso di errore.

Il momento tanto atteso è arrivato.

Una volta avviato il file vagrant, è necessario eseguire il codice info1.c all'interno di una macchina virtuale a sua volta avviata da Qemu/KVM. Quindi, creare VM all'interno di una VM, ossia eseguire il codice nella VM creata da Vagrant.


*** Correzione di questa falla ***

Basta impostare la variabile ifname a null nella funzione qemuAgentGetInterfaces () di libvirt, cioè la variabile ifname deve essere liberata per ogni interfaccia.


*** Dimostrazione ***

Troverai una semplice dimostrazione del problema (double free) nel file PowerPoint.


*** Importante ***

Il progetto non è stato portato a termine per motivi di complessità della falla, di hardware e di mancanza di tempo.

Scarica lo strumento