Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
copyfail-deconstructed — Упрощённая версия CVE-2026-31431 | Kitploit
Инструменты/GitHubGitHub/bootsareme/copyfail-deconstructed
Повышение привилегийЭксплуатацияШелл-кодОбучение и ОбразованиеРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubbootsareme/copyfail-deconstructed

copyfail-deconstructed

Упрощённая версия CVE-2026-31431

Репозиторий
313 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

copyfail-deconstructed

Легко понимаемая версия CVE-2026-31431 — техника повышения привилегий, позволяющая любому пользователю получить права root. Оригинальное доказательство концепции находится здесь: https://github.com/theori-io/copy-fail-CVE-2026-31431, но оно сильно сжато и минифицировано для минимального размера. Этот репозиторий пытается разобрать этот код в более читаемом виде, включая описание того, что делает код, как загружается полезная нагрузка и как нацеливаться на разные архитектуры. См. более техническую статью здесь: https://xint.io/blog/copy-fail-linux-distributions.

Использование

По умолчанию запуск python3 copyfail.py запускает x64 шелл-код, эксплуатирующий /usr/bin/su. Вы можете указать свою полезную нагрузку, запустив python3 copyfail.py [путь/к/своему/payload.elf]. Например, внутри payloads/ есть ассемблерный код шелл-кода для ARM64. Для тестирования на устройствах ARM64 сначала нужно собрать минимизированную полезную нагрузку с помощью нашего пользовательского скрипта компоновщика:

root@kitploit:~
as -o shellcode_aarch64.o payloads/shellcode_aarch64.S
ld -nostdlib -static -o shellcode_aarch64.elf shellcode_aarch64.o
strip -s shellcode_aarch64.elf

Затем вы можете запустить основной эксплойт с помощью python3 copyfail.py shellcode_aarch64.elf.

Для запуска на C:

  1. сборка (см. ниже)
  2. ./c_copyfail — запускает тот же шелл-код по умолчанию, что и выше.
  • Вы снова можете указать свою полезную нагрузку, запустив ./c_copyfail [путь/к/своему/payload.elf].

Для сборки версии на C:

root@kitploit:~
cd c_port
make

В частности, это компилирует целевой .S файл в сырой бинарный файл, который выводится как массив unsigned char на C:

root@kitploit:~
gcc -c payloads/[shellcode].S
objcopy -O binary [shellcode].o [payload].raw
xxd -i [payload].raw > payload.txt

или, для 32-битного x86,

root@kitploit:~
gcc -c -m32 payloads/[shellcode].S
objcopy -O binary [shellcode].o [payload].raw
xxd -i [payload].raw > payload.txt

Затем вы можете скопировать содержимое этого файла в свой исходный код или просто напрямую запустить ./c_copyfail.exe [путь/к/payload.elf], где payload.elf генерируется с помощью as + ld, а НЕ gcc + objcopy.

Исправления

Чтобы избежать эксплуатации, выполните:

root@kitploit:~
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null

Если уже скомпрометирован, можно перезагрузить машину или выполнить: echo 3 | sudo tee /proc/sys/vm/drop_caches

Объяснение

  1. Ядро позволяет пользователю взаимодействовать с крипто API через сокет типа AF_ALG
  • В 2017 году была добавлена «оптимизация на месте» (in-place optimisation) в часть algif_aead крипто API
  • Когда данные отправляются через сокет с помощью системного вызова splice(), ядро помещает реальные страницы page-cache файла, который вы объединили, в рабочую область крипто
  • Крипто алгоритм authencsn рассматривает свой выходной буфер как временное пространство и записывает 4 байта за пределы того места, куда нужно
  1. Что может сделать гипотетический злоумышленник
  • Выбрать любой читаемый файл (например, /usr/bin/su в данном случае)
  • Выбрать смещение внутри этого файла, куда будет произведена запись 4 байт
  • Выбрать 4-байтовое значение для записи (часть ассоциированных данных в операции AEAD)
  • Записать шелл-код для перезаписи файла в памяти
  1. Перезапись page-cache для получения root
  • Ядро никогда не помечает поврежденную страницу как «грязную», файл выглядит неизменным
  • При выполнении /usr/bin/su ядро читает его из page-cache и получает измененные байты
  • Повторяя запись 4 байт (около 40 раз), они могут перезаписать проверку UID внутри /usr/bin/su, так что UID станет 0 (root)
  • Оболочка root достижима для любого пользователя
  1. Устранение
  • Сбросить page-cache, чтобы удалить измененные файлы из памяти, и при следующем чтении они будут считаны с диска
  • Выгрузить модуль ядра
  • Внести в черный список загрузки
  • Если это встроенный модуль, необходимо заблокировать системный вызов с помощью seccomp или eBPF. Или удалить его из инициализации и перезагрузить машину.

Двоичный файл su поврежден в памяти, поэтому модификация файла не будет обнаружена. Чтобы восстановить с диска, можно сбросить page-cache.

Скачать инструмент