## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-ATGREEN-BLOCK-COPYFAIL
# block-copyfail
**Proof of concept** β ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΌΡΠ³ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΉ CVE-2026-31431 (Β«Copy FailΒ») β ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Π² ΡΠ΄ΡΠ΅ Linux ΡΠ΅ΡΠ΅Π· ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Π±Π»ΠΎΠ½ `authencesn` Π² `algif_aead`.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΡΡΠΎ **Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ**. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° BPF LSM ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΡΠ²Π°Π΅Ρ `socket_bind` ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ AEAD ΡΠ΅ΡΠ΅Π· AF_ALG β ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΡΠ΅ΠΌΡΡ Copy Fail. ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±Ρ
ΠΎΠ΄Ρ ΡΠ΅ΡΠ΅Π· Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΡ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, `pcrypt(authencesn(...))`). ΠΡΡΠ³ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ AF_ALG (hash, skcipher) Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅ΡΡΡ.
ΠΠ°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ PID, ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅ΡΠΊΠΈ.
## ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
* Π―Π΄ΡΠΎ Linux 5.7+ Ρ `CONFIG_BPF_LSM=y` ΠΈ `lsm=bpf` Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ
Π·Π°Π³ΡΡΠ·ΠΊΠΈ
* SBCL 2.0+
* Whistler (ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ eBPF Π½Π° Common Lisp)
root@kitploit:~
make doctor # ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²ΡΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
## ΠΡΡΡΡΡΠΉ ΡΡΠ°ΡΡ
root@kitploit:~
git clone https://github.com/atgreen/block-copyfail.git
cd block-copyfail
make ubi8-build
sudo ./block-copyfail
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΎΡΡΠ°ΡΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ Π΄ΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Ctrl-C, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ.
## ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΡΠ±ΠΎΡΠΊΠ°
ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ Π½Π° Π²Π°ΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Π½ΡΠΆΠ½Ρ SBCL ΠΈ Whistler (ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ eBPF Π½Π° Common Lisp):
root@kitploit:~
git clone https://github.com/atgreen/whistler.git ~/git/whistler
make build
sudo ./block-copyfail
## Π‘Π±ΠΎΡΠΊΠ° ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΠ³ΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠ° (EL8+)
Π‘Π±ΠΎΡΠΊΠ° Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° UBI8 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Π½Π° RHEL/CentOS/Alma/Rocky 8+, Fedora, Ubuntu 20.04+ ΠΈ Π»ΡΠ±ΠΎΠΌ Linux Ρ glibc 2.28 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅. SBCL ΠΈΠ»ΠΈ Whistler Π½Π° ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π½Π΅ Π½ΡΠΆΠ½Ρ β ΠΏΡΠΎΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ.
root@kitploit:~
make ubi8-build
scp block-copyfail root@server:
ssh root@server ./block-copyfail
## ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² ELF-ΠΎΠ±ΡΠ΅ΠΊΡ
Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» `.bpf.o`, Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠΉ ΡΠ΅ΡΠ΅Π· `bpftool`, `libbpf` ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ BPF:
root@kitploit:~
make elf
sudo mkdir -p /sys/fs/bpf/copyfail
sudo bpftool prog loadall block-copyfail.bpf.o /sys/fs/bpf/copyfail autoattach
ΠΠ»Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ:
root@kitploit:~
sudo rm -rf /sys/fs/bpf/copyfail
## Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΈ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΡΠΈΠΊΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ:
root@kitploit:~
python3 trigger-test.py
Π’Π΅ΡΡΠΎΠ²ΡΠΉ ΡΠΊΡΠΈΠΏΡ ΠΏΡΡΠ°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ AEAD ΡΠ΅ΡΠ΅Π· AF_ALG (ΡΠΊΡΠΏΠ»ΠΎΠΉΡ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ).
**ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ Π²ΡΠ²ΠΎΠ΄ Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅:**
root@kitploit:~
BLOCKED: aead/authencesn(hmac(sha256),cbc(aes)) β [Errno 1] Operation not permitted
BLOCKED: aead/gcm(aes) β [Errno 1] Operation not permitted
ALLOWED: hash/sha256
ALLOWED: skcipher/cbc(aes)
**ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ Π²ΡΠ²ΠΎΠ΄ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΡΠΈΠΊΠ°:**
root@kitploit:~
Copy Fail blocker active β all AF_ALG AEAD binds blocked.
Other AF_ALG usage (hash, skcipher) unaffected.
Watching for blocked attempts. Press Ctrl-C to exit.
TIME PID COMMAND
---- --- -------
06:38:12 31337 python3
ΠΠ΅Π· Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΡΠΈΠΊΠ° ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΡΠΊΡΠΈΠΏΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡ `ALLOWED` Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΠ΅ΡΡΡΡΡ
Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ².
## ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° BPF ΡΡΠΈΡΡΠ²Π°Π΅Ρ 7 Π±Π°ΠΉΡ `struct sockaddr_alg` ΠΈΠ· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² `socket_bind` ΡΠ΅ΡΠ΅Π· `bpf_probe_read_kernel`, ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ `salg_family == AF_ALG` ΠΈ `salg_type == "aead"` ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ `-EPERM` ΠΏΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ. ΠΡΠΎ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² AEAD Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ². Π‘ΠΎΠ±ΡΡΠΈΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ»ΡΡΠ΅Π²ΠΎΠΉ Π±ΡΡΠ΅Ρ.
ΠΠ°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° Whistler β Π΄ΠΈΠ°Π»Π΅ΠΊΡΠ΅ Common Lisp, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ Π² Π±Π°ΠΉΡΠΊΠΎΠ΄ eBPF β Π±Π΅Π· C, clang ΠΈΠ»ΠΈ LLVM.
## ΠΠΈΡΠ΅Π½Π·ΠΈΡ
MIT