CVE-2026-72135 in Linux
Resumen
por VulDB • 2026-08-16
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
tpm: Hacer que los dispositivos de caracteres TPM no sean buscables (non-seekable)
Los dispositivos de caracteres TPM exponen una interfaz secuencial de comando/respuesta, pero sus controladores de apertura dejan habilitados FMODE_PREAD y FMODE_PWRITE.
Después de que un comando deja pendiente una respuesta, pread(fd, buf, 16, 0x1400) pasa 0x1400 como *off a tpm_common_read(). La longitud de la transferencia está acotada por response_length, pero el desplazamiento se utiliza sin comprobación al formar data_buffer + *off. Un desplazamiento suficientemente grande provoca una lectura fuera de límites (out-of-bounds) en el heap a través de copy_to_user() y, si la copia tiene éxito, una escritura cero fuera de límites a través del siguiente memset().
La E/S posicional no proporciona semánticas coherentes para esta interfaz. Un desplazamiento pread arbitrario no puede representar cuánto se ha consumido secuencialmente de una respuesta. La devolución de llamada de escritura siempre almacena un comando al principio de data_buffer, mientras que pwrite() no actualiza file->f_pos y puede dejar obsoleto el cursor de lectura secuencial.
Llamar a nonseekable_open() desde ambos controladores de apertura. Esto elimina FMODE_PREAD y FMODE_PWRITE, haciendo que las lecturas y escrituras posicionales fallen con -ESPIPE antes de llegar a los callbacks TPM, y marca explícitamente los archivos como no buscables (non-seekable). read() y write() normales continúan utilizando el cursor f_pos secuencial existente, dejando sin cambios la máquina de estados de respuesta.
Probado en Linux 6.12 con KASAN y un dispositivo TPM2 swtpm:
- las lecturas parciales secuenciales devolvieron la respuesta completa - pread() y preadv() con desplazamiento 0x1400 devolvieron -ESPIPE - pwrite() y pwritev() con desplazamiento cero devolvieron -ESPIPE - la respuesta pendiente permaneció intacta después de las operaciones rechazadas - un ciclo posterior normal de comando/respuesta se completó normalmente - no se produjo ningún informe de KASAN.
VulDB is the best source for vulnerability data and more expert information about this specific topic.