Подарил u32 — получил root. Локальная эскалация через io_uring ZCRX

Как баг в io_uring превращает обычный uint32 в билет на root-вечеринку.
Разработчики ядра Linux снова наступили на грабли — на этот раз в механизме io_uring ZCRX (zero-copy RX). Исследователь показал, что манипуляция с freelist'ом позволяет локальному пользователю поднять привилегии до root. Всё, что нужно — один uint32, который вы контролируете.
Если вы думали, что io_uring — это просто быстрый способ читать файлы, то вы недооценивали его талант к драме. Баг кроется в том, как управляется freelist буферов: ошибка на единицу (off-by-one) превращает контролируемое значение в указатель на структуру, которую можно переписать. Дальше — классика: перехват управления и привет, root.
Эксплойт требует локального доступа, так что если ваши серверы уже скомпрометированы — это лишь вишенка на торте. Но для тех, кто следит за безопасностью, это напоминание: даже самый крутой API может подложить свинью. Патч уже в мейнлайне, так что обновляйтесь, пока злоумышленники не разобрались с вашим freelist'ом.
Комментарий студии METABYTE: Мы всегда говорили — доверяй, но проверяй. Особенно если тебе передают u32 и обещают магию. Наши аудиты кода как раз для того, чтобы такие сюрпризы не просочились в продакшн.