🐧 Почему pipe_buffer так любят исследователи безопасности Linux Александр Попов опубликовал интересные результаты экспе
Александр Попов опубликовал интересные результаты экспериментов с объектом ядра Linux pipe_buffer - одной из самых мощных целей при эксплуатации уязвимостей ядра.
Почему он так интересен атакующему? Повреждение отдельных полей pipe_buffer потенциально позволяет:
🔸 реализовать техники вроде Dirty Pipe и изменять файлы только для чтения;
🔸 перехватывать управление в kernel space;
🔸 строить примитивы Arbitrary Address Read/Write;
🔸 использовать техники вроде PageJack.
В ходе экспериментов автор обнаружил несколько любопытных особенностей.
Например, после достижения лимита /proc/sys/fs/pipe-user-pages-soft ядро начинает создавать новые pipe с уменьшенным буфером. Это может неожиданно повлиять на heap spray и размещение объектов в slab-кешах.
Ещё интереснее другое: оказалось, что для получения примитива чтения и записи памяти ядра может быть достаточно повредить только указатель pipe_buffer.page. Причина кроется в механизме кеширования освобождённых страниц через pipe_inode_info.tmp_page.
Есть и неприятный побочный эффект: закрытие повреждённого pipe может вернуть атакованную страницу аллокатору страниц, что приведёт к непредсказуемому повреждению памяти ядра. Практичное решение из PoC - просто не закрывать такой pipe 😁
Отличный материал для тех, кто изучает Linux Kernel Exploitation, устройство slab allocator и внутреннюю механику pipe.
https://a13xp0p0v.github.io/2026/04/20/pipe-buffer-experiments.html
👉 @thehaking