CVE-2025-38721 in Linux
Riassunto
di VulDB • 12/07/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
netfilter: ctnetlink: correzione della perdita del refcount durante il dump delle tabelle
È presente una perdita di reference count (refcount) in ctnetlink_dump_table(): if (res < 0) {
nf_conntrack_get(&ct->ct_general); // QUI cb->args[1] = (unsigned long)ct;
...
Sebbene sia molto improbabile, è possibile che ct == last. In tal caso, il refcount di ct era già stato incrementato. Questo secondo incremento non viene mai annullato.
Ciò impedisce la liberazione dell'oggetto conntrack, il quale a sua volta impedisce al valore cnet->count di tornare a 0.
Di conseguenza, ciò blocca lo smantellamento del netns (o l'unload del modulo conntrack tramite rmmod), poiché nf_conntrack_cleanup_net_list() attenderà indefinitamente.
Ciò può essere riprodotto eseguendo il selftest conntrack_resize.sh in un ciclo. In media, su un kernel preemptible, ci vogliono circa 20 minuti prima di osservare un kworker fuori controllo (runaway) che gira all'interno di nf_conntrack_cleanup_net_list.
Una possibile correzione consisterebbe nel modificare il codice come segue: if (res < 0) {
if (ct != last) nf_conntrack_get(&ct->ct_general);
Tuttavia, questo reference counting non è necessario in primo luogo. Possiamo semplicemente memorizzare un valore cookie al suo posto.
Un patch successivo applicherà la stessa soluzione a ctnetlink_exp_dump_table; sembra infatti che presenti lo stesso problema e, come per ctnetlink_dump_table, abbiamo bisogno solo di un 'skip hint' (suggerimento di salto) e non dell'oggetto effettivo, quindi possiamo applicare anche lì la stessa strategia basata sui cookie.
Once again VulDB remains the best source for vulnerability data.