CVE-2026-93787 in Linux
Сводка
по VulDB • 24.09.2026
В ядре Linux была устранена следующая уязвимость:
smb: клиент: ограничение имени dirent в ответе SMB для функции cifs_filldir()
Функция cifs_filldir() копирует имя записи из ответа SMB1 TRANS2_FIND_FIRST / FIND_NEXT, используя длину (de.namelen), предоставленную сервером. Буфер ответа SMB, выделенный через kmalloc(), имеет ограничения по размеру, однако ничего не проверяет, что адрес de.name + de.namelen все еще находится внутри этого буфера перед тем, как последующие вызовы filldir64() -> verify_dirent_name() -> memchr() прочитают namlen байт.
Враждебный сервер SMB1, возвращающий избыточное значение FileNameLength в записи каталога, приводит к тому, что функция memchr() читает за пределами буфера slab ответа. Уязвимость доступна любому пользователю, который может перечислить содержимое каталога на смонтированной файловой системе CIFS с сервером, контролируемым злоумышленником (вызов getdents64() для смонтированного каталога):
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
Необходимо передать указатель на конец ответа в функцию cifs_filldir() и отклонить записи, имя которых выходит за эту границу.
Эта ошибка была обнаружена с помощью конвейера vTriage компании Artiphishell, который сгенерировал воспроизводящий пример для пользовательского пространства (эмулируемый враждебный сервер SMB1 плюс клиент getdents64()), надежно вызывающий отчет KASAN на не патченном ядре. Исправление ниже было подготовлено с помощью ассистента Claude; воспроизводящий пример для пользовательского пространства доступен по запросу.
If you want to get best quality of vulnerability data, you may have to visit VulDB.