Исследователи опубликовали подробный разбор группы ошибок в ядре Linux, связанных с некорректной работой с памятью и состояниями объектов ядра. Речь идёт не об одной уязвимости, а о типовом классе багов, которые годами повторяются в разных подсистемах и приводят к крахам системы, утечкам данных и, в ряде сценариев, к повышению привилегий.
Ключевая проблема заключается в ошибках управления временем жизни объектов ядра. В ряде случаев ядро продолжает обращаться к структурам данных после их освобождения из памяти. Такие use-after-free-сценарии позволяют либо аварийно завершить работу системы, либо контролируемо перезаписать память, если атакующий способен повлиять на повторное выделение этих областей. Это создаёт предпосылки для выполнения произвольного кода на уровне ядра.
Часть багов связана с гонками состояний между потоками выполнения. Из-за отсутствия корректной синхронизации разные части ядра могут одновременно изменять одни и те же структуры, что приводит к повреждению данных. В сетевых подсистемах такие ошибки вызывают падения при обработке специально сформированных пакетов, а в локальных сценариях могут использоваться для выхода за пределы изоляции контейнеров и sandboxes.
Отдельное внимание исследователи уделяют ошибкам в механизмах учёта ссылок и флагов состояния. Неправильное обновление счётчиков приводит к тому, что объект считается валидным, хотя фактически уже удалён или находится в промежуточном состоянии. Это особенно опасно в подсистемах, связанных с файловыми дескрипторами, IPC и сетевыми фильтрами.
Практическая эксплуатация таких багов чаще всего начинается с отказа в обслуживании, однако при наличии локального доступа или возможности запускать код в ограниченной среде атакующий может выстроить цепочку до эскалации привилегий. Именно такие уязвимости регулярно используются в эксплойтах для контейнерных сред и серверов с несколькими пользователями.