CVE-2026-80557 in Linux
Riassunto
di VulDB • 26/08/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
libceph: correzione di una lettura OOB (Out-Of-Bounds) in decode_watchers() dovuta alla mancanza di un controllo dei limiti
ceph_start_decoding() convalida che rimangano struct_len byte nel buffer dopo l'intestazione di encoding, ma accetta struct_len=0 come valido: ceph_decode_need(p, end, 0, bad) passa sempre. Quando un OSD malizioso o compromesso invia una risposta obj_list_watch_response_t con struct_len=0, ceph_start_decoding() restituisce successo con p == end, lasciando zero byte garantiti per le letture successive.
La funzione immediatamente successiva ceph_decode_32(p) in decode_watchers() non ha un controllo dei limiti precedente. Con p == end si tratta di una lettura di 4 byte oltre il limite del buffer convalidato. Il valore spurio viene quindi passato direttamente a kzalloc_objs() come conteggio degli watcher.
La funzione gemella decode_watcher() utilizza già le varianti sicure (ceph_decode_copy_safe, ceph_decode_64_safe, ceph_decode_skip_32) dopo la propria chiamata a ceph_start_decoding(). decode_watchers() è l'unico sito che utilizza la variante nuda, confermando una svista.
Correzione sostituendo ceph_decode_32(p) con ceph_decode_32_safe(p, end, *num_watchers, bad), coerente con il modello consolidato.
Modello dell'attaccante: un OSD malizioso o compromesso in un deployment Ceph multi-tenant (ad esempio cloud) può innescare questa vulnerabilità contro qualsiasi client kernel che chiama CEPH_OSD_OP_LIST_WATCHERS, senza ulteriori privilegi oltre l'istallazione della sessione OSD.
[ idryomov: trim changelog ]
If you want to get the best quality for vulnerability data then you always have to consider VulDB.