## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-GR-1M-CVE-2026-31431
# CVE-2026-31431 — Copy Fail
中文版
**732 байта до root на каждом крупном дистрибутиве Linux**
CVE-2026-31431 (Copy Fail) — логическая ошибка в криптографическом шаблоне `authencesn` ядра Linux. Она позволяет непривилегированному локальному пользователю выполнить детерминированную контролируемую запись 4 байт в page cache любого читаемого файла в системе.
## Обзор
* **ID CVE:** CVE-2026-31431
* **Тип:** локальное повышение привилегий / побег из контейнера
* **Затронуты:** ядра Linux с `CONFIG_CRYPTO_AUTHENC` (практически все крупные дистрибутивы с 2017 года)
* **Обнаружено:** Xint Code Research Team, при начальном участии исследователя Theori Тэяна Ли
## Как это работает
Ошибка объединяет два поведения:
1. **AF_ALG + splice** : `splice()` передаёт страницы page cache по ссылке в scatterlist сокета AF_ALG. Для режима in-place расшифровки AEAD страницы тега (из page cache целевого файла) остаются привязанными к выходному scatterlist через `sg_chain()`.
2. **Запись в scratch-область authencesn** : `crypto_authenc_esn_decrypt()` использует `dst[assoclen + cryptlen]` (за пределами тега, в страницах page cache) как scratch-пространство для перестановки порядкового номера ESN, записывая 4 байта, контролируемые атакующим, и никогда не восстанавливая их.
Повреждённая страница **никогда не помечается как грязная** , поэтому файл на диске остаётся неизменным. Но именно page cache в памяти фактически читается — что делает повреждение немедленно видимым во всей системе.
## Эксплойт
Эксплойт повреждает page cache `/usr/bin/su` (или любого setuid-бинарника) небольшим шеллкодом, по 4 байта за раз. После всех итераций запуск `su` выполняет полезную нагрузку и даёт root-оболочку.
### Python (exp.py)
Требуется Python 3.10+ (для `os.splice`). Используются только модули стандартной библиотеки.
root@kitploit:~
python3 exp.py
### Golang (exp.go)
Без зависимости от Python. Компиляция и запуск:
root@kitploit:~
go run exp.go
go build -ldflags "-w -s" -trimpath -o exp exp.go
tinygo build -o exp exp.go
## Влияние
Возможность| Подробности
---|---
## Ссылки
* copy.fail — официальное уведомление
* Блог Xint — Copy Fail: 732 байта до root
* Запись NVD
* переписан на C
## Отказ от ответственности
Этот репозиторий опубликован исключительно в образовательных целях и для защитных исследований. Не используйте этот код на системах, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.