Pozor! Blokovanie modulu alebo nieco podobne na RHEL systemoch nefunguje, pretoze modul maju skompilovany ako builtin. Tym padom ho nie je mozne zablokovat ani zabranit instalacii.
Toto ale funguje aj na RHEL:
grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
reboot
Musi sa ale rebootnut, pri zakazani modulu stacilo vypnut ten modul, pripadne ho zmazat.
problém není ani tak v tom, jestli to funguje nebo nefunguje, nýbrž v tom, že to tam bylo 9 let, aniž na to někdo přišel. ta proklamovaná výhoda OSS (že to může kontrolovat kdokoli) je do značné míry iluzorní, protože to skoro nikdo fakticky nedělá.
stejně jako dlouhý léta propagovaná údajná bezpečnost MacOSu, která ale měla původ především v tom, že nikomu nestálo za to na MacOS útočit.
a kromě toho je nejslabším místem stejně vždycky člověk.
kdyby to nikdo nedělal, tak se na to nikdy nepříjde a ta chyba tam sedí dál. A dělá se to, protože kód je OSS. U uzavařeného kódu vůbec o podobných zranitelnostech nevíš a ani je nedokážeš hledát.
Dnes je rozšíření macos mnohem vyšší než před lety, ale počet zranitelností stejnou mírou neroste.
To se úplně neslučuje s tím, že si linuxáci vždycky dělali srandu z microsoftu, kolik aktualizací vydává, a kolik chyb a slabin má nahlášeno. Představa, že ten nepoměr je dán tím, že zlej kořistnickej kapitalista platí špatný programátory, je dost scestná; daleko realističtější je, že ten zlej bohatej kapitalista má prachy na to, aby partu těch kteří to budou dělat na plný úvazek skutečně zaplatil, místo by to dělali zadax ve svým volným čase pro dobrej pocit.
To ze nekdo zkontroluje kod, neznamena ze v nem objevi vsechny chyby. Tedy tvoje uvaha ma chybu.
U otevreneho kodu je alespon nejaka sance, ze tu chybu nekdo najde, narozdil od uzavreneho kodu.
Tohle je ale fail jak kráva. A to, že se někdo tak dlouho neptal, jestli je ta ochrana proti zápisu dostatečná (obzvlášť po zkušenostech s meltdown) je alarmující. Jako nechci být generál po bitvě, ale z toho, že je takhle lehkovážně namapovaná page cache, mě otřásla zimnice.
IMHO tady jde o to, že tak velký projekt, byť OS, se už kontroluje dost špatně.
Lenze jestvuje Bystander effect a kazdy si mysli, ze to uz niekto iny pozrel. Ale neznamena to, ze sa na to realne pozrel. Teraz AI nachadza vela chyb, pre to ze sa na ten kod nik pred AI nepozrel.
a tady nastupuje kouzlo toho zlýho tlustýho kapitálu. bystander effect vyloučí jednoduše tím, že někdo zcela konkrétní dostane přidělen úkol se na to podívat, a pak se pod výsledek podepsat, a dostane zaplaceno za to, že to udělá dobře. a pokud se časem přijde na to, že se na to vyignoroval a prostě zkasíroval prachy, má fakticky na krku trestný čin podvodu. a zrovna v USA se sazbou podstatně tvrdší než tady, takže se dá daleko spíš spolehnout na to, že to fakt udělal.
jak přesně by tahle logika měla fungovat? kolik lidí to u OSS reálně dělá, vs kolik jich to dělá prokazatelně, protože je za to MS platí?
a jaká je kvalita jejich práce, když za to nedostávají zaplaceno, a dělají to zadax ve svým volným čase?
Ja nerikam jak to ma fungovat, ja napsal ze tvoje uvaha mela chybu.
Jinak linuxove jadro je vyvijeno i placenyma lidma, to sam vis. A jestli dobre koukam, tenhle konkretni chybovy kod byl vyvijen v ramci V&V, tedy grantove penize.
Nevím co dělám blbě, ale mě to na Debianu nefunguje. U mě na Sidu a ani na starším nezáplatovaném serveru. Objeví se prompt na heslo.
Ne. Jak tady někdo postnul přehled Security Trackery, kde by měl být Debian vulnerable, ale ne již up-to-date Sid. Takži Sid jasné. Ale já mám starší server a tam to nejde taky:
zito@jira-scan:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
zito@jira-scan:~$ uname -a
Linux jira-scan 6.1.0-42-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.159-1 (2025-12-30) x86_64 GNU/Linux
zito@jira-scan:~$ ./copy-fail.py
Password:
su: Authentication failure
zito@jira-scan:~$
30. 4. 2026, 13:42 editováno autorem komentáře
Později jsem zkusil Debian 13 a tam to fakt funguje... v Debianu 12 by se ten exploit asi musel trochu upravit.
prošlo mi to i u debian 12, dokonce i debian 10 je zranitelný, jen ten už nemá podporu. Problém je, že ten PoC exploit je takový prostě jen PoC...
Ne Gentoo, na vlastnoručně konfigurovaném kernelu mi to taky nefunguje. Zřejmě jsem ten modul nepovolil.
Funguje. Staci doinstalovat "yum install python3.12". Resp. ak ho uz niekto ma, tak to pouzije. Ak by nemal roota, tak python nepotrebuje ziadne specialne prava a uzivatel si ho moze stiahnut a rozbalit, nemusi byt nainstalovany ako root.
V RHEL a klonech je modul součástí jádra, viz:
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-*
Deaktivace je přes již výše v diskuzi zmíněný parametr jádra, tj:
grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init" reboot
Aby se změna projevila, je nutný reboot. Při použití kexec jsou typicky použity původní parametry jádra, nikoliv nové.
Kdybyste chtěli mrknout na CVE trackery s informacemi o vydání oprav u distribucí...
RedHat
https://access.redhat.com/security/cve/cve-2026-31431
SUSE
https://www.suse.com/security/cve/CVE-2026-31431.html
Debian
https://security-tracker.debian.org/tracker/CVE-2026-31431
Ubuntu
https://ubuntu.com/security/CVE-2026-31431
To krypto tahali do jadra jen kvuli falesnemu pocitu bezpeci (ze klice neleaknou), kdyz temer zadny procesor nema secure enclave? :D
Ale moc to nedava smysl.. kdyz ty tajna data tomu jadru stejne musite nekdy a nekudy z userspace dodat.
Kdo má poslední verzi debanu trixie s nejnovějším jádrem tak je chyba opravená. :-) Takze muj hw už je v pohodě.
Můj custom kernel vůbec nemá AF_ALG zakompilovanou.
To nepíšu jako plácnutí, že bych se jako chlubil, ale jako upozornění, že "kernel kompilují jen blázni, autisté a uživatelé Gentoo což jsou blázni a autisté, normální člověk to nechá na distribuci" je z pohledu bezpečnosti pěkně hloupý koncept, který pro trochu pohodlí zcela nepřiměřeně zvyšuje attack surface.
Vzpomene si někdo ještě na nedávný RCE na AF_SCTP? Lessons not learned.
Já teda nevěřím, že bych nakompiloval jádro lépe než správci mého distra, minimálně bez značného množství práce navíc.
Právě. Navíc když povypínám, co mi přijde zbytečné, mohu též snížit bezpečnost. Například mohu vypnout ASLR, nebo mohu vypnout něco, co je potřeba k lepšímu sandboxu.
Zkompilovat kernel do nějak funkčního stavu oproti tomu není až taková výzva, ostatně používal jsem Gentoo. Snad jediný nebootovatelný kernel byl, když jsem podporu root FS zkompiloval jako modul.
Tak to s tím ASLR je argument stylu, že když někdo přezouvá doma auto, tak mu může spadnout z heveru, nebo může urvat brzdovou hadičku.
Ten zbytek, ono je to věc priorit. Tvůrce distribucí, pochopitelně, obvykle usiluje o to, aby "to fungovalo na první dobrou", což je pravý opak "nemít tam kód, který se nepoužívá". Jeden pohled je "někdo tam strčil nějaké obskurní zařízení do USB, tak rychle modprobnout driver ať to funguje", něco jiného "někdo tam strčil obskurní zařízení, o něm nevím, takže asi jde o pokus o exploit a budu ho ignorovat, jen to lognu (což dělá kernel standardně)"
On je to argument, že musíš věnovat netriviální množství práce k tomu, abys to nepojebal. A nejspíš se to pořádně naučíš až když to několikrát pojebeš.
Právě.
> A nejspíš se to pořádně naučíš až když to několikrát pojebeš.
A možná ani to ne. Poučit se z toho, že mi kernel nenabootuje, je snadné. Poučit se z toho, že mám v něčem horší defense-in-depth, je už těžší. A i když bych se měl poučit z průniku, může si to vyžádat docela náročnou analýzu.
OK, možná vyjít z distribučního kernelu a ořezat jej o zbytečnosti by nějak ještě šlo. A pak mergovat konfigurace při každé aktualizaci.
já využívám toho, že jako základ beru ten osekaný kernel pro běh v VM a přidávám tam HW věci, které používáme.
Jop s tím distro kernelem za základ a odebírat (a někde i dost důrazně, typicky v různých net* subsystémech) máte svatou pravdu.
Projít komplet konfiguraci a volit přesně jen nutné šlo v době 2.4 až 2.6 kernelů, v dnešní době už je krajně netriviální z nuly dojít i do bashe v textovém režimu, navíc to i omezuje případné chyby tím, že o vypnutí věci člověk obvykle ví, co dělá, což rozhodně neplatí pro nezapnutí jedné z tisíce voleb.
ad mergovat - no s vanila kernelem pak drtivou většinu pak už řeší zcat /proc/config.gz >.config && make menuconfig
> ad mergovat - no s vanila kernelem pak drtivou většinu pak už řeší zcat /proc/config.gz >.config && make menuconfig
To mi nepřijde jako dobré řešení – znamená to, že jakmile proběhne nějaká volba, už se k ní nevracíte. Tedy může nastat situace:
1. Do kernelu přibyde nějaká defense-in-depth volba (ve stylu ASLR)
2. Distribuce na to bude zpočátku opatrnější – budete mít volbu zpočátku vypnutou.
3. Později se v distribuci rozhodnou tuto volbu zapnout. Jenže zmíněným postupem si to nezapnete, pokud se tomu nebudete iniciativně věnovat.
když se tomu nevěnuješ, tak nemá smysl to diskutovat, jdi do placené podpory nebo vezmi distribuci jako default a spoléhej, pak tě ale čekají tyhle rychlá a nečekaná kolečka aktualizací.
Linux je dnes strašný nepořádek, ty spousty špatných rozhodnutí se postupně nabalovaly až dnes je těžké to držet v nějakém rozumném determistickém stavu.
nikoliv lépe, ale mnohem specifičtěji. Sníží se tím velikost i vektor útoku. Při automatizované infra to nemusí být takový zásah. Kernel od správců distribuce se snaží být co nejkompatibilnější na různém HW, proto i občas vydávají tenké obrazy jen s drivery pro pro běh jako VM.
Přesně proto si kernel kompilujeme, sníží se tím množství rozhraní, které je možné zneužít a je potřeba je hlídat.
Jako uživatel Gentoo, co vynechává nepotřebné moduly, souhlasím, ale kernel jsem pro jistotu zkompiloval a aktualizoval :) A SSH na verze 10.3 taky.
Opensuse ma jiz fixle
https://bugzilla.suse.com/show_bug.cgi?id=CVE-2026-31431#c8