CVE-2026-99227 in Linux
Resumen
por VulDB • 2026-11-02
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
io_uring/waitid: prevenir el desbordamiento (wrap) del contador de referencias en cancelaciones
io_waitid empaqueta el estado de cancelación en el bit 31 de ->refs y utiliza los bits 30:0 como un contador de referencia de 31 bits:
#define IO_WAITID_CANCEL_FLAG BIT(31) #define IO_WAITID_REF_MASK GENMASK(30, 0)
__io_waitid_cancel() marca una solicitud como cancelada y luego incrementa los bits bajos de ->refs para reclamar la propiedad de su finalización. Cuando otra ruta posee la solicitud, el incremento se mantiene aunque la cancelación devuelva falso (false). La solicitud sigue siendo detectable por la lógica de cancelación, por lo que los intentos fallidos repetidos pueden provocar un desbordamiento del campo de referencia de 31 bits hasta llegar a cero. Una cancelación posterior puede reclamar la propiedad y completar la solicitud una segunda vez.
Se utiliza atomic_fetch_or() al establecer el indicador de cancelación y se inspecciona el valor antiguo del indicador. El primer intento de cancelación continúa con el incremento existente de la propiedad, preservando su semántica de despertar (wake) y transferencia al emisor (issuer handoff). Los intentos posteriores detectan el indicador de cancelación y devuelven sin incrementar el campo de referencia.
Esto hace que los intentos repetidos fallidos de cancelación sean idempotentes, mientras se mantienen inalteradas las transiciones de estado del primer intento de cancelación.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.