В модула 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 за вградени устройства, интегрирано при необходимост с инструментите и библиотеките на Samba. Кодът на ksmbd е разработен от Namjae Jeon от Samsung и Hyunchul Lee от LG, а поддръжката в ядрото е поверена на Стив Френч (Steve French) от Microsoft, който е мейнтейнер на подсистемата CIFS/SMB2/SMB3 в ядрото на Linux и дългогодишен участник в екипа на разработчиците на Samba, допринесъл значително за реализацията на поддръжката на протоколите SMB/CIFS в Samba и Linux.
Източник: opennet.ru
