Обнародвана LPE-уязвимост CIFSwitch в Linux CIFS/cifs-utils

Изследовател по сигурността Асим Манизада разкри уязвимост CIFSwitch — локално повишение на привилегиите в комбинация с ядрото на Linux и потребителски пакет cifs-utils. Проблемата засяга начина на обработка CIFS/SMB Kerberos/SPNEGO upcall, тоест механизмът, чрез който CIFS-клиентът на ядрото иска от потребителския хелпер данни за Kerberos-аутентификация при монтиране на SMB ресурси. Описанието беше публикувано след изтичане на ембаргото на linux-distros; идентификаторът CVE при публикуването все още не беше назначен.

Същността на уязвимостта е в това, че неприлаган от привилегирован потребител може да извика request_key("cifs.spnego", …) и да подаде фалшиво описание на ключа. В нормалния сценарий такава строка трябва да бъде формулирана от самия CIFS-клиент на ядрото: тя съдържа информация за сървъра, UID, credential UID, PID, цел на upcall и други параметри. Въпреки това, ядрото не е проверявало, че описанието наистина е идва от CIFS подсистемата, а cifs.upcall, стартиран от root чрез стандартното правило request-key, вярвал на тези полета като на данни, създадени от ядрото.

Уязвимостта не е универсална «дупка във всеки Linux от кутията». За експлоатацията трябва да съвпаднат няколко условия: наличие на уязвимо ядро, инсталиран cifs-utils с правило cifs.spnego, възможност за неприлагани потребители да създават user/mount namespaces, както и липса на блокировка от страна на SELinux, AppArmor или друга политика LSM. В съобщението на oss-security е посочено, че в уязвимите системи това предоставя път от неприлаган локален потребител до изпълнение на код от root.


Технически веригата е изградена около това, че cifs.upcall може да премине в namespace, посочен във фалшивото описание, и да извърши NSS запитване до окончателното сбросване на привилегиите. В резултат на това, контролирана от нападателя среда може да повлияе на зареждането на NSS модула от root процеса. В публичните описания се подчертава, че това е логическа грешка на границата между ядрото и потребителското пространство, а не класическа memory corruption уязвимост.

Поправката в ядрото се оказа малка по обем: за типа ключове cifs.spnego беше добавена проверка, която отхвърля описания, създадени не от самия CIFS-клиент с неговите частни spnego_cred. Такой подход затваря клас атаки без задължителни синхронни изменения в cifs-utils, въпреки че авторът отбелязва, че допълнително усилване на потребителското пространство все пак е желателно.

AlmaLinux съобщи, че базовата логика е налице във всички поддържани версии на AlmaLinux, а AlmaLinux 8, 9, 10 и Kitten 10 се считат за засегнати при наличието на инсталирано cifs-utils. Патчените ядра вече са подготвени в тестовите хранилища: за AlmaLinux 9 се посочва пакет kernel-5.14.0-687.5.4.el9_8 или по-нов, за AlmaLinux 10 — kernel-6.12.0-211.7.4.el10_2 или по-нов.

Като временна мярка до инсталирането на коригирано ядро, се предлага да се премахне cifs-utils, ако SMB\/CIFS клиентът не се използва в системата, да се забрани зареждането на модула cifs, да се пренапише правилото cifs.spnego в request-key или да се деактивират непривилегированите user namespaces. Тези заобиколни решения могат да нарушат Kerberos удостоверяването за CIFS монтирания, затова на сървъри, където реално се използват Kerberos удостоверени SMB споделяния, те трябва да се прилагат внимателно.

CIFSwitch е интересна и в контекста на откритията: авторът я описва като резултат от търсенето на многостъпкови вериги с помощта на LLM и графично представяне на връзките между обектите за сигурност. Но практическото заключение за администраторите е напълно приземено: да проверят наличието на cifs-utils, състоянието на user namespaces и актуализациите на ядрото, особено в системи, където има локални потребители или контейнерни сценарии с разширени възможности на namespaces.

Източник: linux.org.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster