TGViewer
Codeby Codeby @codeby_sec · 37K subscribers
Post #10141 3.73K
732 байта Python-кода — и детерминистический root на любом Linux

Представьте: один скрипт, никаких race condition, никаких per-distro offsets — и через пару секунд ваш www-data превращается в root. Именно так работает CVE-2026-31431, она же Copy Fail — уязвимость, которая пряталась в ядре Linux девять лет.

🔎Суть бага — в пересечении трёх подсистем ядра, которые по отдельности работают корректно:

• AF_ALG — сокетный интерфейс к крипто-API ядра, доступный любому непривилегированному процессу
• splice() — системный вызов, который передаёт данные через ссылки на страницы page cache без копирования
• Page cache — общесистемный кеш, где одна и та же страница памяти обслуживает все процессы, включая setuid-бинари

В 2017 году модуль algif_aead получил оптимизацию: destination и reference pages объединили в единый scatterlist. Но код не проверял, можно ли записывать за пределы output-региона. Шаблон authencesn при расшифровке пишет 4 байта scratch-данных по фиксированному смещению. Через splice() атакующий подставляет страницы page cache от setuid-бинаря — и эти четыре байта записываются прямо в кешированный образ /usr/bin/su. На диске файл не тронут, а в памяти — уже модифицирован.

👉Почему это страшнее Dirty Pipe? Три причины:

1. Детерминизм — нет окна гонки, эксплойт срабатывает со 100% вероятностью
2. Универсальность — работает на каждом крупном дистрибутиве с ядром от 2017 года (Ubuntu, RHEL, Amazon Linux, SUSE, Debian)
3. Container escape — page cache общий для хоста и контейнеров с shared kernel, так что Copy Fail — это ещё и побег из контейнера. PoC для Kubernetes уже валидирован на EKS, GKE и Alibaba Cloud ACK.

🎇Что устояло? МикроВМ (AWS Firecracker, Fargate), gVisor, V8-изоляты Cloudflare Workers — всё, где у каждого tenant своё ядро.

Интересный момент: баг прятался так долго, потому что подсистему crypto/ ревьюили криптографы. Они проверяли IND-CPA, side channels, валидацию параметров. А вопрос «должна ли эта страница памяти вообще быть writeable?» — из другой дисциплины, и он просто выпал из поля зрения. Девять лет.

На практике для пентестера это значит: после получения low-priv shell проверка Copy Fail занимает меньше времени, чем перебор SUID-бинарей или разбор cron jobs. Если модуль algif_aead загружен и ядро не пропатчено — root за секунды.

Полный разбор механики, пошаговую эксплуатацию и рекомендации по защите читайте в полной статье.

https://codeby.net/threads/cve-2026-31431-copy-fail-razbor-linux-privilege-escalation-bez-race-condition.93766/
  • ❤ 11
  • 👍 8
  • 🔥 5
More from @codeby_sec
  1. Sep 26, 2026🚩 Новые задания на платформе HackerLab! 👩‍💻 Категория Pentest Machines (Active Director…
  2. Sep 25, 2026Post #10469
  3. Sep 25, 2026Tookie-OSINT: Инструмент разведки по имени пользователя Tookie-OSINT — инструмент с открыт…
  4. Sep 24, 202614 резюме за три дня. Где вакансии? За месяц работодатели не разместили на форуме ни одной…
  5. Sep 24, 2026UDP-сканирование: ты доверяешь zenmap или запускаешь nmap руками? Дефолтный профиль zenmap…
  6. Sep 24, 2026🌐HExHTTP Инструмент для тестирования HTTP-заголовков и анализа результатов с целью выявле…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →