В модула ksmbd, който включва вградена в ядрото на Linux реализация на файлов сървър на базата на протокола SMB, е установена критична уязвимост, позволяваща отдалечено изпълнение на произволен код с права на ядрото. Атаката може да бъде проведена без автентикация, само е необходимо модулът ksmbd да е активиран в системата. Проблемът се проявява от ядрото 5.15, издадено през ноември 2021 г., и е отстранен в ъпдейтите 5.15.61, 5.18.18 и 5.19.2, публикувани през август 2022 г. Тъй като на проблема все още не е присвоен CVE идентификатор, точна информация за разрешаването на проблема в дистрибутивите все още няма.
Детайлите за експлоатацията на уязвимостта все още не се разкриват, известно е само, че уязвимостта е предизвикана от достъп до вече освободена област памет (Use-After-Free) поради липса на проверка на съществуването на обект преди извършване на операции с него. Проблемът е свързан с това, че в функцията smb2_tree_disconnect() е била освободена памет, заделена за структурата ksmbd_tree_connect, но след това е останал указател, използван при обработката на определени външни запитвания, съдържащи команди SMB2_TREE_DISCONNECT.
Освен споменатата уязвимост в ksmbd са поправени и 4 по-малко опасни проблема:
- ZDI-22-1688 — отдалечено изпълнение на код с права на ядрото поради липса на обработка на атрибути на файлове в кода, който проверява действителния размер на външните данни преди копирането им в заделен буфер. Опасността от уязвимостта е намалена, тъй като атаката може да бъде извършена само от автентициран потребител.
- ZDI-22-1691 — отдалечено изтичане на информация от ядрото поради неправилна проверка на входните параметри в обработчика на команда SMB2_WRITE (атаката може да бъде извършена само от автентициран потребител).
- ZDI-22-1687 — отдалечено предизвикване на отказ на услугата чрез изчерпване на наличната памет в системата поради неправилно освобождаване на ресурси в обработчика на команда SMB2_NEGOTIATE (атаката може да бъде проведена без автентикация).
- ZDI-22-1689 — отдалечено предизвикване на срив на ядрото поради липса на адекватна проверка на параметрите на команда SMB2_TREE_CONNECT, водеща до четене от извън пределите на буфера (атаката може да бъде извършена само от автентициран потребител).
Подкрепата за работа на SMB-сървъра с помощта на модула ksmbd е налична в пакета Samba, започвайки от версия 4.16.0. В контекста на SMB-сървъра, който работи в пространството на потребителя, ksmbd е по-ефективен по отношение на производителност, потребление на памет и интеграция с разширените възможности на ядрото. Ksmbd се представя като високопродуктивно решение, готово за приложение на вградени устройства, което при необходимост може да се интегрира с инструментите и библиотеките на Samba. Кодът на ksmbd е разработен от Namjae Jeon от Samsung и Hyunchul Lee от LG, а поддръжката в състава на ядрото е поета от Стив Френч (Steve French) от Microsoft, поддържащ системите CIFS/SMB2/SMB3 в Linux ядрото и дългогодишен участник в екипа на разработчиците на Samba, който е дал значителен принос за реализирането на поддръжка на протоколите SMB/CIFS в Samba и Linux.
Източник: opennet.ru
