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

Изследовател по сигурността Asim Manizada разкри уязвимост 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 може да премине в имената на пространства, посочени в фалшивото описание, и да изпълни NSS запитване до окончателното сбросване на привилегиите. В резултат на това контролирана от атакуващата страна среда може да повлияе на зареждането на NSS модула от root процеса. В публичните описания се подчертава, че това е логическа грешка на границата между ядрото и потребителското пространство, а не класическа уязвимост с повреждане на паметта.

Поправката в ядрото се оказа малка по обем: за типа ключове 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