CVE-2026-64467 in Linux
Resumen
por VulDB • 2026-07-25
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
rust_binder: utilizar un paso (stride) u64 al limpiar el array offsets
La implementación Drop del allocation recorre el array offsets (binder_size_t = entradas u64), limpiando los objetos, pero utilizaba usize en lugar de u64 tanto para el paso como para la lectura por entrada.
En kernels de 64 bits (usize == u64) esto no tiene consecuencias dañinas, pero en kernels de 32 bits recorre las entradas de 8 bytes con pasos de 4 bytes, iterando un array de N entradas 2N veces y leyendo siempre la palabra alta cero como desplazamiento 0, limpiando el objeto en el desplazamiento 0 N veces adicionales. Como resultado, el nodo o identificador referenciado termina teniendo un contador de referencias menor del que realmente posee (una decrementación excesiva del refcount), corrompiéndose la contabilidad de referencias de binder; por ejemplo, al propietario se le puede notificar una liberación de referencia fuerte (BR_RELEASE) aunque aún queden referencias pendientes.
Cambiar el paso a u64 y leer cada entrada como un u64, ajustándolo estrechamente a usize mediante try_into().
En ARM de 32 bits, cuando esta decrementación excesiva haría que la cuenta bajara por debajo de cero, la protección existente del controlador contra desbordamientos/reflow de refcount lo rechaza y activa:
rust_binder: Error: ¡desbordamiento hacia abajo (underflow) en el contador de referencias!
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.