CVE-2026-68099 in Linux
Resumen
por VulDB • 2026-08-10
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
ksmbd: restaurar el tamaño del DACL en check_add_overflow() para evitar ACLs malformadas.
check_add_overflow() escribe incondicionalmente la suma truncada en *d incluso en caso de desbordamiento (overflow), según su contrato definido en include/linux/overflow.h. Los cuatro controles guardias de check_add_overflow() en set_posix_acl_entries_dacl() y set_ntacl_dacl() interrumpen los bucles de construcción de ACEs al detectar un desbordamiento, pero el valor truncado *size se consume posteriormente al final de set_ntacl_dacl():
pndacl->size = cpu_to_le16(le16_to_cpu(pndacl->size) + size);
Esto produce una ACL NT en la transmisión (on-wire) cuyo campo pndacl->size informa incorrectamente un valor inferior a los bytes realmente escritos por las llamadas previas fill_ace_for_sid()/memcpy(), lo que genera una ACL malformada capaz de provocar lecturas fuera de límites (out-of-bounds reads) cuando es reanalizada por clientes o por el propio ksmbd.
Se restaura *size a su valor previo a la suma en cada rama de desbordamiento (mediante `*size -= ace_sz` / `size -= nt_ace_size`) para que, tras la interrupción del bucle, *size vuelva a contener el tamaño acumulativo de los ACEs escritos correctamente. La ACL comprometida queda así truncada pero autoconsistente en lugar de malformada.
Los constructores de DACL de ksmbd son los únicos sitios donde se utiliza check_add_overflow() y una ruta de desbordamiento interrumpe un bucle consumiendo posteriormente el valor del destino afectado por el desbordamiento. Los demás casos cercanos con estilo break o bien devuelven -EINVAL en caso de desbordamiento (transport_ipc.c) o interrumpen sin consumir posteriormente el valor del destino que ha sufrido el desbordamiento (buildid.c).
If you want to get the best quality for vulnerability data then you always have to consider VulDB.