V kryptografickém subsystému Linux odstranění podpory se připravuje nulová kopie z rozhraní AF_ALG pro typy algoritmů ŠIFRA и AEADZměna je již ve stromu cryptodev a čeká na odeslání do slučovacího okna. Linux 7.2, jehož spuštění je naplánováno na červen. Důvodem byly rostoucí obavy o bezpečnost mechanismů nulového kopírování v jádře, zejména po nedávných zranitelnostech v kryptografickém kódu. Linux.
AF_ALG - Je uživatelské rozhraní k kryptografickému API jádra LinuxProstřednictvím něj mohou programy přistupovat k implementacím šifer, hašů a algoritmů AEAD v jádře jako k soketům. Dokumentace. Linux samostatně popisuje režim nulového kopírování pro AF_ALG pomocí splice() a vmsplice(), ve kterém se jádro snaží zabránit zbytečnému kopírování dat do paměti jádra.
Problém je, že v případě AF_ALG nebyl tento nárůst výkonu tak významný a rizika byla příliš velká. Autor změny, vývojář kryptografického subsystému Linux Eric Biggers z Googlu, poukázal, že nulová kopie umožňuje uživatelskému prostoru spouštět kryptografické operace přímo na stránkách mezipaměti stránek souborů, jako je například binární soubor su, a také vytváří podmínky pro zranitelnosti TOCTOU, kdy lze paměť modifikovat současně s operací na ní.
Jinými slovy, mechanismus užitečný pro síťové nebo souborové I/O operace se jeví jako příliš nebezpečná optimalizace v AF_ALG. Samotný AF_ALG je podle vývojáře v současné době zachován především kvůli zpětné kompatibilitě s malou sadou programů, jako je iwd, které dosud nebyly převedeny na kryptografii v uživatelském prostoru. AF_ALG byl původně určen pro přístup k hardwarovým krypto akcelerátorům, ale v praxi se ukázal jako neefektivní rozhraní pro tento úkol.
Je důležité poznamenat, že se nejedná o úplné odstranění splice() nebo sendfile() pro AF_ALG. Změna je popsána jako „měkké přerušení“ kompatibility: předávání dat do požadavků AF_ALG prostřednictvím splice() a sendfile() bude i nadále fungovat, ale jádro nyní před provedením kryptografické operace vytvoří interní stabilní kopii dat. Výkon se v některých případech může snížit, ale uživatelské API formálně není přerušeno.
Samostatně se zdůrazňuje, že z nulové kopie se odstraňuje šifra и aeadPodpora pro typ hašiše budou posuzovány samostatně.
Kontext změny je nešťastný. Na konci dubna byla odhalena zranitelnost. Kopírování selhalo (CVE-2026-31431) v algif_aead, tedy v kryptografickém uživatelském rozhraní AF_ALG. Výzkumníci prokázali, že kombinace funkcí zpracování AF_ALG, splice() a AEAD umožnila neprivilegovanému uživateli poškodit mezipaměť stránek, včetně stránek odpovídajících binárním souborům setuid, a získat eskalaci oprávnění na root.
Vzhled Kopírování selhalo To bylo způsobeno optimalizací z roku 2017, která přepnula operace AEAD na zpracování na místě; při předávání souboru pomocí splice() do AF_ALG jádro pracovalo s odkazy na stránky z mezipaměti stránek, nikoli s jejich kopií. V důsledku toho se některá data, která byla považována pouze za vstup, mohla dostat do zapsaného scatterlistu.
Odstranění zero-copy z AF_ALG není cílenou opravou jedné zranitelnosti. Spíše se jedná o pokus o odstranění celé třídy rizikových scénářů z málo používaného UAPI, kde zisky z optimalizace neodůvodňují složitost a potenciální důsledky. Pro běžné uživatele bude změna pravděpodobně nepostřehnutelná; u vzácných programů, které aktivně používají AF_ALG prostřednictvím splice() nebo sendfile(), může výkon v důsledku dodatečného kopírování klesnout.
Zdroj: linux.org.ru
