
Эксплойт для локального повышения привилегий в Linux без привилегий, использующий быстрый путь xfrm ESP-in-UDP MSG_SPLICE_PAGES без COW для перезаписи /etc/passwd и получения root.
Непривилегированное локальное повышение привилегий в Linux через xfrm ESP-in-UDP MSG_SPLICE_PAGES no-COW fast path. Запись в page cache любого читаемого файла. Перезаписывает строку nologin в /etc/passwd на sick::0:0:...:/:/bin/bash и выполняет su в неё. Тот же класс, что и Copy Fail (CVE-2026-31431), другая подсистема.
sudo apt install -y libssl-dev gcc
gcc -O2 -Wall copyfail2.c -o copyfail2 -lcrypto
gcc -O2 -Wall aa-rootns.c -o aa-rootns
./run.sh # установка + переход в root shell
./run.sh --clean # откат /etc/passwd через тот же примитив
Добавляет пользователя sick с uid 0 без пароля в /etc/passwd, затем exec su - sick.
PAM nullok принимает пустой пароль молча — ввод не требуется. Строка
sick остаётся в /etc/passwd — повторный запуск сразу возвращает в root.
Состояние для --clean сохраняется в /var/tmp/.cf2.state.
Без sudo. esp4 / xfrm_user / xfrm_algo автозагружаются через путь userns netlink.
| дистрибутив | ядро | результат |
|---|---|---|
| Ubuntu 22.04 LTS | 5.15.0-176-generic | не уязвим* |
| Ubuntu 24.04 LTS | 6.8.0-110-generic | root |
| Debian 13 | 6.12.74 | root |
| Arch | 6.19.11-arch1-1 | root |
| Fedora 43 | 6.19.14-200.fc43 | root |
| Ubuntu 26.04 LTS | 7.0.0-15-generic | root |
Тот же баг существует в esp6_input и не покрыт исправлением для v4
f4c50a4034. PoC в ipv6/: ipv6/run.sh и ipv6/copyfail2v6.c.
Использует loopback ::1 и ip -6 xfrm. ESP-пакет дополнен до >= 40 байт,
чтобы пройти проверку размера в xfrm6_input.c:124.
Hyunwoo Kim (imv4bel) и Kuan-Ting Chen сообщили, протестировали, подготовили исправление в upstream.
Steffen Klassert: мейнтейнер IPsec, опубликовал исправление в netdev/net.git.
Brad Spengler (@spendergrsec / grsecurity): назвал это классом copyfail раньше, чем кто-либо ещё прочитал коммит.
Theori / Xint: оригинальный Copy Fail (CVE-2026-31431).