
GhostLock Je to název pro vysoce závažnou zranitelnost objevenou v linuxovém jádře. Identifikována jako CVE-2026-43499ovlivňuje zamykací subsystém rtmutex a může způsobit stav use-after-zdarma V určitých operacích Futex s děděním priorit by lokální, neprivilegovaný útočník mohl zneužít tuto zranitelnost ke zvýšení svých oprávnění na root a v určitých scénářích k úniku z kontejneru do hostitelského systému.
Problém je obzvláště závažný, protože zranitelný kód je v Linuxu přítomen již léta a je součástí funkce používané jádry hlavních distribucí. Oprava již byla vydána v hlavním jádře a byla také zpětně portována do udržovaných větví, ale uživatelé se musí ujistit, že jejich distribuce má nainstalované jádro, které tuto opravu obsahuje. Nestačí pouze zkontrolovat číslo verze jádra, protože distribuce často obsahují bezpečnostní opravy prostřednictvím zpětných portů.
GhostLock je zranitelnost v subsystému rtmutex.
Původ GhostLocku spočívá v kódu pro správu mutexů dědičnosti priorit v linuxovém jádře, konkrétně v kernel/locking/rtmutex.cTyto mechanismy jsou součástí infrastruktury používané ke koordinaci provádění různých vláken a k zamezení problémům s prioritami v určitých úlohách.
Zranitelnost souvisí s funkcí remove_waiter()Za určitých okolností mohl kód při zpracování futexového čekání vymazat informace spojené s nesprávným procesem. Výsledkem bylo, že ukazatel mohl skončit směřující do oblasti paměti na zásobníku jádra, která již byla uvolněna.
Tato podmínka představuje zranitelnost typu „použití po uvolnění“ : jádro si uchovává paměťovou referenci, jejíž životnost vypršela, a následně se ji může pokusit použít, jako by byla stále platná. Pokud se útočníkovi podaří ovládat podmínky nezbytné pro opětovné použití této paměti, může se z této chyby stát mnohem závažnější zranitelnost než prostý pád systému.
Chyba postihuje futex s děděním priorit.
Pro zneužití GhostLocku je nutné interagovat s dědičností priorit futexu . Futex je jedním ze základních primitiv, které Linux poskytuje pro synchronizaci vláken mezi uživatelským prostorem a jádrem, a je nepřímo využíván řadou aplikací a knihoven.
Problematická cesta se projevuje u operací opětovného zařazení do fronty futexů, které používají dědičnost priorit. V konkrétním scénáři deadlocku musí jádro vrátit zpět část operace a odstranit proces ze struktury čekání. Právě během této obnovy dochází k nesprávnému chování. remove_waiter().
Chyba v podstatě spočívala ve funkci používající current kdy mám použít úlohu spojenou s číšníkOprava, která problém řeší, mění právě toto chování tak, aby se používalo waiter->task.
Lokální útočník by mohl získat root oprávnění
Nejvýznamnějším důsledkem GhostLocku je možnost lokální eskalace oprávnění . Uživatel, který již má neprivilegovaný účet na zranitelném systému, se může pokusit spustit souboj a následně zneužít poškození paměti jádra.
To znamená, že GhostLock není zranitelnost, kterou by bylo možné zneužít pouhým odesláním škodlivé webové stránky vzdálenému uživateli. Útočník nejprve potřebuje schopnost spustit kód na postiženém systému. Tento požadavek však problém nečiní triviálním v prostředích s více uživateli nebo tam, kde je povoleno spouštění nedůvěryhodného softwaru.
Společnost Red Hat klasifikuje problém jako problém s významným dopadem a uvádí, že by mohl umožnit eskalaci oprávnění nebo odmítnutí služby. Zveřejněné hodnocení zranitelnosti CVE-2026-43499 je CVSS 7.8, což ji řadí do kategorie zranitelností s vysokou závažností.
GhostLock může být nebezpečný i v kontejnerech.
Jedním z aspektů, které činí GhostLock obzvláště zajímavým, je jeho potenciální dopad na systémy, které používají kontejnery. Zranitelný kód je přístupný z procesu běžícího uvnitř kontejneru, takže útočník, kterému se podařilo kompromitovat pracovní zátěž, se může pokusit zneužít tuto zranitelnost proti jádru hostitele.
V nejhorším případě by se zdánlivě lokální zranitelnost mohla proměnit v únik z kontejneru . Izolace poskytovaná kontejnerem nakonec závisí na jádře hostitelského systému, takže zneužitelná chyba v jádře může tuto hranici prolomit.
To je obzvláště důležité na multi-tenant serverech, kontejnerových platformách, serverech s kontinuální integrací a dalších infrastrukturách, kde kód od různých uživatelů nebo aplikací sdílí stejné jádro. Red Hat a další bezpečnostní doporučení doporučují věnovat těmto prostředím zvláštní pozornost.
GhostLock byl v jádře už roky.
Jednou z nejvýraznějších vlastností GhostLocku je stáří kódu obsahujícího chybu. Problém byl zaveden změnou provedenou v Linuxu 2.6.39 , vydaném v roce 2011, a zůstal v kódu přibližně patnáct let, než byl opraven.
Tato chyba neznamená, že všechny instalace Linuxu z těchto let byly po celé toto období aktivně zneužívány. Ukazuje však, že kus kódu používaný po dlouhou dobu může obsahovat nenápadné chyby, které se objeví pouze tehdy, jsou-li splněny určité podmínky synchronizace.
Tyto typy zranitelností je obzvláště obtížné odhalit, protože nezávisí na jednoduché operaci, jako je přístup k souboru nebo odeslání síťového požadavku. V tomto případě se jedná o více vláken, futex, dědičnost priorit a cestu pro zotavení z deadlocku.
Linux 7.1 již obsahuje opravu
Oprava CVE-2026-43499 Do hlavního jádra dorazil jako součást Linux 7.1Změna identifikovaná commitem 3bfdc63936dd, upravuje remove_waiter() použít úlohu patřící k odstraňované položce namísto aktuálně spuštěné úlohy.
Oprava byla také vrácena zpět do různých stabilních větví Linuxu. Pro ochranu proto není nutné používat Linux 7.1 nebo novější. Opravené verze existují ve větvích LTS, včetně 6.18, 6.12, 6.6, 6.1, 5.15 a 5.10.
Jinými slovy, systém se starším jádrem může být plně chráněn, pokud jeho distribuce správně implementovala zadní portZ tohoto důvodu zkontrolujte pouze číslo, které vrací uname -r V distribucích, které si udržují vlastní jádra, nemusí být dostatečné určit stav zabezpečení.
Distribuce musely aplikovat vlastní záplaty
Záplaty z upstreamu se k uživatelům nedostanou nutně ve stejnou dobu, kdy jsou publikovány na kernel.org. Linuxové distribuce si udržují vlastní balíčky jádra a obvykle zahrnují bezpečnostní opravy do větví, které podporují.
Například AlmaLinux vydal opravená jádra pro verze 8, 9 a 10 krátce po odhalení zranitelnosti GhostLock. Distribuce specifikovala konkrétní verze balíčků jádra obsahující opravu a doporučila aktualizaci a restart systému pro načtení nového jádra.
Podobná situace je i v jiných podnikových a komunitních distribucích. Obecným doporučením proto je používat oficiální aktualizační kanály pro každou distribuci a ověřit si jejich příslušná bezpečnostní upozornění, spíše než předpokládat, že konkrétní jádro je zranitelné nebo bezpečné, pouze na základě jeho základní verze.
Neexistuje žádné jednoduché zmírnění, které by mohlo nahradit záplatu.
Dalším důležitým aspektem GhostLocku je, že neexistuje jednoduchý způsob, jak tuto zranitelnou funkcionalitu deaktivovat bez aktualizace jádra. Problém spočívá v generickém kódu v rámci zamykacího subsystému a ve futexové trase, která je součástí běžných funkcí jádra.
Proto deaktivace určitých mechanismů jmenných prostorů nebo použití standardních omezení pro zadržování procesů není ekvivalentní záplatování. Dostupné informace o GhostLocku konkrétně naznačují, že se nespoléhá na jmenné prostory neprivilegovaných uživatelů , takže posílení této funkce tuto zranitelnost neodstraňuje.
Na serverech, kde nejsou možné okamžité aktualizace, může omezení přístupu pro nedůvěryhodné uživatele sloužit jako hloubkové obranné opatření, ale neodstraňuje zranitelnost. Skutečným řešením je spustit jádro obsahující opravu.
Jak zkontrolovat, zda je jádro aktuální
Uživatelé mohou zkontrolovat aktuálně spuštěnou verzi jádra pomocí příkazu uname -rNicméně, aby se zjistilo, zda GhostLock Je to opraveno; je třeba porovnat tento výsledek se stavem zabezpečení zveřejněným použitou distribucí.
V upstreamovém jádře je oprava přítomna od verze Linux 7.1. V udržovaných větvích existují starší verze, které tuto záplatu také obsahují, ale přesná čísla se liší v závislosti na větvi a distribuci. Například sledování zranitelností identifikuje jako upstreamové verze mimo jiné Linux 6.18.27, 6.12.86, 6.6.140 a 6.1.175.
Pokud tedy počítač používá Ubuntu, Debian, Fedoru, Arch Linux, RHEL, AlmaLinux nebo jakoukoli jinou distribuci, je vhodné nainstalovat nejnovější bezpečnostní aktualizace dostupné pro danou distribuci a restartovat počítač, pokud bylo jádro aktualizováno.
GhostLock demonstruje důležitost udržování jádra aktuálního
GhostLock je dobrým příkladem toho, jak může zranitelnost přetrvávat roky v extrémně složité části linuxového jádra, aniž by byl její dopad patrný, dokud někdo nenajde způsob, jak se k problematické cestě dostat. V tomto případě může zdánlivě malá chyba ve zpracování procesu, který čeká na mutex, nakonec poskytnout způsob, jak poškodit paměť jádra.
Problém je obzvláště relevantní na víceuživatelských serverech a kontejnerových platformách, kde útočník může mít prostředí, ze kterého může spouštět kód, aniž by měl zpočátku oprávnění na hostitelském systému. Možnost získání root oprávnění nebo úniku z kontejneru výrazně zvyšuje důležitost aplikace opravy.
Dobrou zprávou je, že GhostLock již byl opraven v hlavním linuxovém jádře a opravy byly zpětně portovány do udržovaných větví . Uživatelé nemusí přepínat distribuce ani instalovat vývojové jádro; stačí se ujistit, že jejich distribuce vydala balíček s opraveným jádrem a že jej jejich systém používá.