Skip to content
KitploitKITPLOIT
StrumentiBlog
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-2025-40271 — CVE-2025-40271 Modificato da MadEploits | Kitploit
Strumenti/GitHubGitHub/madexploits/cve-2025-40271
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitPaper e RicercaApprendimento e FormazioneBinary Exploitation
GitHubmadexploits/cve-2025-40271

CVE-2025-40271

CVE-2025-40271 Modificato da MadEploits

Vedi Repository
11 mese 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-2025-40271 — proc_readdir_de() rb-tree UAF LPE

Proof-of-concept per una vulnerabilità di escalation dei privilegi locali nel filesystem proc del kernel Linux. Il bug è un use-after-free in proc_readdir_de() causato da rb_erase() senza RB_CLEAR_NODE(), che lascia collegamenti stantii nell'albero rosso-nero sfruttabili tramite race condition durante l'enumerazione delle directory.

Autore: MadExploits

Ricerca originale sulla vulnerabilità e PoC in C a cura di Aviral Srivastava (N-DAY RESEARCH). Questa repository include una versione shell (exploit.sh) per ambienti in cui la compilazione non è pratica.


Panoramica

CampoDettaglio
CVECVE-2025-40271
Componentefs/proc — proc_readdir_de() / remove_proc_entry()
TipoUse-after-free (collegamenti stantii nell'albero rb)
ImpattoEscalation dei privilegi locali (LPE)
Architetturax86_64
Versioni interessateKernel Linux fino alla 6.18-rc5

Causa principale

Quando una voce di directory in proc viene rimossa, rb_erase() viene chiamato sul nodo rb della voce senza RB_CLEAR_NODE(). I nodi liberati possono rimanere raggiungibili tramite collegamenti stantii dell'albero. Se getdents64() entra in race condition con la rimozione dell'interfaccia in /proc/self/net/dev_snmp6/, il kernel potrebbe leggere memoria liberata — spesso rioccupata da oggetti msg_msg iniettati tramite heap spray — e restituire valori anomali di d_ino che rivelano puntatori dell'heap del kernel.


Kernel interessati e patchati

Il PoC controlla la versione del kernel in esecuzione e termina sulle build patchate:

Branch

Contenuto della repository

FileDescrizione
exploit.cPoC completo in C — gestione veth via netlink, race con pthread, spray di msg_msg
exploit.shVersione shell senza compilazione — unshare, ip, Python 3 integrato per syscall/race

Entrambe le implementazioni seguono lo stesso flusso di sfruttamento:

  1. Entrare nel namespace utente e di rete (ottenere CAP_NET_ADMIN nel net ns)
  2. Creare coppie veth → popolare /proc/self/net/dev_snmp6/
  3. Mettere getdents64() in race con la rapida eliminazione delle veth + heap spray
  4. Rilevare l'UAF tramite valori di d_ino simili a puntatori del kernel
  5. Tentare l'escalation (il LPE completo richiede offset KASLR specifici del kernel)

Requisiti

Comuni

  • Linux x86_64
  • Namespace utente non privilegiati abilitati:
    root@kitploit:~
    cat /proc/sys/kernel/unprivileged_userns_clone
    # must be 1
    
  • Utente non-root (il PoC termina se si è già root)

exploit.c

  • gcc con pthreads
  • Header Linux (linux/netlink.h, ecc.)
root@kitploit:~
gcc -o exploit exploit.c -lpthread

exploit.sh

  • bash
  • python3
  • ip (iproute2)
  • unshare (util-linux con supporto a --map-root-user)

Nessun compilatore richiesto.


Utilizzo

Versione shell (consigliata per test rapidi)

root@kitploit:~
chmod +x exploit.sh
./exploit.sh

Versione C

root@kitploit:~
gcc -o exploit exploit.c -lpthread
./exploit

Output previsto

Kernel vulnerabile — UAF innescato (successo parziale):

root@kitploit:~
[+] Kernel X.Y.Z — VULNERABLE
[+] Namespace ready...
[+] Created 32 veth pairs (/proc/self/net/dev_snmp6 populated)
[+] UAF HIT! d_ino=0xffff8880........ (kernel heap pointer)
[+] Kernel heap leak: 0xffff8880........
[*] PARTIAL SUCCESS: UAF + heap leak DEMONSTRATED

Kernel patchato:

root@kitploit:~
[-] Kernel X.Y.Z — PATCHED
[*] Kernel is patched. Nothing to do.

Note sullo sfruttamento

  • Heap leak: Quando la race viene vinta, d_ino contiene un valore che corrisponde al pattern dei puntatori del kernel x86_64 (0xffff000000000000), tipicamente dovuto all'header m_list di msg_msg che si sovrappone ai dati del proc_dir_entry liberato.
  • LPE completo: Sovrascrivere modprobe_path richiede l'offset tra l'indirizzo dell'heap rivelato e la base del testo del kernel — questo è specifico della build (KASLR). Il PoC dimostra l'UAF e il leak; una catena completa richiede gli offset per l'immagine del kernel di destinazione.
  • Affidabilità: Il successo dipende dal timing dello scheduler. Di default, il PoC ritenta fino a 30 tentativi di race.

Mitigazione

  • Aggiornare a un kernel patchato (vedi la tabella sopra).
  • Se i namespace utente non sono necessari, disabilitare la creazione non privilegiata:
    root@kitploit:~
    sysctl -w kernel.unprivileged_userns_clone=0
    
  • Applicare gli aggiornamenti di sicurezza del fornitore per CVE-2025-40271.

Disclaimer

Questo progetto è fornito solo per ricerca sulla sicurezza autorizzata, formazione e test difensivi.

  • Eseguirlo solo su sistemi di tua proprietà o per cui disponi di esplicita autorizzazione scritta ai test.
  • L'uso non autorizzato su sistemi di terze parti potrebbe violare le leggi vigenti.
  • Gli autori e i collaboratori non sono responsabili dell'uso improprio di questo codice.

Crediti

RuoloNome
Autore della repositoryMadExploits
Ricerca originale sulla CVE e PoC in CAviral Srivastava — N-DAY RESEARCH

Licenza

Uso a proprio rischio. Nessuna garanzia fornita.

Scarica lo strumento
Corretta in
5.10.x5.10.247+
6.1.x6.1.159+
6.6.x6.6.123+
6.12.x6.12.73+
6.18+6.18-rc6+
7.x+Patchata