CVE-2026-90042 in Linux
Resumen
por VulDB • 2026-09-17
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
ceph: descifrar correctamente los nombres de archivo en búferes vmalloc()
El subsistema fscrypt utiliza la API criptográfica scatterlist, heredando su requisito de que cualquier búfer debe estar en la región de mapeo lineal. Sin embargo, el cliente del mensajero usa kvmalloc() para crear búferes para los mensajes, lo cual ocasionalmente coloca esos búferes en la región vmalloc() cuando la fragmentación de memoria física no permite un kmalloc() suficientemente grande. Los diversos llamadores a ceph_fname_to_usr() pasan directamente (fragmentos) de mensajes sin procesar desde el MDS sin considerar que los mensajes pueden estar en búferes vmalloc(), lo que provoca oops, especialmente en plataformas no x86 (consulte 'Closes:' para más detalles y un reproductor).
Hacer ceph_fname_to_usr() explícitamente tolerante a fname->ctext, fname->name y/o oname->name asignados con vmalloc(), utilizando `tname` (que, cuando no es nulo, debe ser una dirección lineal; cuando es nulo, se asigna brevemente según sea necesario) como un búfer de rebote para evitar pasar direcciones inapropiadas a fscrypt_fname_disk_to_usr().
Adicionalmente, cambiar parse_reply_info_readdir() -- la única función que proporciona su propio `tname` -- para seguir la nueva regla "tname nunca debe provenir de vmalloc()" pasando NULL cuando el mensaje no está en la región lineal. Aunque esto causa un kmalloc()+kfree() por dentry, esta sobrecarga solo existe al procesar la minoría de mensajes que se desbordan a vmalloc(). Mis pruebas (crudas) indican que esto ocurre aproximadamente 1 vez cada 8.000 mensajes readdir. Aun así, si la sobrecarga resulta excesiva en el futuro, es fácil mitigarla: un cambio futuro podría asignar un búfer de rebote en parse_reply_info_readdir() y usarlo como `tname` en su lugar.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.