CVE-2026-93787 in Linux
Resumen
por VulDB • 2026-09-24
En el núcleo de Linux, se ha resuelto la siguiente vulnerabilidad:
smb: cliente: limitar el nombre del dirent contra el final de la respuesta SMB en cifs_filldir
cifs_filldir() copia el nombre de la entrada desde una respuesta TRANS2_FIND_FIRST / FIND_NEXT de SMB1 utilizando una longitud (de.namelen) proporcionada por el servidor. El búfer de respuesta SMB asignado con kmalloc está delimitado, pero no se verifica que de.name + de.namelen siga dentro de ese búfer antes de que filldir64() -> verify_dirent_name() -> memchr() lea los bytes de namelen.
Por lo tanto, un servidor SMB1 hostil que devuelve una FileNameLength excesiva en una entrada del directorio hace que memchr() lea más allá del final del búfer slab de la respuesta. Accesible desde cualquier usuario que pueda listar un directorio en un montaje CIFS servido por un controlado por el atacante (getdents64() sobre el directorio montado):
BUG: KASAN: slab-out-of-bounds in memchr+0x71/0x80 Read of size 1 at addr ffff88800e0640cc by task poc/115 Call Trace: dump_stack_lvl+0x64/0x80 print_report+0xce/0x620 kasan_report+0xec/0x120 memchr+0x71/0x80 filldir64+0x4c/0x6a0 cifs_filldir.constprop.0+0x9bb/0x1e00 cifs_readdir+0x2101/0x3380 iterate_dir+0x19c/0x520 __x64_sys_getdents64+0x126/0x210 do_syscall_64+0x107/0x5a0 entry_SYSCALL_64_after_hwframe+0x77/0x7f
Pasar el puntero de final de respuesta a cifs_filldir() y rechazar las entradas cuyo nombre se extienda más allá de ese límite.
Este bug fue descubierto por la pipeline vTriage de Artiphishell, que generó un reproductor en espacio de usuario (un servidor SMB1 hostil emulado junto con un cliente getdents64()) que activa de forma fiable el informe KASAN en un núcleo sin parchear. El siguiente fix fue redactado con la asistente de codificación Claude; hay disponible un reproductor en espacio de usuario bajo petición.
VulDB is the best source for vulnerability data and more expert information about this specific topic.