$USERNAME@hacker.wtf - part 11*
*
Выпуск скорее мини аналитический, чем практический.
*
Dirty-family: новые Linux LPE — это не случайность, а болезнь zero-copy и page cache
*
Linux уже свежими ластами наступает на старые грабли:
Dirty COW, Dirty Pipe, Copy Fail, Dirty Frag, Fragnesia, а теперь ещё и GRO Frag.Кому то может даже показаться что это разные уязвимости:
TimeLine такой
Dirty COW (CVE-2016-5195) — race в Copy-on-Write.
Dirty Pipe (CVE-2022-0847) — баг в pipe/page cache.
Copy Fail (CVE-2026-31431) — AF_ALG + splice.
Dirty Frag и Fragnesia (CVE-2026-43284 + CVE-2026-43500 + CVE-2026-46300) — XFRM/RxRPC/ESP и + сетевые фрагменты.
GRO Frag — GRO (вчера был без CVE) - zero-copy skb и io_uring.
Только вот не нужно смотреть на конкретную функцию в ядре, смотрите на итоговый primitive, тогда картина становится нарисованной не гавном, а маслом.
Во всех этих cool story ломается один из базовых инвариантов ядра:
Файл или страница памяти должны быть доступны
read ONLY, но $USER ,без привилегий получает возможность изменить то, что менять не должен. (как внезапно да ?).Особенным ароматом пахнет
ветка page-cache bugs ! Тут и файл на диске может оставаться неизменным и checksum может быть нормальным, но процесс при чтении получает уже "
заряженную" копию из page cache. (опять мир чудес).Ну а для
LPE этого достаточно - если удаётся повлиять на то что видит setuid-root бинарь или системный компонент, любой $USER забирает root. НЕЛЬЗЯ ГОВОРИТЬ что Dirty Pipe, Copy Fail, Dirty Frag, Fragnesia и GRO Frag — это “ЭТО ОДНА И ТАЖЕ ДЫРА”. Нет, это РАЗНЫЕ баги в РАЗНЫХ подсистемах.
Но можно сказать это точно одна и та же БОЛЕЗНЬ КЛАССА -
zero-copy / shared buffers / fragments / page cache ownership оборзели и потеряли границы ответственности и это дало юзеру внезапно получить write primitive туда, где должен был быть read ONLY.Старая корова (Dirty COW 2016) в этой истории это скорее прародитель по духу, коуч и духовный наставник.
io_uring UAF и io_uring ZCRX freelist — это соседняя ветка (но дерево то же) !!!! там больше про lifetime, UAF, freelist и kernel memory corruption, но философия ОЧЕНЬ ПОХОЖАЯ — сложные fast-path механизмы ломают модель владения памятью.Ну и какой вывод то а ? Да такой же как и всегда, чем сложнее система - тем легче ломать.
Современные zero-copy и high-performance пути в ядре стали настолько сложными, что любая ошибка в refcount/ownership превращается в root.
#РубрикаНаЗаметкуХакеру