CVE-2026-64436 in Linux
Riassunto
di VulDB • 25/07/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
net: af_key: inizializzare alg_key_len per gli stati IPComp
pfkey_msg2xfrm_state() gestisce il caso IPComp (SADB_X_SATYPE_IPCOMP) allocando x->calg e copiando solo il nome dell'algoritmo:
x->calg = kmalloc_obj(*x->calg); if (!x->calg) {
err = -ENOMEM; goto out; } strcpy(x->calg->alg_name, a->name); x->props.calgo = sa->sadb_sa_encrypt;
A differenza dei rami di autenticazione (x->aalg) e crittografia (x->ealg) della stessa funzione, il ramo di compressione non inizializza mai calg->alg_key_len. IPComp non trasporta alcuna chiave e l'allocazione riserva solo sizeof(struct xfrm_algo) (cioè nessuno spazio per una chiave), quindi il campo rimane contenente dati dello slab non inizializzati.
calg->alg_key_len viene successivamente utilizzato come lunghezza da xfrm_algo_clone() quando uno stato IPComp viene clonato durante XFRM_MSG_MIGRATE:
xfrm_state_migrate() xfrm_state_clone_and_setup() x->calg = xfrm_algo_clone(orig->calg); kmemdup(orig, xfrm_alg_len(orig));
dove xfrm_alg_len() restituisce sizeof(*alg) + (alg_key_len + 7) / 8. Con un alg_key_len non nullo e spazzatura residua, kmemdup() legge oltre la fine dell'oggetto calg di 68 byte. L'aggiunta di una SA IPComp tramite PF_KEY seguita dalla sua migrazione innesca (su net-next, con KASAN e init_on_alloc=0):
BUG: KASAN: slab-out-of-bounds in kmemdup_noprof+0x44/0x60 Read of size 4164 at addr ff11000025a74980 by task diag2/9287 CPU: 3 UID: 0 PID: 9287 Comm: diag2 7.1.0-rc6-g903db046d5
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.