Portál AbcLinuxu, 4. května 2025 23:09
Aktuální verze jádra. Citáty týdne: Ingo Molnar, Andrew Morton, Casey Schaufler. Ovladač Nouveau opouští staging. Začleňovací okno verze 3.4, druhá část. Rozšíření IMA pro ověřování integrity.
Začleňovací okno pro verzi 3.4 zůstává otevřené, takže nevyšla žádná vývojová verze jádra. Pro přehled změn přetažených do jádra 3.4 vizte článek níže.
Stabilní aktualizace: verze 3.0.26 a 3.2.13 vyšly 23. března; obě obsahují několik důležitých oprav.
Aktualizace 2.6.34.11 vyšla 22. března; má notně dlouhý seznam oprav.
Současný trend je takovýto: mezi 1000 zaslanými patchi je možná jeden patch, který má v přehledu změn příliš mnoho informací – ale alespoň obsahem přehledu změn pobaví, takže je stále v pořádku. 990 patchů má příliš málo informací. Zbylých 9 je v pořádku.
-- Ingo Molnar
Když jsem se tuto věc pokoušel zkontrolovat, zamotala se mi z toho hlava a pak jsem se sklátil na zem.
-- Andrew Morton má nebezpečné zaměstnání
V běžném počítačovém prostředí je žádoucí naplnit log upozorněními, aby s nimi mohl uživatel něco udělat. Na telefonu, set-top boxu, televizi nebo domácím kině je systémové logování špatná věc. Nikdo, komu nepřísluší se na zprávy v logu dívat, nechce žádné vidět. Je úplně jedno, jak důležitá tato zpráva může být.
Je čím dál obtížnější mít rozumné ošetřování chyb na úrovni OS, protože se prostředí aplikací posouvají na čím dál vyšší úroveň a směrem k vyšší abstrakci.
Linus začlenil patch, který přesouvá grafický ovladač Nouveau z jeho symbolického umístění ve staging do plnohodnotné hlavní řady; tento krok je mimo jiné znamením toho, že se neočekávají žádné změny v ABI (ke kterým už nějakou dobu stejně nedošlo). Taktéž byla začleněna počáteční podpora pro nastavování režimu na právě vydaných čipsetech „Kepler“ od NVIDIA.
(„Symbolického“, protože kód Nouveau nikdy ve stromu staging nebyl; jen tam byla umístěna konfigurační volba.)
V oznámení verze 3.3 Linus vývojáře upozorňoval, že si během začleňovacího okna dopřeje trochu oddychu; to se během minulého týdne skutečně stalo. Přesto se mu podařilo přetáhnout nějakých 4000 změn od přehledu změn z minulého týdne. Některé z důležitějších změn začleněných za poslední týden obsahují:
Změny viditelné jaderným vývojářům zahrnují:
bool poll_does_not_wait(const poll_table *p);které vrátí true, pokud se ví, že volání poll() nebude blokovat.
Za zmínku stojí i to, že bylo odvedeno mnoho práce ve stromu architektury ARM; aktivně se pracuje na konsolidaci a pročišťování kódu.
Začleňovací okno verze 3.4 by normálně skončilo kolem 2. dubna. Když Linus oznamoval, že bude mít dovolenou, tak řekl, že prodlouží začleňovací okno, pokud to bude potřeba – i když upozorňoval, že bude brát v potaz jen požadavky na přetažení zaslané během tohoto okna. Jak se to nakonec přihodí, se teprve uvidí; tak či tak se v příštím vydání podíváme na další zařazenou funkčnost.
"Integrita" linuxového systému je založena na tom, zda na něm běží kód, který administrátor očekává. Pokud tomu tak není, tak mohlo dojít ke kompromitaci systému. Linuxový subsystém integrity má právě takovéto neočekávané změny v souborech detekovat, aby byl systém proti kompromitaci ochráněn. Toho je možné docílit vytvářením „měření“ integrity (hashe obsahu a metadat) u hlídaných souborů.
Většina toho, co je pro správu integrity nutné, se už dostala do hlavní řady, ale pár kousků ještě schází. Sada patchů pro rozšíření IMA (architektura pro měření integrity) od Mimiho Zohara a Dmitryho Kasatkina doplňuje jeden chybějící dílek: ukládání a ověřování měření kontrolovaných souborů. Hash obsahu souboru a metadat bude uložen v rozšířeném atributu security.ima souboru a tato sada patchů bude vytvářet a spravovat tyto atributy. Navíc umožní vynucování toho, že obsah souboru musí být při otevírání pro čtení nebo spuštění „správný“, a to na základě uložených údajů.
Subsystém integrity měl poněkud trnitou cestu do jádra. Byl navržen už v roce 2005, ale pak byl postupně rozdělen do menších kousků. Většina IMA byla přidána do jádra ve verzi 2.6.30, ale další kus „extended verification module“ (EVM) se toho dočkal až ve verzi 3.2. Podpora digitálních podpisů byla do EVM zařazena ve verzi 3.3 a vyhodnocovací kód pro IMA se právě reviduje.
Na webové stránce IMA se píše, že subsystém integrity je určen k zastavení různých útoků proti obsahu souborů, a to online i offline. Neočekávané změny v souborech, zejména pak spustitelných, mohou být znamením, že systém byl kompromitován. Kromě toho subsystém umožňuje použití modulu TPM pro shromažďování měření integrity a jejich podepisování tak, aby se systém mohl za integritu zaručit. Toto potvrzení by mohlo být zasíláno jinému systému jako důkaz, že systém je nedotčen – běží pouze schválený kód.
Aktuální jádra mohou generovat měření integrity spouštěných souborů, shromažďovat je a digitálně je podepisovat pomocí klíčů z TPM (nebo jaderné klíčenky) a používat tyto informace pro vzdálené ověřování. EVM přidává možnost překazit offline útoky na soubory hashováním hodnot rozšířených atributů souboru (např. security.selinux, security.ima), jejich podepsáním a uložením jako security.evm.
Ale zatím jsme se ještě nedostali k tomu, co by zabránilo systému číst nebo spustit soubor, který byl změněn. Pokud je soubor s hashem IMA otevřen pro čtení a zápis, rozšíření ověří, zda obsah odpovídá hashi. Pokud nesouhlasí, tak o tom, co se bude dít, rozhoduje argument jádra ima_appraise. Pokud je nastaven na „enforce“, pak je přístup k souboru odepřen, zatímco „fix“ zaktualizuje atribut IMA na novou hodnotu. „off“ pak znamená, že je posuzování zcela vypnuto.
Aby se docílilo vytvoření počátečních hodnot atributů security.ima na souborech, které se mají hlídat (ve výchozím stavu všechny soubory vlastněné rootem), stačí spustit jádro s parametrem ima_appraise_tcb a ima_appraise=fix a následně otevřít všechny soubory, o které máme zájem (např. pomocí příkazu find, jak je navrhováno na webu IMA).
V reakci na starší verzi patche se James Morris zeptal, zda některá distribuce plánuje používat IMA a EVM, jakmile bude všechno pohromadě. George Wilson sdělil, že IBM má plány je používat interně, jakmile to distribuce zařadí. Kromě něj se ozvali Ryan Ware a Kasatkin s tím, že mobilní distribuce Tizen bude toto používat pro některé typy produktů.
Ale než k tomu dojde, tak rozšíření pro posuzování musí změnit svůj způsob zamykání, aby se dostalo přes zamítnutí od Ala Vira. V aktuálním patchi je závěrečné __fput() odloženo, pokud je soubor zavřen před zavoláním munmap(). Viro má obavy, že změna chování na základě toho, jestli jádro IMA používá, nebo ne, může zkomplikovat odhalování problémů se zámky. Také řekl, že přidaná režie je pro takto vytěžované místo příliš vysoká a že patch nepokrývá všechna místa, kde je __fput() používáno. Zatím nebylo nalezeno žádné východisko, ačkoliv Al Viro navrhl používání jiného mutexu pro změny rozšířených atributů, i když by to znamenalo spoustu zkoumání kódu, aby se vůbec zjistilo, jestli je možné to udělat.
Vzhledem k tomu, že patch dokončuje to, co započalo EVM, a z větší části završí subsystém pro ověřování integrity, je pravděpodobné, že se řešení nakonec najde. Stále je tu ještě několik kousků zhodnocování IMA, které ještě zbývá dodělat, alespoň podle tohoto PDF. Jsou zmíněny dvě konkrétní věci – přidat schopnost digitálního podepisování u souborů podepsaných výrobcem a pak ještě možnost ochrany obsahu adresářů (např. názvů souborů). I když aktuálně navržené patche ještě potřebují trochu úsilí, vývojáři pracující na subsystému integrity už pravděpodobně konečně vidí světlo na konci velmi dlouhého tunelu.
Argument jadra ima_appraise:
Nemelo by to prvni byt spis: ima_appraise=tcb ?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.