Přeskočit na obsah
Tech-Blog Chatujme.cz Chatujme.cz
Počítače

Fedora 45 omezí kryptografické rozhraní jádra AF_ALG na hrstku známých programů

Rozhraní AF_ALG, kterým se programy dostanou ke kryptografii uvnitř linuxového jádra, je od verze 7.2 zavržené. Přispěla k tomu chyba Copy Fail: skript o 732 bajtech s ní podle autorů získá práva správce na každé distribuci vydané od roku 2017. Fedora schválila změnu, která k rozhraní v příštím vydání pustí jen tři známé programy.

· aktualizováno 1. 9. 2026 · 186 zhlédnutí

Programy si na Linuxu můžou nechat šifrovat data přímo jádrem. Slouží k tomu rozhraní AF_ALG: aplikace otevře socket, jménem si vybere algoritmus, pošle do něj data a přečte si výsledek. Od jádra 7.2 nese to rozhraní v dokumentaci i v nabídce překladu poznámku, že je zavržené, a Fedora se na jeho konec začíná chystat.

Pracovní plocha Fedory Workstation 38 s otevřeným prohlížečem a terminálem, ve kterém běží výpis údajů o systému
Pracovní plocha Fedory Workstation 38; v terminálu je vidět jádro řady 6.2, ve kterém bylo AF_ALG ještě bez omezení. Foto: The Fedora Project, Wikimedia Commons (CC BY-SA 4.0)

K čemu rozhraní vzniklo

Původní důvod byl praktický. Řada procesorů a čipových sad má vlastní kryptografický akcelerátor a ovladač k němu žije v jádře. AF_ALG dovolilo dostat se k tomu ovladači i z běžného programu, aniž by k němu autor musel psát vlastní obsluhu. Podle Erika Biggerse, který v jádře na kryptografii pracuje, přibylo rozhraní v roce 2010.

Druhá výhoda byla úspora práce. Kdo potřeboval jen spočítat otisk nebo něco zašifrovat, nemusel k programu přibalovat celou kryptografickou knihovnu. Právě tenhle argument dnes neplatí. Knihoven je dost, jsou rychlé a běží v uživatelském prostoru, kde chyba shodí nanejvýš ten program.

Copy Fail

Zlom přišel na konci dubna 2026. Zveřejněná chyba CVE-2026-31431, které autoři dali jméno Copy Fail a vlastní stránku, sedí v modulu algif_aead – tedy v té části AF_ALG, která obsluhuje šifrování s ověřením celistvosti dat. Objevil ji Taeyang Lee ze společnosti Theori pomocí jejich nástroje na statickou analýzu kódu Xint Code.

Chyba dovolí neprivilegovanému uživateli zapsat čtyři vybrané bajty do vyrovnávací paměti stránek u libovolného souboru, který smí číst. Není v tom žádný závod o čas ani závislost na verzi jádra, jde o chybu v logice. Poškozená stránka se přitom neoznačí jako změněná, takže se obsah nikdy nezapíše na disk – soubor na disku zůstane netknutý a kontrola otisků nic nenajde. Další čtení se ale obslouží z paměti, takže stačí zamířit na program s nastaveným bitem setuid a upravit ho za běhu.

Útočný skript má 732 bajtů a podle autorů zabere na každé distribuci vydané od roku 2017. Přímo vyzkoušeli Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 a SUSE 16. Zasažená jsou jádra od verze 4.17 výš a modul bývá v nastavení distribucí zapnutý.

Jádro rozhraní zavrhlo

Biggers napsal do konference oss-security ještě před opravou, že v tom vidí příležitost. Jeho zpráva z 6. května shrnuje důvod jednou větou: kryptografické knihovny v uživatelském prostoru existují a kvůli počítání se není proč přepínat do režimu jádra.

Do jádra 7.2 se pak dostala trojice změn. První dopsala poznámku o zavržení do dokumentace i do nabídky překladu. Druhá vyhodila podporu předávání dat bez kopírování, tedy přesně tu cestu, kterou Copy Fail zneužil. Třetí odřízla akcelerátory mimo hlavní procesor, takže rozhraní teď sáhne jen po softwarových implementacích algoritmů.

„AF_ALG je skoro úplně zbytečné a vystavuje obrovskou plochu k útoku, která moderním nástrojům na hledání zranitelností nestačí. Ten poslední nález má dokonce vlastní web s krátkým skriptem v Pythonu, který spolehlivě získá práva správce na většině linuxových distribucí,“ napsal Biggers v komentáři k záplatě.

Zrušení akcelerátorů bere rozhraní jeho původní smysl. Biggers to v odůvodnění přiznává a dodává, že zatím neviděl reálnou úlohu, kde by se šifrování přes AF_ALG na akcelerátoru vyplatilo proti počítání v uživatelském prostoru. Kdyby se taková našla, mělo by pro ni podle něj vzniknout nové rozhraní.

Fedora si chce najít neznámé uživatele

Návrh změny Disable in Kernel Crypto Userspace API (Phase 1) podali Peter Robinson a Justin Forbes, míří na Fedoru Linux 45 a inženýrský výbor projektu ho už schválil. První fáze nesahá na nic, co dnes funguje: opře se o záplaty, které mají do jádra dorazit patrně v řadě 7.3, a omezí přístup k rozhraní na seznam známých programů.

Ve Fedoře jsou tři. Bezdrátový démon iwd, nástroj cryptsetup – ten rozhraní používá jen u svazků TrueCrypt, tcplay a VeraCrypt a při měření výkonu – a knihovna libkcapi, po které sahá dracut a překlad jádra. Žádný z nich touhle fází neutrpí. Cryptsetup si umí sáhnout jinam už teď, uživatelům iwd návrh doporučuje přejít na wpa_supplicant, protože iwd nemá podle textu návrhu žádného aktivního správce.

Smysl toho kroku je vypátrat, kdo další rozhraní volá. Fedora tím chce dopředu najít programy, o kterých nikdo neví, a domluvit se s jejich autory dřív, než rozhraní z jádra zmizí úplně. Návrh počítá i s couvnutím: kdyby se ukázalo, že omezení někoho bolí, dá se do vydání zase vypnout.

Poučení mimo kryptografii

Biggers ve zprávě do oss-security obrací pozornost od jednoho modulu k rozhraním jádra obecně. Předávání dat bez kopírování je podle něj samo o sobě riskantní, protože dovolí poslat stránky z paměti cizího souboru do velkého kusu kódu, který si musí dát pozor, aby do nich nezapsal. U výkonově citlivého síťování a práce se soubory se toho zbavit nedá, u zřídka používaných rozhraní ale ano.

Druhá poznámka míří na rozsah. Rozhraní podle Biggerse nemá uživatelskému prostoru automaticky otevírat všechno, co je za ním – zvlášť ne věci, které jdou udělat i mimo jádro. Copy Fail k tomu dodává konkrétní příklad: exploit sáhl po algoritmu authencesn, který ze tří známých uživatelů ve Fedoře nepotřebuje ani jeden.

Zavržení samo o sobě nic nevypíná a jádro 7.2 běží dál i s AF_ALG. Podstatná je právě ta první fáze ve Fedoře: teprve seznam povolených programů ukáže, kolik toho na rozhraní ve skutečnosti visí, a bez toho čísla se o vypnutí nedá rozhodnout.

Zdroje

Počítače

Linux kryptografie Jádro Linuxu zranitelnosti Fedora

← zpět na výpis