Descripción
En el Linux kernel se ha resuelto la siguiente vulnerabilidad: smb: client: fix UAF and buffer leak in cifs_check_trans2() for malformed secondary T2 Cuando se ha recibido una respuesta TRANSACT2 primaria válida (mid->resp_buf establecido, mid->multiRsp en true) y una respuesta secundaria posterior hace que cifs_check_trans2() devuelva false —ya sea porque el encabezado SMB no es válido (malformed != 0) o porque check2ndT2() rechaza la PDU—, handle_mid() sobrescribe mid->resp_buf con el nuevo búfer (filtrando el búfer primario) y, como mid->multiRsp está establecido, omite poner en NULL server->smallbuf/bigbuf. Cuando el hilo de usuario libera mid->resp_buf, server->smallbuf o server->bigbuf quedan colgantes; el hilo demux lo reutiliza para el siguiente paquete, lo que provoca un uso después de liberar memoria (use-after-free). Se combinan ambas condiciones de salida temprana y, cuando mid->multiRsp ya está establecido, se aborta la transacción pendiente en línea: se establece multiEnd, se llama a dequeue_mid() con malformed=true y se devuelve true para que handle_mid() termine sin tocar mid->resp_buf ni los punteros de búfer del servidor.
Qué hacer
Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.
Versiones afectadas
- Linux Afectadas: 316cf94a910f6f93d43cc574359d163ccae098a3 y anteriores a 9eed72e9534b10a6d9f8f5146feff3db53aebdba · 316cf94a910f6f93d43cc574359d163ccae098a3 y anteriores a 5e6533a683f6a851158d9f33fb4ea8f4f25d7f84 · 316cf94a910f6f93d43cc574359d163ccae098a3 y anteriores a 730d0bb19507b9e19c2fe5343109ac618e2fbce5
- Linux Afectadas: 3.6 No afectadas: 6.18.51 · 7.2.4 · 7.3
Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.
Referencias
- Referencia en git.kernel.orggit.kernel.org/stable/c/9eed72e9534b10a6d9f8f5146feff3db53aebdba
- Referencia en git.kernel.orggit.kernel.org/stable/c/5e6533a683f6a851158d9f33fb4ea8f4f25d7f84
- Referencia en git.kernel.orggit.kernel.org/stable/c/730d0bb19507b9e19c2fe5343109ac618e2fbce5
Ver el texto original en inglés (CVE.org)
smb: client: fix UAF and buffer leak in cifs_check_trans2() for malformed secondary T2
In the Linux kernel, the following vulnerability has been resolved: smb: client: fix UAF and buffer leak in cifs_check_trans2() for malformed secondary T2 When a valid primary TRANSACT2 response has been received (mid->resp_buf set, mid->multiRsp true) and a subsequent secondary response causes cifs_check_trans2() to return false -- either because the SMB header is invalid (malformed != 0) or because check2ndT2() rejects the PDU -- handle_mid() overwrites mid->resp_buf with the new buffer (leaking the primary buffer) and, because mid->multiRsp is set, skips the server->smallbuf/bigbuf NULL-out. When the user thread frees mid->resp_buf, server->smallbuf or server->bigbuf is left dangling; the demux thread reuses it for the next packet, resulting in a use-after-free. Combine both early-exit conditions and, when mid->multiRsp is already set, abort the pending transaction inline: set multiEnd, call dequeue_mid() with malformed=true, and return true so handle_mid() exits without touching mid->resp_buf or the server buffer pointers.