Уязвимост в подсистемата FUSE на ядрото на Linux може да позволи на локален атакуващ да придобие root права чрез препълване на кеша на страниците с контролирани от него записи на директории.

Уязвимостта се проследява като CVE-2026-31694 и засяга кода, използван при кеширане на резултатите от readdir във FUSE от страна на ядрото.

FUSE позволява на файлова система в потребителското пространство да комуникира с ядрото чрез /dev/fuse, при което ядрото може да кешира записи на директории за по-бързо бъдещо четене.

Анализът показва, че проблемът е във функцията fuse_add_dirent_to_cache(), където ядрото изчислява размера на записа на директория от контролирана от сървъра дължина на името на файла, след което копира записа в единична кеш страница, без първо да провери дали самият запис не е по-голям от една страница.

Това е критично, тъй като компрометиран или зловреден FUSE сървър може да върне запис на директория, чийто сериализиран размер е 4120 байта в система с размер на страниците 4 KiB, което превишава лимита с 24 байта.

Когато ядрото нулира отместването и копира записа, излишните байтове се преливат в следващата страница от паметта. Опасната част е не просто повреждането на паметта, а мястото, където попадат прелятите данни.

При докладваната демонстрация препълването е използвано за компрометиране на кеширани байтове от SUID двоичен файл (като например /usr/bin/su), подменяйки началото на изпълнимия код с кратък код, който извиква setuid(0) и setgid(0), преди да продължи нормално.

След като тези системни извиквания за промяна на привилегиите завършат успешно в програма, собственост на root, атакуващият може да заобиколи обичайните проверки за автентификация и да стартира root shell.

Атаката е локална, така че нападателят се нуждае от възможност да монтира или изпълнява FUSE файлова система, което може да бъде достъпно чрез непривилегировани потребителски пространства от имена (user namespaces) или fusermount3.

Проблемът засяга системи, използващи страници памет с размер 4 KiB. Администраторите могат да намалят риска чрез:

  • Ограничаване на използването на FUSE;
  • Премахване на setuid бита от fusermount3, когато не е необходим;
  • Ограничаване на непривилегированите потребителски пространства от имена (user namespaces).