CIFSwitch je 19 let stará chyba v jádře umožňující získat místního roota

1. 6. 2026

Sdílet

Bug Autor: Depositphotos

Asim Manizada, bezpečnostní odborník ze společnosti SpaceX, objevil chybu v linuxovém jádře, která do něj byla zavlečena v roce 2007. Nachází se na rozhraní klienta CIFS v jádře a pomocného programu cifs-utils, který zpracovává ověřování pomocí Kerberosu pro sdílené síťové objekty. Chyba byla nazvána CIFSwitch a ohrožuje velkou část současných distribucí používajících CIFS.

Pokud připojení CIFS vyžaduje přihlašovací údaje pro Kerberos, jádro vyžádá klíč typu cifs.spnego a spustí se pomocný program s oprávněními root s názvem cifs.upcall, který načte ověřovací údaje. Problém spočívá v tom, že nic nebrání uživateli bez oprávnění, aby provedl přesně stejnou žádost o klíč s falešnými údaji.

Falešné informace pak mohou obsahovat PID ovládaný útočníkem a pole upcall_target=app, které příkazu cifs.upcall sděluje, aby před provedením jakékoli další akce přepnul do jmenných prostorů zadaného procesu. Zde nastupuje druhá polovina řetězce. Než cifs.upcall ztratí svá rootovská oprávnění, zavolá getpwuid(), aby vyhledal cílový účet. Toto vyhledávání zahrnuje také NSS (Name Service Switch), který načte sdílené knihovny uvedené v nsswitch.conf. Jmenný prostor ovládaný útočníkem ale může obsahovat také podvržený soubor nsswitch.conf a modul  libnss_*.so.2, čímž se podaří přimět nástroj, aby spustil načtení kódu NSS ovládaného útočníkem.

Existuje skript předvádějící útok, který výše popsaného postupu využívá k umístění konfiguračního souboru do adresáře sudoers.d, který útočníkovi poskytne plný přístup přes sudo, po čemž stačí jediný příkaz k získání oprávnění root. Celý řetězec je následující: vytvořte falešnou žádost o klíč cifs.spnego, nasměrujte pole PID na proces v jmenném prostoru, který ovládáte, nechte cifs.upcall přepnout do vašeho jmenného prostoru, zatímco jste stále root, spusťte vyhledávání NSS před snížením oprávnění a načtěte svůj škodlivý modul NSS. Pět kroků, samé logické chyby, žádné narušení paměti.

Zda je váš systém ohrožen, závisí na souběhu tří faktorů: zranitelném jádře, zranitelné verzi balíčku c ifs-utils (6.14 nebo vyšší) a buď povolené uživatelské jmenné prostory bez oprávnění, nebo profily pro SELinux/AppArmor, které útok neblokují. Ubuntu 26.04, Fedora 40–44, CentOS Stream 10 a Rocky Linux 10 blokují zneužití ve svých výchozích konfiguracích. Všechny ostatní systémy to nedělají a jsou zranitelné. Pokud je balíček cifs-utils nainstalován na Ubuntu 18.04 až 24.04, Debianu 11 až 13, openSUSE Leap 15.6 nebo Oracle Linuxu 8 nebo 9, útok funguje.

Oprava spočívá v přidání jedné kontroly do jádra, která odmítne neoprávněné požadavky na autentizaci tokenu. Pokud pro síťové sdílené složky nepoužíváte ověřování CIFS nebo Kerberos, můžete odstranit balíček cifs-utils nebo vyřadit jaderný modul CIFS. Obojí problém zcela vyřeší, aniž byste museli čekat na opravu. Pokud je však používáte, správným řešením je aktualizace jádra. Oprava je v upstreamu k dispozici už týden, ale záleží na tvůrci distribuce, kdy ji zařadí do svých balíčků.

Našli jste v článku chybu?

Autor zprávičky

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.