Původním autorem článku Meltdown and Spectre Linux Kernel Status je vývojář linuxového jádra Greg Kroah-Hartman. Původní článek i tento překlad jsou k dispozici pod licencí CC by-nc-sa.
Nepůjdu do detailů týkajících se zmíněných problémů, místo toho vás odkážu na skvěle napsaný materiál Project Zero. Měla by jim za to být udělena cena Pwnie, je to výborné.
Pokud vás zajímají technické detaily o tom, jak jsme chyby řešili v jádře, podívejte se na skvělý zápisek na lwn.net. Existuje také pěkné shrnutí různých zpráv včetně těch od jednotlivých výrobců.
Pokud jde o to, jak se k věci jednotlivé společnosti postavily, bylo by možné o tom sepsat knížku „Jak správně nekomunikovat s linuxovými vývojáři“. Zainteresovaní lidé a společnosti vědí, co se stalo a jsem si jistý, že to vyjde najevo. Teď se ale musíme soustředit na opravy chyb a ne na vzájemné obviňování. Bez ohledu na to, jak moc bychom chtěli.
Co můžete udělat?
Pokud vaše linuxové systémy běží na normální linuxové distribuci, aktualizujte jádro. Všechny už by měly mít k dispozici aktualizace. Poté v následujících několika týdnech neustále průběžně aktualizujte, protože stále pracujeme na různých okrajových případech. To zahrnuje také velmi komplexní testování na různých systémech a použitích. Pokud vaše distribuce ještě aktualizace jádra nenabízí, důrazně vám doporučuji distribuci změnit.
Přesto existuje spousta systémů, na kterých z různých důvodů neběží „normální“ linuxová distribuce. Závisejí na aktualizacích LTS jádra, na běžných aktualizacích stabilních verzí nebo jde o různá podomácku udělaná sestavení. Pro takové lidi tu mám informace o současném stavu v jádře, které můžete použít.
Meltdown – x86
V tuhle chvíli obsahuje Linusův strom všechny opravy zranitelnosti Meltdown pro architekturu x86, o kterých víme. Při překladu jádra si zapněte volbu CONFIG_PAGE_TABLE_ISOLATION
, zkompilujte, restartujte a budete v pohodě.
Linusův strom je v současné době ve verzi 4.15-rc6 + některé další patche. Verze 4.15-rc7 by měla vyjít zítra (ve skutečnosti už vyšla, článek je několik dní starý – pozn. redakce) a zahrne zmíněné záplaty, které opraví další problémy. Většina lidí ale nepoužívá –rc jádro v „normálním“ prostředí.
Právě kvůli tomu odvedli vývojáři x86 jádra fantastickou práci a backportování kódu do nejnovějšího stabilního jádra 4.14 pro mě bylo naprosto triviální. To znamená, že nejnovější jádro z řady 4.14 (v tuto chvíli 4.14.13) je právě tím, které byste měli používat. Přidává některé opravy, které občas bránily jádru 4.14.12 na konkrétních sestavách bootovat.
Chtěl bych osobně poděkovat Andymu Lutomirskému, Thomasi Gleixnerovi, Ingu Molnarovi, Borislavu Petkovi, Davovi Hansenovi, Peterovi Zijlstrovi, Joshovi Poimboeufovi, Juergenu Grossovi a Linusi Torvaldsovi za všechnu tu práci při vývoji oprav a jejich zařazení do upstreamu v takové podobě, která pro mě byla velmi stravitelná a umožnila stabilním vydáním správně fungovat. Ani si nechci představovat, co bychom bez jejich snahy dělali.
U starších stabilních (LTS) jader jsem stavěl na práci Hugha Dickinse, Davea Hansena, Jiřího Kosiny a Borislava Petkova, což mi umožnilo stejnou funkci přenést i do jader řady 4.4 a 4.9. Nesmírné pomoci se mi dostalo také od Guentera Roecka, Keese Cooka, Jamieho Ilese a mnoha dalších lidí hledajících ošklivé bugy. Také bych chtěl vyzdvihnout roli Davida Woodhouse, Eduarda Valentina, Laury Abbottové a Rika van Riela za jejich práci na backportování a integraci. Jejich pomoc byla v mnoha složitých situacích velmi zásadní.
Tato LTS jádra mají také volbu CONFIG_PAGE_TABLE_ISOLATION
, kterou byste pro plné zabezpečení měli zapnout.
Protože tento konkrétní backportovaný kód je hodně odlišný od toho, který je v jádrech 4.14 a 4.15, objevují se v něm jiné bugy. V tuto chvíli víme o nějakých VDSO problémech, na kterých pracujeme a o divných chybách u konkrétních použitích ve virtuálech. Jde ale o minoritní problém, který by vám rozhodně neměl bránit v okamžité aktualizaci. Pokud se přesto dostanete do problémů, dejte nám o nich vědět na mailing listu.
Pokud jste závislí na jiné verzi než 4.4, 4.9 nebo 4.14 a vaše distribuce vám s tím nepomůže, máte smůlu. Chybějící záplaty na Meltdown jsou stejně maličkostí proti stovkám jiných exploitů a bugů, které vaše nepodporované jádro obsahuje. Toho byste se v tuhle chvíli měli bát víc než čehokoliv jiného a měli byste si dát systém do pořádku.
Jděte seřvat lidi, kteří vás donutili používat zastaralé a nebezpečné jádro. Měli by pochopit, že je to velmi lehkovážné.
Meltdown – ARM64
V současné době není sada záplat pro Meltdown součástí Linusova stromu. Jsou připravené a budou zařazeny do verze 4.16-rc1, jakmile během následujících týdnů vyjde 4.15. Protože nejsou součástí vydaného Linusova jádra, nemůžu je zařadit do stabilních vydání (pro tyhle věci existují pravidla).
Pokud jste ve svých systémech závislí na ARM64 (třeba kvůli Androidu), odkážu vás na Android Common Kernel tree. Všechny opravy byly zařazeny do větví 3.18, 4.4 a 4.9.
Důrazně vám doporučuji sledovat stav těchto větví, protože se v nich objeví další opravy. Kvůli testování to bude ještě chvíli trvat a bude se to dít postupně, jak se jednotlivé opravy objeví v upstreamu. V tuto chvíli netuším, kdy se tyhle záplaty dostanou do stabilního a LTS jádra.
V případě jader 4.4 a 4.9 je tu jistá šance, že se do nich záplaty nedostanou nikdy kvůli velkému množství závislostí na starších záplatách. Ty všechny byly důkladně testovány a jsou zařazeny do androidích jader, takže je podle mě lepší zůstat u těchto verzí místo LTS vydání pro ARM.
Všechny tyto LTS záplaty jsem přidal do větví den po vydání, takže byste tyto verze měli následovat ať se děje cokoliv, abyste zajistili aktuálnost a bezpečnost svého systému s architekturou ARM.
Spectre
Teď to začne být „zajímavé“…
Znovu: pokud provozujete distribuční jádro, měli byste mít vyřešeno, protože některé distribuce už zavedly různé záplaty a tvrdí, že řeší většinu problémů. Pokud se tohoto typu útoku obáváte, doporučuji vám aktualizovat a testovat.
Stav v upstreamu je takový, že jsme zatím vůbec nezavedli žádné opravy pro tento typ chyb. V různých mailing listech je k dispozici mnoho různých záplat, které navrhují různá řešení. Všechny jsou ale stále ve vývoji a některé se nedaří ani zkompilovat nebo aplikovat na žádný vývojový strom jádra. Různé varianty spolu kolidují a je v tom prostě velký zmatek.
Je to způsobeno hlavně tím, že jsme chybu Spectre začali řešit až jako poslední. Všichni jsme pracovali na vyřešení chyby Meltdown a neměli jsme žádné konkrétní informace o tom, co to vlastně Spectre je a že jsou opravy ve velmi špatném stavu.
Kvůli tomu všemu bude linuxové jaderné komunitě trvat ještě několik týdnů než problémy vyřeší a zavede do kódu potřebné záplaty. Opravy přicházejí do různých subsystémů napříč jádrem a jakmile budou posbírány a spojeny, dostanou se do stabilního vydání. Znovu: nejlepší bude se držet aktuálních distribucí vydání jádra nebo LTS a stabilního vydání z upstreamu.
Nejsou to nejlepší zprávy, ale taková je skutečnost. Pokud vás to uklidní, nevypadá to, že by některý jiný operační systém měl konečné řešení. Všichni jsme v tuhle chvíli na jedné lodi a musíme počkat a nechat vývojáře problém vyřešit.
Navrhovaná řešení nejsou jednoduchá, ale některá z nich jsou neuvěřitelně dobrá. Retpoline od Paula Turnera je příkladem nového přístupu k řešení těchto chyb. Jistě to v následujících letech bude oblast rozsáhlých výzkumů, které teprve ukáží, jak vyřešit problémy v hardware předvídajícím budoucnost.
Další architektury
Zatím jsem neviděl záplaty pro jiné architektury než x86 a arm64. Mluví se o tom, že v některých enterprise distribucích existují záplaty pro další typy procesorů. Doufejme, že v následujících týdnech vyplavou a budou zařazeny do upstreamu. Nemám tušení, kdy se to stane, pokud jste závislí na konkrétní architektuře, doporučuji se informovat na příslušném mailing listu.
Shrnutí
Znovu: aktualizujte jádro, nečekejte a nepřestávejte. Aktualizace opravující tyto chyby se budou ještě objevovat velmi dlouho. Zároveň ve stabilních a LTS vydáních existuje spousta dalších bugů a bezpečnostních problémů, které jsou na současných problémech nezávislé. Průběžně aktualizovat je proto dobrý nápad.
V tuhle chvíli je tu spousta přepracovaných, nevrlých, unavených a jednoduše naštvaných jaderných vývojářů, kteří tvrdě pracují na opravě chyb, které sami nezpůsobili. Prosím, buďte k jejich situaci ohleduplní. Potřebují všechnu lásku, podporu a neustálý přísun jejich oblíbeného nápoje, jaké jim můžeme dát. Jen tak zajistíme, abychom co nejdříve získali opravený systém.