CVE-2024-53168 in Linuxinformazioni

Riassunto

di VulDB • 14/06/2026

Nel 2025, la gestione dei namespace di rete in Linux è un'area critica per la stabilità del sistema, specialmente quando si combinano NFS, TCP e la rimozione dei namespace. L'errore descritto nel tuo report è un classico caso di **use-after-free** causato da un timer TCP che accede a una struttura `net` già liberata.

### Analisi del Problema

1. **Scenario**: * Un client NFS in un namespace di rete (`netns_1`) stabilisce una connessione TCP con un server NFS. * Il namespace viene eliminato (`ip netns del netns_1`). * La socket TCP nel namespace viene chiusa (`xs_destroy`), ma il pacchetto FIN viene scartato (a causa delle regole iptables o del comportamento del server NFS che invia `DESTROY_CLIENTID`). * Il server NFS continua a inviare ritrasmissioni. * Quando il namespace viene eliminato, la struttura `net` associata al namespace viene liberata. * Tuttavia, il timer TCP (gestito dal kernel) è ancora attivo e punta alla struttura `net` già liberata. * Quando il timer scatta, tenta di accedere alla struttura `net`, causando un **use-after-free** e un crash del kernel (KASAN report).

2. **Causa Radice**: * La struttura `net` del namespace non è protetta contro l'accesso da parte dei timer TCP associati alle socket nel namespace. * Quando il namespace viene eliminato, la struttura `net` viene liberata, ma i timer TCP non sono stati disattivati o le loro referenze non sono state gestite correttamente.

3. **Soluzione Proposta**: * **Incrementare il reference count del namespace (`netns refcnt`)** per le socket TCP nel namespace. Questo impedisce la liberazione della struttura `net` finché le socket TCP non sono state completamente disattivate. * Questa è una soluzione "hacky" ma efficace per i kernel più vecchi, poiché evita di dover riscrivere l'intera interfaccia di gestione dei timer TCP.

### Passaggi per la Riproduzione e la Verifica

#### 1. Preparazione dell'Ambiente ```bash # Crea le directory necessarie mkdir -p /mnt/nfsshare mkdir -p /mnt/nfs/netns_1

# Formatta e monta il dispositivo di blocco mkfs.ext4 /dev/sdb mount /dev/sdb /mnt/nfsshare

# Riavvia il server NFS systemctl restart nfs-server chmod 777 /mnt/nfsshare exportfs -i -o rw,no_root_squash *:/mnt/nfsshare ```

#### 2. Configurazione del Namespace di Rete ```bash # Crea il namespace di rete ip netns add netns_1

# Crea le interfacce veth ip link add name veth_1_peer type veth peer veth_1 ifconfig veth_1_peer 11.11.0.254 up ip link set veth_1 netns netns_1 ip netns exec netns_1 ifconfig veth_1 11.11.0.1 ```

#### 3. Configurazione delle Regole iptables ```bash # Blocca i pacchetti FIN nel namespace di rete ip netns exec netns_1 /root/iptables -A OUTPUT -d 11.11.0.254 -p tcp \ --tcp-flags FIN FIN -j DROP ```

#### 4. Avvio del Mount NFS ```bash # Avvia il mount NFS nel namespace di rete ip netns exec netns_1 timeout -s 9 300 mount -t nfs -o proto=tcp,vers=4.1 \ 11.11.0.254:/mnt/nfsshare /mnt/nfs/netns_1 ```

#### 5. Eliminazione del Namespace ```bash # Elimina il namespace di rete ip netns del netns_1 ```

### Verifica della Soluzione

Dopo aver applicato la patch che incrementa il reference count del namespace per le socket TCP, il crash dovrebbe essere prevenuto. Ecco come verificare:

1. **Controlla i Log del Kernel**: ```bash dmesg | tail -n 20 ``` Dovresti vedere che non ci sono più errori KASAN o use-after-free.

2. **Test di Stress**: Esegui

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsabile

Linux

Prenotare

19/11/2024

Divulgazione

27/12/2024

Moderazione

accettato

CPE

pronto

EPSS

0.00252

KEV

no

Attività

molto basso

Fonti

Do you need the next level of professionalism?

Upgrade your account now!