Рубрика На заметку
$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.
#РубрикаНаЗаметкуХакеру