
Strumenti di rilevamento sicuri per CVE-2026-31431 "Copy Fail" e CVE-2026-43284 "Dirty Frag" — una escalation di privilegi locali nel modulo algif_aead del kernel Linux che colpisce tutte le distribuzioni principali dal 2017.
Strumenti di rilevamento sicuri per due famiglie correlate di vulnerabilità di escalation dei privilegi locali del kernel Linux — Copy Fail (CVE-2026-31431) e Dirty Frag (CVE-2026-43284 / CVE-2026-43500) — entrambe che interessano tutte le distribuzioni principali dal 2017, entrambe sfruttabili da qualsiasi utente locale non privilegiato, ed entrambe che richiedono mitigazioni indipendenti.
Questi probe non aprono socket e non eseguono operazioni crittografiche o di rete. Il rilevamento si basa esclusivamente sulla versione del kernel, sui metadati dei pacchetti della distribuzione, sullo stato del modulo e sui flag di mitigazione attivi — tutti leggibili a livello mondiale senza
sudo.
| Copy Fail | Dirty Frag | |
|---|---|---|
| CVE | CVE-2026-31431 | CVE-2026-43284 + CVE-2026-43500 |
| Modulo/i | algif_aead | esp4, esp6, rxrpc |
| Introdotta | Agosto 2017 (kernel 4.14) | Gennaio 2017 / Giugno 2023 |
| Mitigazione | Blacklist modprobe.d per algif_aead | Blacklist modprobe.d per esp4/esp6/rxrpc |
| Script di sonda | cve-2026-31431-check.sh | cve-2026-43284-check.sh |
Applicare la mitigazione di Copy Fail NON protegge da Dirty Frag. Entrambe le sonde devono essere eseguite ed entrambe le mitigazioni applicate indipendentemente.
.
├── cve-2026-31431-check.sh Sonda Copy Fail (tutte le modalità di output)
├── copy_fail_userparameter.conf Parametro utente agente Zabbix — Copy Fail
├── zabbix_template_copy_fail.yaml Template Zabbix 6.4 — Copy Fail
├── copy_fail_auditd.rules Rilevamento comportamentale auditd — Copy Fail
├── cve-2026-43284-check.sh Sonda Dirty Frag (tutte le modalità di output)
├── dirty_frag_userparameter.conf Parametro utente agente Zabbix — Dirty Frag
├── wazuh_sca/
│ └── copy_fail_sca.yml Politica di conformità Wazuh SCA
└── ansible/
└── copy_fall_scan.yml Playbook di scansione Ansible per intera flotta
L'exploit richiede questa esatta catena di syscall:
socket(AF_ALG, SOCK_SEQPACKET, 0)
bind(fd, {alg_type="aead", alg_name="authencesn(hmac(sha256),cbc(aes))"})
accept(fd, ...)
splice(suid_binary_fd, op_fd) ← page cache fed into crypto subsystem
sendmsg / recvmsg ← 4-byte scratch write lands in page cache
Nessuna di queste viene toccata dalla sonda. Il rilevamento si basa su:
.ko su disco (caricabile automaticamente)modprobe.d e flag cmdline initcall_blacklistchmod +x cve-2026-31431-check.sh
./cve-2026-31431-check.sh # human-readable
./cve-2026-31431-check.sh --json # machine-readable
./cve-2026-31431-check.sh --nagios # Nagios/Icinga/NRPE
./cve-2026-31431-check.sh --zabbix # integer 0/1/2 for Zabbix item
Codici di uscita: 0 = PATCHED o MITIGATED · 1 = VULNERABLE · 2 = UNKNOWN
| Distribuzione | Patchata il | Avviso |
|---|---|---|
| RHEL / Rocky / Alma 8.10 | kernel-4.18.0-553.123.1.el8_10 | Rocky 2026-05-11 |
| RHEL / Rocky / Alma 9.7 | kernel-5.14.0-611.54.1.el9_7 | same |
| RHEL / Rocky / Alma 10.1 | kernel-6.12.0-124.55.1.el10_1 | same |
| Debian 11 (bullseye) | linux 5.10.251-3 | DLA-4560-1 |
| Debian 12 (bookworm) | linux 6.1.170-1 | DSA-6243-1 |
| Debian 13 (trixie) | linux 6.12.85-1 | DSA-6238-1 |
| Ubuntu 22.04 / 24.04 | Nessun kernel patchato ancora — mitigazione kmod tramite USN-8226-1 | USN-8226-1 |
| SLES 12 SP5 | kernel-default 4.12.14-122.299.1 | SUSE-SU-2026:1669-1 |
| SLES 15 SP5 | kernel-default 5.14.21-150500.55.144.1 | SUSE-SU-2026:1670-1 |
| SLES 15 SP6 | kernel-default 6.4.0-150600.23.92.1 | SUSE-SU-2026:1671-1 |
| SLES 15 SP7 | kernel-default 6.4.0-150700.53.40.1 | SUSE-SU-2026:1669-1 |
| SLES 16.0 | kernel-default 6.12.0-160000.29.1 | Avviso SUSE |
Lo script confronta automaticamente queste soglie e imposta il verdetto su PATCHED quando il pacchetto in esecuzione soddisfa o supera la soglia.
Su RHEL, AlmaLinux, Rocky Linux e derivati, algif_aead è compilato nel kernel. Il workaround di modprobe.d non ha effetto. Solo initcall_blacklist=algif_aead_init nella riga di comando del kernel funziona. La sonda lo rileva e avvisa esplicitamente.
grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
reboot
Dirty Frag combina due bug di decrittazione in-place nel fast-path scoperti da Hyunwoo Kim (@v4bel), divulgati ~07-05-2026, una settimana dopo Copy Fail:
esp4, esp6); upstream fix f4c50a4034e6rxrpc); upstream fix aa54b1d27fe0L'exploit attacca pagine pipe dalla cache delle pagine di /usr/bin/su come frammenti di buffer di socket paginati, quindi guida la decrittazione in-place con una chiave scelta dall'attaccante — scrivendo byte arbitrari direttamente nella copia cached di un binario setuid, senza toccare il file su disco.
La mitigazione di Copy Fail (blacklist algif_aead) NON impedisce Dirty Frag.
chmod +x cve-2026-43284-check.sh
./cve-2026-43284-check.sh # human-readable
./cve-2026-43284-check.sh --json # machine-readable
./cve-2026-43284-check.sh --nagios # Nagios/Icinga/NRPE
./cve-2026-43284-check.sh --zabbix # integer 0/1/2 for Zabbix item
La sonda controlla esp4, esp6 e rxrpc indipendentemente e riporta booleani separati cve_43284_safe / cve_43500_safe nell'output JSON.
esp4 e esp6 sono le trasformazioni ESP lato kernel utilizzate da IPsec (strongSwan, Libreswan). Blacklistarli rompe i tunnel IPsec. La sonda rileva l'uso attivo di IPsec tramite ip xfrm state e rilevamento del demone, e adatta di conseguenza i consigli di remediation:
modprobe.d per tutti e tre i moduli.rxrpc separatamente se non necessario):
# RHEL-family
sysctl -w user.max_user_namespaces=0
echo "install rxrpc /bin/false" >> /etc/modprobe.d/dirtyfrag.conf
# Ubuntu / Debian
sysctl -w kernel.unprivileged_userns_clone=0
echo "install rxrpc /bin/false" >> /etc/modprobe.d/dirtyfrag.conf
| Distribuzione | CVE-2026-43284 | CVE-2026-43500 (rxrpc) |
|---|---|---|
| RHEL / Rocky / Alma 8.10 | 4.18.0-553.123.2.el8_10 | N/D — rxrpc non distribuito su RHEL 8 |
| RHEL / Rocky / Alma 9.x | In attesa | In attesa |
| Debian / Ubuntu / SLES | In attesa | In attesa |