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-31133 — CVE-2025-31133 PoC | Kitploit
Strumenti/GitHubGitHub/skynet-f-nvidia/cve-2025-31133
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitPenetration TestingRed TeamingEscape dal Container
GitHubskynet-f-nvidia/cve-2025-31133

CVE-2025-31133

CVE-2025-31133 PoC

Vedi Repository
21710 mesi 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-31133 PoC Exploit

Questo documento spiega il funzionamento dello script Proof-of-Concept (PoC) fornito per la vulnerabilità CVE-2025-31133 in runc.

Riepilogo

  • Vulnerabilità: CVE-2025-31133 - Una condizione di gara (race condition) su link simbolici nella gestione di maskedPaths in runc.
  • Impatto: Un container malevolo può aggirare le protezioni di maskedPaths, permettendogli di scrivere su file sensibili del sistema host. Ciò costituisce una fuga dal container (container escape).
  • Obiettivo del PoC: Dimostrare in modo sicuro la vulnerabilità modificando il file /proc/sys/kernel/core_pattern dell'host dall'interno di un container.
  • Sicurezza: Questo PoC non è distruttivo. Scrive solo la stringa "pwned" nel file target e non esegue codice arbitrario sull'host. Fornisce inoltre istruzioni per ripristinare il valore originale.

Spiegazione della Vulnerabilità

La funzionalità maskedPaths nelle specifiche OCI di un container (config.json) è un meccanismo di sicurezza progettato per impedire ai container di accedere a file di sistema sensibili. Funziona montando (bind-mount) /dev/null (un file dispositivo vuoto) sopra questi percorsi sensibili all'interno del container, rendendoli di fatto illeggibili e non scrivibili.

La vulnerabilità (CVE-2025-31133) è una condizione di gara Time-of-Check to Time-of-Use (TOCTOU). L'exploit funziona come segue:

  1. Il difetto: Quando runc configura il container, si prepara a utilizzare il file dev/null dal rootfs del container come sorgente per il bind mount che maschererà il percorso sensibile (ad es. /proc/sys/kernel/core_pattern).
  2. La gara: C'è una piccola finestra temporale tra quando runc risolve il percorso verso rootfs/dev/null e quando esegue effettivamente l'operazione di mount.
  3. L'exploit: Un attaccante può creare uno script sull'host che scambia continuamente e molto rapidamente il file rootfs/dev/null tra un nodo dispositivo legittimo e un link simbolico che punta al file target sull'host (/proc/sys/kernel/core_pattern).
  4. Vincere la gara: Se il tempismo è perfetto, runc eseguirà la sua operazione di mount nell'esatto momento in cui rootfs/dev/null è un symlink. Questo fa sì che il kernel segua il symlink e l'operazione di mascheramento fallisca per /proc/sys/kernel/core_pattern.
  5. Fuga dal container: Poiché il mascheramento è fallito, il percorso all'interno del container non è più protetto. Un processo in esecuzione all'interno del container ora può scrivere su , che modifica direttamente il file dell'host, realizzando una fuga dal container.

Questo PoC utilizza questa tecnica per scrivere su /proc/sys/kernel/core_pattern, un target comune per tali exploit perché la sua modifica può portare all'esecuzione di codice arbitrario sull'host quando un processo va in crash. Tuttavia, questo PoC scrive solo una stringa innocua per dimostrare l'esistenza della primitiva di scrittura.


Come Funziona lo Script PoC

Lo script poc.sh automatizza l'intero processo descritto sopra.

  1. Setup & Pulizia:

    • Definisce variabili per il binario di runc, il nome del container e il percorso rootfs.
    • Include una funzione cleanup robusta che assicura la rimozione di eventuali container o file creati dallo script. Questa funzione viene chiamata automaticamente all'uscita, all'interruzione o alla terminazione.
  2. Preparazione:

    • Salva il contenuto originale del file /proc/sys/kernel/core_pattern dell'host in un file temporaneo. Questo viene usato successivamente per verificare se l'exploit ha avuto successo e per aiutare l'utente a ripristinare il sistema.
    • Crea un rootfs minimo per il container (./rootfs) e un file config.json.
    • Il config.json elenca esplicitamente /proc/sys/kernel/core_pattern in maskedPaths — proprio la funzionalità che l'exploit mira a bypassare.
  3. La Funzione di Gara (symlink_race)

    • Questo è il cuore dell'exploit. È progettata per essere eseguita in background.
    • Entra in un ciclo stretto che dura 20 secondi.
    • All'interno del ciclo, ripete:

Utilizzo

Prerequisiti:

  • Una versione vulnerabile di runc.
  • busybox-static installato (per la shell del container).
  • Privilegi di root (sudo) per eseguire runc e modificare /proc.

Passi:

  1. Salva lo script come poc.sh.
  2. Rendilo eseguibile: chmod +x poc.sh.
  3. Eseguilo con sudo: sudo ./poc.sh.

Interpretazione dell'Output

  • Successo: Se vedi il messaggio [+] EXPLOIT RIUSCITO!, significa che la condizione di gara è stata vinta. Il file /proc/sys/kernel/core_pattern dell'host è stato modificato con successo dall'interno del container, confermando la vulnerabilità.
  • Fallimento: Se vedi [-] Exploit non riuscito., la gara non è stata vinta in questo tentativo. Le condizioni di gara sono probabilistiche e dipendono fortemente dal timing e dal carico del sistema. Prova a eseguire lo script ancora qualche volta.

Ripristino del Sistema (Dopo un Esecuzione Riuscita)

Il PoC modifica un file di sistema. Per ripristinarlo allo stato originale, esegui il comando suggerito dallo script:

root@kitploit:~
# 'ORIGINAL_PATTERN' sarà il valore effettivo del tuo sistema
echo 'valore_originale_core_pattern' | sudo tee /proc/sys/kernel/core_pattern
Scarica lo strumento
/proc/sys/kernel/core_pattern
  1. Elimina rootfs/dev/null.
  2. Crea un link simbolico da rootfs/dev/null al file host target (/proc/sys/kernel/core_pattern).
  3. Attende per una piccolissima frazione di secondo (500 microsecondi).
  4. Elimina il symlink.
  5. Ricrea rootfs/dev/null come un dispositivo a caratteri appropriato (mknod).
  6. Attende per un tempo leggermente più lungo (5000 microsecondi).
  • Questo rapido scambio crea la finestra di opportunità per la condizione di gara.
  • Esecuzione:

    • La funzione symlink_race viene avviata come processo in background.
    • Subito dopo, lo script esegue runc run ... per creare e avviare il container. Questo è il momento in cui runc tenterà di applicare i maskedPaths.
    • Una volta che il container è in esecuzione, lo script usa runc exec per eseguire un comando all'interno del container: echo 'pwned' > /proc/sys/kernel/core_pattern.
  • Verifica:

    • Lo script attende che il processo di gara in background termini e pulisce il container.
    • Quindi legge il contenuto corrente del file /proc/sys/kernel/core_pattern dell'host.
    • Confronta il contenuto corrente con la stringa attesa "pwned" e con il valore originale.
    • In base al risultato, stampa un chiaro messaggio [+] EXPLOIT RIUSCITO! oppure [-] Exploit non riuscito.