Copy Fail — zranitelnost v jádře Linux, která umožňuje získat root ve většině distribucí

Výzkumníci ze společnosti Xint odhalili zranitelnost (CVE-2026-31431) v jádře Linux, která umožňuje nepotřebnému uživateli získat root přístup k systému. Problém byl pojmenován jako Copy Fail. K dispozici je prototyp exploitů. Možnost exploatace zranitelnosti byla demonstrována na Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 a SUSE 16, ale bylo poznamenáno, že také balíčky jader z jiných distribucí, včetně Debianu, Archu, Fedory, Rocky a Alma, jsou problémem postiženy, avšak nebyly samostatně testovány.

Zranitelnost je způsobena logickou chybou v crypto API (AF_ALG) jádra Linux, která vznikla při optimalizaci v roce 2017, jež odstraňuje nadbytečnou buffering skrze provádění operací blokového šifrování AEAD (Authenticated Encryption with Associated Data) na místě (in-place). Problém nastal kvůli nezváženému využití funkce splice(), která předává data mezi souborovými popisovači a kanály (pipe) bez kopírování, prostřednictvím předávání odkazů na prvky ve stránkovém cache. Po provedení optimalizace při předávání souboru do socketu AF_ALG pro dešifrování se do struktury scatterlist zapisoval nikoli odkaz na samostatný buffer, ale přímý odkaz na prvky stránkového cache jádra obsahující data souboru.

Později v procesu dešifrování AEAD došlo k míchání odkazovaných dat autentizačního tagu s kopírovanými do RX bufferu dodatečnými autentizovatelnými daty (AAD, Associated Authenticated Data) a šifrovaným textem, a offset pro zápis do autentizačního tagu byl vypočítán na základě zkopírovaných dat bez řádných kontrol, což umožnilo přepsat libovolné oblasti ve stránkovém cache.

Zranitelnost umožňuje při každém požadavku přepsat 4 bajty na vybraném offsetu, což útočníkovi umožňuje prostřednictvím odeslání série požadavků změnit obsah jakéhokoli souboru v systémovém stránkovém cache, který je dostupný pro čtení, zajištěním jeho umístění do cache. Jelikož při jakýchkoli operacích čtení ze souborů je obsah nejprve dodáván ze stránkového cache, po výměně informací v stránkovém cache jádro nebo proces při čtení dat ze souboru obdrží nikoli skutečné, ale podvržené údaje, což může být použito k vkládání kódu do spouštěcích spustitelných souborů nebo načítaných sdílených knihoven.

Pro vykonání kódu s právy root stačí upravit stránkovou mezipaměť pro jakýkoli spustitelný soubor s flagem suid root.
V navrženém exploit se provádí čtení spustitelného souboru /usr/bin/su a modifikace jeho obsahu načteného do stránkové mezipaměti tak, aby se do něho vkládal vlastní kód. Při následném spuštění utilitky „su“ se do paměti nenačte originální spustitelný soubor z úložiště, ale pozměněná kopie ze stránkové mezipaměti.

Exploit je univerzální, nevyžaduje přizpůsobení pro distribuce nebo verze jádra a může být použit s jakýmikoli distribucemi. Vzhledem k tomu, že při použití kontejnerové izolace pro všechny kontejnery se používá společná stránková mezipaměť, může být zranitelnost využita k získání přístupu k hostitelskému prostředí z kontejneru (později slibují zveřejnit exploit pro obcházení izolace v Kubernetes).

Zranitelnost byla identifikována pomocí AI přibližně po hodině experimentování s analýzou kódu kryptosystému jádra. Problém se projevuje od jádra Linux 4.14, vydaného v roce 2017, a byl opraven v jádrech 6.18.22, 6.19.12 a 7.0. Stav odstranění zranitelností v distribucích lze posoudit na těchto stránkách: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora, ROSA.

Jako obranou proti ochraně lze deaktivovat modul jádra algif_aead, který se používá v OpenSSL při explicitním zapnutí enginu afalg a v některých aplikacích (ověřit přítomnost takových spuštěných aplikací lze příkazem „lsof | grep AF_ALG“):

    echo „install algif_aead /bin/false“ > /etc/modprobe.d/disable-algif.conf
    rmmod algif_aead

    Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster