
Ansible playbook per il rilevamento e la correzione di CVE-2026-31431 (Copy Fail) - vulnerabilità di escalation dei privilegi locali nel kernel Linux
Copia Fallita Diagnosi e Risoluzione
Una suite di ruoli Ansible e playbook per rilevare e risolvere CVE-2026-31431 (Copy Fail), una vulnerabilità critica di escalation dei privilegi locali nel modulo algif_aead del kernel Linux.
🔗 GitHub: https://github.com/parmstro/cfDr
Il nome cfDr è un gioco di parole su "Copy Fail Doctor" - la tua cura affidabile per CVE-2026-31431.
CVE-2026-31431 (CVSS 7.8) è un difetto logico nell'interfaccia socket AEAD del kernel Linux (AF_ALG) scoperto nel 2026. La vulnerabilità consente a qualsiasi utente locale non privilegiato di elevare i propri privilegi a root in pochi secondi.
algif_aead (interfaccia crittografica AF_ALG)Versioni del Kernel: kernel Linux >= 4.10 (rilasciato nel 2017)
Distribuzioni Interessate:
Nota: Qualsiasi distribuzione Linux con kernel 4.10 o successivo è potenzialmente vulnerabile.
Questa vulnerabilità è particolarmente pericolosa perché:
Una volta che un attaccante ha qualsiasi forma di accesso locale (SSH, web shell, fuga dal container, ecc.), può:
In attesa delle patch del kernel fornite dai vendor, sono disponibili diverse strategie di mitigazione. cfDr le implementa tutte, con raccomandazioni intelligenti basate sulla configurazione del tuo sistema.
Non tutte le risoluzioni sono uguali. Ecco cosa devi sapere:
| Metodo | Root Può Bypassare? | Copertura | Supporto Enterprise Linux |
|---|---|---|---|
| Blacklist del Modulo | ✅ Sì (tramite insmod) | Impedisce il caricamento tramite modprobe | Tutte le versioni |
| Policy SELinux | ❌ NO (livello LSM) | Solo domini configurati | Tutte le versioni (predefinito) |
| seccomp di systemd | ❌ NO (filtro syscall) | Solo servizi configurati | Tutte le versioni |
| eBPF LSM | ❌ NO (livello LSM) | A livello di sistema (se configurato) | RHEL 9+, Fedora 34+ |
Raccomandazione predefinita di cfDr: Flag 3 (Blacklist del Modulo + SELinux)
Questo fornisce due livelli di protezione indipendenti:``` ┌─────────────────────────────────────────────────┐ │ Layer 1: Module Blacklist │ │ • Prevents modprobe algif_aead │ │ • Persists across reboots │ │ • CAN be bypassed by malicious root (insmod) │ ├─────────────────────────────────────────────────┤ │ Layer 2: SELinux Policy │ │ • Blocks AF_ALG socket() at syscall level │ │ • Works even if module is loaded │ │ • CANNOT be bypassed from userspace │ │ • Covers user_t, unconfined_t (majority cases) │ └─────────────────────────────────────────────────┘
Result: If either layer fails, the other still protects
### Perché la sola blacklist dei moduli non basta
Un attaccante determinato con accesso root può aggirare la blacklist dei moduli:```bash
# Module blacklist DOES NOT prevent:
insmod /lib/modules/$(uname -r)/kernel/crypto/algif_aead.ko.xz
Tuttavia, questo è accettabile perché:
Per una protezione completa e non aggirabile, è necessario:
Blacklist dei moduli + almeno uno dei seguenti:
cfDr utilizza flag bitwise per abilitare più mitigazioni:
| Valore Flag | Mitigazioni Abilitate | Caso d'Uso |
|---|---|---|
| 1 | Solo blacklist dei moduli | Protezione minima, sistemi senza SELinux |
| 2 | Solo SELinux | Ambienti solo SELinux |
| 3 | Blacklist dei moduli + SELinux | Predefinito CONSIGLIATO |
| 5 | Blacklist dei moduli + seccomp | Non-SELinux con hardening dei servizi |
| 7 | Blacklist dei moduli + SELinux + seccomp | Protezione avanzata |
| 15 | Tutte le mitigazioni | Protezione massima (solo RHEL 9+) |
Calcolo dei flag: 1 (blacklist) + 2 (SELinux) + 4 (seccomp) + 8 (eBPF) = somma
Protezione SELinux:
user_t, unconfined_t, httpd_t, postgresql_t, mysqld_tuser_t e unconfined_t coprono la stragrande maggioranza degli scenari d'attaccoProtezione seccomp di systemd:
httpd, nginx, postgresql, mariadb, redis, memcachedProtezione eBPF LSM:
cfDr esegue una valutazione completa su più dimensioni:
uname -r
- Determina se la versione del kernel è >= 4.10 (intervallo vulnerabile)
- Identifica la release del kernel e la distribuzione
#### 2. Verifica della disponibilità del modulo```bash
modinfo algif_aead
algif_aead esiste nel kernellsmod | grep algif_aead
- Determina se il modulo è attualmente caricato
- **Critico**: Modulo caricato = attivamente sfruttabile
#### 4. Rilevamento attivo dei socket```bash
lsof -U | grep AF_ALG
Blacklist dei Moduli:```bash grep -E "blacklist algif_aead|install algif_aead" /etc/modprobe.d/*.conf
**Policy SELinux**:```bash
semodule -l | grep cve_2026_31431_af_alg_deny
systemd seccomp:```bash systemctl show | grep RestrictAddressFamilies
#### 6. Determinazione Categorica dello Stato
cfDr categorizza ogni host in uno di questi stati:
| Stato | Condizione | Azione Richiesta |
|--------|-----------|-----------------|
| **VULNERABILE - Modulo caricato** | Kernel >= 4.10, il modulo esiste ED È caricato | **IMMEDIATA** - Sfruttabile attivamente |
| **VULNERABILE - Il modulo esiste** | Kernel >= 4.10, il modulo esiste, non caricato | **ALTA** - Può essere caricato e sfruttato |
| **MITIGATO - Modulo in blacklist** | Blacklist rilevata | **BASSA** - Monitorare, applicare livelli aggiuntivi |
| **PROTETTO - Difesa in profondità** | Blacklist + SELinux/seccomp/eBPF | **NESSUNA** - Completamente protetto |
| **NON VULNERABILE - Kernel vecchio** | Kernel < 4.10 | **NESSUNA** - Precede la vulnerabilità |
| **NON VULNERABILE - Nessun modulo** | Modulo algif_aead non presente nel kernel | **NESSUNA** - Modulo non disponibile |
### Output della Valutazione
Ogni host riceve:
1. **Output console**: Breve stato su una riga
2. **File dettagliato**: `/root/cve-2026-31431-assessment-<hostname>.txt`
3. **Report JSON**: `/tmp/cve-2026-31431-<hostname>.json`
Esempio di output breve:```
webserver1.example.com: VULNERABLE - Module exists and can be loaded
dbserver2.example.com: PROTECTED - Defense-in-depth (Module Blacklist + SELinux)
appserver3.example.com: NOT VULNERABLE - Module not available
cfDr è costruito come un moderno ruolo Ansible con più punti di ingresso per playbook:``` cfDr/ ├── roles/ │ └── cve_2026_31431/ # Main role │ ├── tasks/ │ │ ├── main.yml # Role orchestration │ │ ├── assessment.yml # Vulnerability detection │ │ ├── remediation_module_blacklist.yml │ │ ├── remediation_selinux.yml │ │ ├── remediation_seccomp.yml │ │ ├── remediation_ebpf.yml │ │ ├── reporting.yml # Status reporting │ │ └── inventory_update.yml # Inventory generation │ ├── templates/ # Config file templates │ ├── defaults/ # Default variables │ └── handlers/ # Service restarts, etc. ├── quickstart.yml # Simplest usage ├── sample_playbook.yml # Multiple examples └── cve_2026_31431_playbook.yml # Full-featured playbook
### Execution Flow
#### Modalità di valutazione (predefinita)```
1. Pre-flight checks
↓
2. Gather system facts
↓
3. Detect kernel version
↓
4. Check module availability
↓
5. Check current load status
↓
6. Check existing mitigations
↓
7. Determine vulnerability status
↓
8. Flag vulnerable hosts
↓
9. Generate reports
↓
10. Create summary
↓
11. [Optional] Generate inventory
apply_remediation=true)```1-8. [Same as Assessment Mode] ↓ 9. Apply Module Blacklist (if flag 1) • Unload module if loaded • Create blacklist config • Update initramfs/initrd • Verify blacklist works ↓ 10. Apply SELinux Policy (if flag 2) • Install policy packages • Compile policy module • Install policy • Verify policy active ↓ 11. Apply systemd seccomp (if flag 4) • Create drop-in files • Reload systemd • Restart services • Verify filters active ↓ 12. Apply eBPF LSM (if flag 8) • Compile eBPF program • Load into kernel • Verify program attached ↓ 13. Re-assess protection status ↓ 14. Generate reports ↓ 15. Create summary
### Dettagli della Remediation
#### Blacklist del Modulo (Flag 1)
**Cosa fa**:
1. Scarica il modulo `algif_aead` se attualmente caricato (`rmmod algif_aead`)
2. Crea `/etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf`: ```
blacklist algif_aead
install algif_aead /bin/true
update-initramfs -udracut -fmodprobeProtezione: Immediata, nessun riavvio richiesto Persistenza: Sopravvive a riavvii e aggiornamenti del kernel
Cosa fa:
policycoreutilspolicycoreutils-python-utilsselinux-policy-develcheckpolicysemodule -i cve_2026_31431_af_alg_deny.ppDomini protetti (predefiniti):
user_t - Processi utente regolariunconfined_t - Processi non confinatihttpd_t - Server web Apachepostgresql_t - Database PostgreSQLmysqld_t - Database MySQL/MariaDBProtezione: Blocca a livello LSM, non può essere aggirata Persistenza: La politica sopravvive ai riavvii
Cosa fa:
/etc/systemd/system/<service>.service.d/90-cve-2026-31431-block-af-alg.confRestrictAddressFamilies=~AF_ALGServizi protetti (predefiniti):
httpd, nginx - Server webpostgresql, mariadb - Databaseredis, memcached - Server cacheProtezione: Blocca la creazione di socket a livello di syscall per servizio Persistenza: Sopravvive a riavvii e aggiornamenti dei servizi
Cosa fa:
Requisiti:
CONFIG_BPF_LSM=yProtezione: Politica dinamica e programmabile a livello di sistema Persistenza: Richiede un servizio di sistema per il ricaricamento all'avvio
cfDr può generare file di inventario pronti all'uso contenenti solo host vulnerabili:
File generati:``` inventory_output/ ├── vulnerable_hosts.yml # YAML inventory ├── vulnerable_hosts.ini # INI inventory ├── group_vars_vulnerable_hosts.yml # Group variables └── host_vars/ ├── host1.yml # Per-host details └── host2.yml
**Cosa include**:
- Risultati della valutazione delle vulnerabilità
- Flag di mitigazione consigliate (calcolate per host)
- Dettagli di sistema (versione del kernel, stato SELinux)
- Impostazioni di remediation pronte da applicare
**Raccomandazioni intelligenti**:
- Flag 3 (Module Blacklist + SELinux) se SELinux è abilitato
- Flag 1 (Solo Module Blacklist) se SELinux non è disponibile
- Personalizzabile per host tramite `host_vars` generati
---
## Impatto sulla Crittografia di Sistema
### Riscontro Critico: La Crittografia Standard di RHEL NON È Interessata
**Livello di Confidenza**: ⭐⭐⭐⭐⭐ **ALTO** - Vedi [Rapporto di Validazione IPsec/XFRM](https://github.com/parmstro/cfdr/blob/HEAD/docs/IPSEC_VALIDATION.md) per un'analisi completa
**Buone notizie per le distribuzioni Enterprise Linux:** Sulla base di fonti autorevoli tra cui [CERT-EU](https://cert.europa.eu/publications/security-advisories/2026-005/), [CloudLinux](https://blog.cloudlinux.com/cve-2026-31431-copy-fail-mitigation-and-patches) e [HPCsec](https://www.hpcsec.com/2026/04/30/advisory-cve-2026-31431-copy-fail-local-privilege-escalation-via-af-alg-algif_aead/), **le mitigazioni di cfDr hanno un impatto minimo o nullo** sulla crittografia e sui servizi di sistema standard di RHEL.
### Cosa NON È Interessato
I seguenti sistemi crittografici critici di RHEL **non utilizzano AF_ALG** e non sono completamente interessati dalle nostre remediation:
#### Servizi di Sistema Principali
| Servizio/Componente | Funzione | Stato |
|------------------|----------|--------|
| **dm-crypt / LUKS** | Crittografia completa del disco | ✅ Non interessato |
| **IPsec / XFRM** | VPN e networking crittografato | ✅ Non interessato ([validato](https://github.com/parmstro/cfdr/blob/HEAD/docs/IPSEC_VALIDATION.md)) |
| **kTLS** | Implementazione TLS del kernel | ✅ Non interessato |
| **SSH** | Connessioni secure shell | ✅ Non interessato |
#### Librerie Crittografiche
| Libreria | Utilizzo | Stato |
|---------|-------|--------|
| **OpenSSL** (predefinita) | SSL/TLS, certificati, crittografia generale | ✅ Non interessata |
| **GnuTLS** (predefinita) | Implementazione TLS | ✅ Non interessata |
| **NSS** | Mozilla Network Security Services | ✅ Non interessata |
| **Kernel keyring** | Gestione delle chiavi del kernel | ✅ Non interessato |
#### Infrastruttura Critica
- ✅ **SSL/TLS** - Tutta la crittografia dei server web non è interessata
- ✅ **HTTPS** - Il traffico web sicuro non è interessato
- ✅ **Crittografia email** (S/MIME, PGP) - Non interessata
- ✅ **Operazioni sui certificati** - Non interessate
- ✅ **Crittografia dei database** - Non interessata
- ✅ **Crittografia dei backup** - Non interessata
### Perché i Servizi Standard Non Usano AF_ALG
Come documentato nella [Documentazione Crypto del Kernel Linux](https://www.kernel.org/doc/html/v4.11/crypto/userspace-if.html), **AF_ALG è un'interfaccia socket userspace** per la crypto del kernel introdotta in Linux 2.6.38. Tuttavia, la maggior parte dei servizi di sistema RHEL utilizza l'API crypto del kernel **direttamente** piuttosto che passare attraverso il livello socket AF_ALG.
Secondo l'[advisory di sicurezza di CERT-EU](https://cert.europa.eu/publications/security-advisories/2026-005/):
> "Le build predefinite di dm-crypt / LUKS, kTLS, IPsec, SSH e OpenSSL / GnuTLS non dipendono da AF_ALG e non sono interessate dalle limitazioni di AF_ALG."
L'architettura è la seguente:```
┌─────────────────────────────────────────────┐
│ Userspace Applications │
├─────────────────────────────────────────────┤
│ Standard Crypto Libraries │
│ (OpenSSL, GnuTLS, NSS) │
│ │ │
│ └─────> In-Kernel Crypto API ──────────┐ │
│ (Direct access) │ │
├──────────────────────────────────────────┼──┤
│ AF_ALG Socket Interface (RARELY USED) │ │
│ │ │ │
│ └─────> In-Kernel Crypto API ──────────┘ │
├─────────────────────────────────────────────┤
│ Kernel Crypto Subsystem │
│ (AES, SHA, AEAD algorithms) │
└─────────────────────────────────────────────┘
Standard services bypass AF_ALG entirely
Secondo l'analisi di R-fx Networks:
"Per la maggior parte degli ambienti HPC, questo non romperà nulla – AF_ALG è una porta d'ingresso a livello utente per la crittografia del kernel che quasi nessuno usa realmente."
Solo queste configurazioni estremamente rare potrebbero essere interessate:
NON predefinito su RHEL. Il motore afalg deve essere configurato esplicitamente:```bash
openssl engine afalg
**Caso d’uso:** Offload dell’accelerazione crittografica hardware
**Prevalenza:** Estremamente rara nelle distribuzioni standard
**Impatto:** L’applicazione ripiega sulla crittografia software
#### 2. Applicazioni personalizzate che utilizzano libkcapi
**Programmazione diretta dei socket AF_ALG** tramite librerie specializzate.
**Caso d’uso:** Strumenti di sicurezza specializzati o applicazioni crittografiche personalizzate
**Prevalenza:** Quasi inesistente negli ambienti aziendali standard
**Impatto:** Specifico dell’applicazione, richiederebbe modifiche al codice
#### 3. Strumenti di Offload Crittografico Hardware
**Strumenti specializzati** che utilizzano AF_ALG per l’accelerazione hardware.
**Caso d’uso:** Calcolo ad alte prestazioni, acceleratori crittografici hardware
**Prevalenza:** Solo in ambienti specializzati ad alta sicurezza o HPC
**Impatto:** Ripiego sulla crittografia software
### Posizione Ufficiale di Red Hat
Secondo [Red Hat Bugzilla #2460538](https://bugzilla.redhat.com/show_bug.cgi?id=2460538):
- **CVE:** CVE-2026-31431
- **Gravità:** Alta (CVSS 7.8)
- **Stato:** Corretto nel kernel 6.19.12+
- **Fix:** Annulla l’ottimizzazione in-place del 2017 (commit 72548b093ee3)
- **Impatto:** "Nessun vantaggio nell’operare in-place in algif_aead poiché sorgente e destinazione provengono da mapping diversi"
### Valutazione dell’Impatto per Flag di Mitigazione
| Flag | Mitigazioni | Impatto sui Servizi Standard |
|------|------------|------------------------------|
| 1 | Blacklist dei moduli | ✅ Impatto zero - AF_ALG non utilizzato |
| 2 | Policy SELinux | ✅ Impatto zero - Blocca syscall non utilizzata |
| **3** | **Blacklist + SELinux** | ✅ **Impatto zero - CONSIGLIATO** |
| 5 | Blacklist + seccomp | ✅ Impatto zero - Sicuro per servizio |
| 7 | Blacklist + SELinux + seccomp | ✅ Impatto zero - Difesa in profondità |
| 15 | Tutte le mitigazioni | ✅ Impatto zero - Protezione massima |
### Verifica Dopo la Mitigazione
Dopo aver applicato le mitigazioni cfDr, verificare che i servizi critici continuino a funzionare:```bash
# Test SSH connectivity
ssh localhost echo "SSH working"
# Test HTTPS (if web server running)
curl -k https://localhost
# Test LUKS encryption (if using encrypted volumes)
cryptsetup status /dev/mapper/luks-volume
# Test IPsec (if VPN configured)
ipsec status
# Test system services
systemctl status sshd
systemctl status httpd
systemctl status postgresql
# Check for any service failures
systemctl --failed
Risultato atteso: Tutti i servizi continuano a funzionare normalmente.
Numerose organizzazioni di sicurezza autorevoli confermano la nostra valutazione:
CERT-EU (30 aprile 2026):
"Le build predefinite di dm-crypt / LUKS, kTLS, IPsec, SSH e OpenSSL / GnuTLS non dipendono da AF_ALG"
Sysdig (29 aprile 2026):
Documenta che le operazioni crittografiche standard utilizzano API in-kernel, non socket AF_ALG
R-fx Networks (2 maggio 2026):
"I carichi di lavoro di hosting non utilizzano legittimamente AF_ALG, rendendone sicura la disabilitazione come mitigazione senza impattare i servizi di produzione"
HPCsec (30 aprile 2026):
"Per la maggior parte degli ambienti HPC, questo non romperà nulla – AF_ALG è una porta d'ingresso userspace alla crittografia del kernel che quasi nessuno usa realmente"
Per Ambienti RHEL/CentOS/Fedora Standard:
Matrice Decisionale:
| Il Tuo Ambiente | Raccomandazione | Motivo |
|---|---|---|
| Server RHEL standard | Distribuire il Flag 3 ora | Zero impatto, protezione immediata |
| RHEL con crittografia personalizzata | Verificare prima l'uso di AF_ALG | Estremamente improbabile, ma verificare |
| Sistemi di sviluppo | Distribuire il Flag 3 ora | Come la produzione |
| Ambienti ad alta sicurezza | Distribuire il Flag 7 o 15 | Massima difesa in profondità |
Le remediation di cfDr sono sicure per tutte le distribuzioni RHEL standard. Il modulo algif_aead e l'interfaccia socket AF_ALG non sono utilizzati da alcuna crittografia di sistema critica sui sistemi Enterprise Linux.
Cosa significa:
L'unico rischio teorico riguarda applicazioni personalizzate programmate esplicitamente per utilizzare socket AF_ALG - uno scenario così raro che molteplici organizzazioni di sicurezza hanno confermato indipendentemente che è sicuro bloccare AF_ALG negli ambienti enterprise.
Questo flusso di lavoro bilancia completezza e sicurezza operativa:
ansible-playbook -i inventory quickstart.yml
**Cosa succede**:
- Tutti gli host vengono valutati
- Non vengono apportate modifiche
- Vengono generati i report
**Revisione**:
- Controlla `/root/cve-2026-31431-assessment-<hostname>.txt` su ciascun host
- Rivedi l'output di riepilogo
- Identifica gli host vulnerabili
**Output previsto**:```
CVE-2026-31431 Summary Report
==========================================
Total hosts scanned: 50
Vulnerable hosts: 12
VULNERABLE HOSTS REQUIRING REMEDIATION:
web1.example.com, web2.example.com, db1.example.com, ...
DEFAULT RECOMMENDED MITIGATION: Flag 3
- Module Blacklist (1) + SELinux (2) = Defense-in-depth
- Module Blacklist alone can be bypassed by root (via insmod)
- SELinux blocks syscall even if blacklist is bypassed
- Covers user_t/unconfined_t (vast majority of scenarios)
ansible-playbook -i inventory quickstart.yml -e generate_inventory=true -e inventory_output_dir=./vulnerable_hosts
**Cosa succede**:
- Host vulnerabili identificati
- Flag di mitigazione consigliati calcolati per ogni host
- File di inventario generati
**Revisione**:```bash
# Check generated inventory
cat vulnerable_hosts/vulnerable_hosts.yml
# Review per-host recommendations
ls vulnerable_hosts/host_vars/
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'dev*:test*'
**Cosa succede**:
- Mitigazioni applicate solo agli host di test/dev
- Servizi riavviati (per seccomp)
- Verifica eseguita
**Verifica**:```bash
# Re-scan test hosts
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml quickstart.yml --limit 'dev*:test*'
# Check for "PROTECTED - Defense-in-depth" status
Applicazioni di test:
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'web*'
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'app*'
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'db*'
**Cosa succede**:
- Ogni livello viene corretto separatamente
- I servizi vengono riavviati un livello alla volta
- Consente una validazione per fasi
**Monitoraggio tra le fasi**:
- Verificare la disponibilità dei servizi
- Controllare i log delle applicazioni
- Confermare l'esperienza utente
#### Passaggio 5: Verifica e Documentazione```bash
# Final assessment of all hosts
ansible-playbook -i inventory quickstart.yml
Documento:
Total hosts scanned: 50 Vulnerable hosts: 0
All hosts protected with defense-in-depth mitigations
### Flusso di lavoro per la risposta alle emergenze
Per sistemi **attivamente compromessi** o **minacce immediate**:```bash
# Immediate assessment and remediation
ansible-playbook -i inventory quickstart.yml -e apply_remediation=true -e mitigation_flags=3
# Re-verify all hosts
ansible-playbook -i inventory quickstart.yml
Utilizzare questo approccio quando:
Attenzione: Questa operazione applica le mitigazioni a TUTTI gli host vulnerabili contemporaneamente. Monitorare attentamente.
Per la conformità continua e il rilevamento di nuovi sistemi:```bash
0 2 * * 0 ansible-playbook -i inventory quickstart.yml -e generate_inventory=true
**Integra con**:
- Database di gestione della configurazione (CMDB)
- Security information and event management (SIEM)
- Sistemi di ticketing per il tracciamento della remediation
### Workflow di Mitigazione Personalizzato
Per **requisiti specifici** oltre al Flag 3:```bash
# Use enhanced protection (Flag 7: Blacklist + SELinux + seccomp)
ansible-playbook -i inventory quickstart.yml \
-e apply_remediation=true \
-e mitigation_flags=7
# Or customize per-host via inventory
# Edit generated host_vars/*.yml files to set custom flags
vim vulnerable_hosts/host_vars/web1.example.com.yml
# Change: recommended_mitigation_flags: 7
# Apply customized settings
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml \
-e apply_remediation=true
Dopo la correzione, verifica la protezione:```bash
sudo lsmod | grep algif_aead
sudo modprobe algif_aead
cat /etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf
sudo semodule -l | grep cve_2026_31431
systemctl show httpd | grep RestrictAddressFamilies
---
## Avvio Rapido
Per gli utenti che vogliono iniziare subito:
### Utilizzo più Semplice```bash
# Clone repository
git clone https://github.com/parmstro/cfDr.git
cd cfDr
# Step 1: Assess all hosts
ansible-playbook -i inventory quickstart.yml
# Step 2: Apply recommended mitigations to vulnerable hosts
ansible-playbook -i inventory quickstart.yml --limit vulnerable_hosts -e apply_remediation=true
ansible-playbook -i /path/to/your/inventory quickstart.yml
ansible-playbook -i /path/to/your/inventory quickstart.yml
--limit vulnerable_hosts
-e apply_remediation=true
### Generazione dell'Inventario delle Vulnerabilità```bash
# Scan and create inventory of vulnerable hosts
ansible-playbook -i inventory quickstart.yml -e generate_inventory=true
# Review generated files
ls inventory_output/
# Apply mitigations using generated inventory
ansible-playbook -i inventory_output/vulnerable_hosts.yml cve_2026_31431_playbook.yml \
-e apply_remediation=true
Sovrascrivi le mitigazioni predefinite per ogni esecuzione del playbook:```bash
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=1
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=2
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=3
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=7
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=15
### Personalizzazione dei Domini SELinux
Modifica `roles/cve_2026_31431/defaults/main.yml`:```yaml
# Add additional domains to protect
selinux_denied_domains:
- user_t
- unconfined_t
- httpd_t
- postgresql_t
- mysqld_t
- custom_app_t # Your custom domain
- another_service_t
Modifica roles/cve_2026_31431/defaults/main.yml:```yaml
seccomp_protected_services:
### Directory di Output dell'Inventario Personalizzato```bash
# Specify custom output location
ansible-playbook quickstart.yml \
-e generate_inventory=true \
-e inventory_output_dir=/path/to/output
Il file sample_playbook.yml contiene diversi esempi:```yaml
### Requisiti
- **Ansible**: 2.9 o superiore (consigliata 2.15+)
- **Accesso privilegiato**: sudo/root sugli host di destinazione
- **Python**: 2.7 o 3.5+ sugli host di destinazione
- **Sistemi operativi supportati**: Red Hat Enterprise Linux, CentOS, Fedora (supporto limitato per Debian/Ubuntu)
---
## Risorse aggiuntive
### Informazioni e analisi sulla CVE
**Fonti ufficiali**:
- [NVD - CVE-2026-31431](https://nvd.nist.gov/vuln/detail/CVE-2026-31431)
- [Voce CVE di MITRE](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-31431)
**Ricerca e analisi sulla sicurezza**:
- [Sysdig - Analisi di CVE-2026-31431](https://www.sysdig.com/blog/cve-2026-31431-copy-fail-linux-kernel-flaw-lets-local-users-gain-root-in-seconds)
- [The Hacker News - Vulnerabilità Copy Fail](https://thehackernews.com/2026/04/new-linux-copy-fail-vulnerability.html)
- [Avviso di sicurezza CERT-EU](https://cert.europa.eu/publications/security-advisories/2026-005/)
- [Help Net Security - Dettagli su Copy Fail](https://www.helpnetsecurity.com/2026/04/30/copyfail-linux-lpe-vulnerability-cve-2026-31431/)
### Progetti di mitigazione correlati
Contributi della community alla mitigazione di CVE-2026-31431:
- **[block-copyfail](https://github.com/atgreen/block-copyfail)** - Implementazione eBPF LSM di Anthony Green
- Mitigazione completa basata su eBPF
- Protezione a livello di sistema per kernel moderni
- Fonte per l'implementazione eBPF di cfDr
- **[Blastwall](https://gprocunier.github.io/blastwall/demo.html)** - Framework di policy SELinux di Greg Procunier
- Gestione avanzata delle policy SELinux
- Framework di protezione multi-CVE
- Fonte per l'implementazione SELinux di cfDr
### Risorse specifiche per Red Hat
**Articoli della Knowledge Base**:
- [Red Hat Customer Portal - CVE-2026-31431](https://access.redhat.com/security/cve/cve-2026-31431)
- [Red Hat Security Data - Prodotti interessati](https://access.redhat.com/security/data/metrics/)
**Guide di mitigazione**:
- [SELinux per Enterprise Linux - Guida utente](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/using_selinux/)
- [Funzionalità di sicurezza di systemd](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/securing-systemd-services_system-management-using-the-rhel-9-web-console)
### Documentazione
**Documentazione estesa di cfDr**:
- [Guida alle mitigazioni per Enterprise Linux](https://github.com/parmstro/cfdr/blob/HEAD/enterprise-linux-mitigations.md) - Confronto completo di tutti i metodi di mitigazione
- [Guida alla mitigazione SELinux](https://github.com/parmstro/cfdr/blob/HEAD/selinux-mitigation.md) - Implementazione dettagliata delle policy SELinux
- [Guida alla mitigazione seccomp](https://github.com/parmstro/cfdr/blob/HEAD/seccomp-mitigation.md) - Implementazione dei filtri seccomp di systemd
- [Guida alla mitigazione eBPF LSM](https://github.com/parmstro/cfdr/blob/HEAD/ebpf-lsm-mitigation.md) - Implementazione dei programmi eBPF LSM
- [docs/CONTRIBUTORS.md](https://github.com/parmstro/cfdr/blob/HEAD/CONTRIBUTORS.md) - Linee guida per i contributi e crediti
**Documentazione Ansible**:
- [Guida utente Ansible](https://docs.ansible.com/ansible/latest/user_guide/)
- [Best practice Ansible](https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html)
---
## Monitoraggio delle patch
### Red Hat Enterprise Linux
**Fonte primaria**: Red Hat Customer Portal
- **Avvisi di sicurezza**: https://access.redhat.com/security/security-updates/
- **Avvisi Errata**: https://access.redhat.com/errata/
- **Tracker CVE**: https://access.redhat.com/security/cve/cve-2026-31431
**Metodi di notifica**:
1. **Avvisi via email** (consigliati):
- Accedi al Red Hat Customer Portal
- Vai a: Impostazioni account → Notifiche
- Attiva: "Avvisi di sicurezza" e "Errata prodotto"
- Seleziona: le versioni RHEL che gestisci
2. **Feed RSS**:
- Sicurezza RHEL 7: https://access.redhat.com/blogs/766093/feed
- Sicurezza RHEL 8: https://access.redhat.com/blogs/1683903/feed
- Sicurezza RHEL 9: https://access.redhat.com/blogs/5480361/feed
- Tutta la sicurezza: https://access.redhat.com/security/data/oval/com.redhat.rhsa-all.xml
3. **Accesso API**: ```bash
# Check for kernel security updates
curl -H "Accept: application/json" \
"https://access.redhat.com/labs/securitydataapi/cve/CVE-2026-31431.json"
Monitoraggio Automatico: ```bash
sudo yum install yum-plugin-security
sudo yum updateinfo list security
sudo yum updateinfo list security kernel
Cosa cercare:
Esempio di formato dell'avviso:``` RHSA-2026:XXXX - Important: kernel security update Severity: Important CVEs: CVE-2026-31431 Affected Products: RHEL 7, 8, 9
### CentOS / Rocky Linux / AlmaLinux
**CentOS Stream**:
- **Annunci**: https://lists.centos.org/pipermail/centos-announce/
- **Mailing List di Sicurezza**: https://lists.centos.org/mailman/listinfo/centos-security-announce
**Rocky Linux**:
- **Tracker di Sicurezza**: https://errata.rockylinux.org/
- **Annunci**: https://rockylinux.org/news/
**AlmaLinux**:
- **Errata**: https://errata.almalinux.org/
- **Sicurezza**: https://wiki.almalinux.org/security/
### Fedora
**Fonte Primaria**: Fedora Project
- **Sistema di Aggiornamenti**: https://bodhi.fedoraproject.org/
- **Lista di Sicurezza**: https://lists.fedoraproject.org/archives/list/[email protected]/
**Metodi di Notifica**:```bash
# Subscribe to security announcements
# Visit: https://lists.fedoraproject.org/admin/lists/security-announce.lists.fedoraproject.org/
# Check for updates
sudo dnf check-update kernel
# View available security updates
sudo dnf updateinfo list security
Fonte primaria: Avvisi di sicurezza Ubuntu
Metodi di notifica:```bash
sudo apt update sudo apt list --upgradable | grep security
sudo apt install ubuntu-security-tools usn list --cve CVE-2026-31431
### Debian
**Fonte primaria**: Debian Security Tracker
- **Security Tracker**: https://security-tracker.debian.org/tracker/CVE-2026-31431
- **Annunci di sicurezza**: https://www.debian.org/security/
**Metodi di notifica**:```bash
# Subscribe to Debian Security Announcements
# Visit: https://lists.debian.org/debian-security-announce/
# Check for security updates
sudo apt update
sudo apt list --upgradable
Fonte primaria: SUSE Security
Metodi di notifica:```bash
sudo zypper list-patches --category security
sudo zypper info --cve CVE-2026-31431
### Kernel a monte
**Linux Kernel Mailing List**:
- **Archivi LKML**: https://lkml.org/
- **Lista di sicurezza**: https://www.kernel.org/category/releases.html
**Repository Git**:```bash
# Monitor kernel git for patches
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
# Search for CVE-2026-31431 patches
git log --all --grep="CVE-2026-31431"
Crea uno script di monitoraggio per il tuo ambiente:```bash #!/bin/bash
DISTRO=$(grep ^ID= /etc/os-release | cut -d= -f2 | tr -d '"')
case $DISTRO in rhel|centos|rocky|alma) yum updateinfo list security kernel 2>/dev/null | grep -i CVE-2026-31431 ;; fedora) dnf updateinfo list security kernel 2>/dev/null | grep -i CVE-2026-31431 ;; ubuntu|debian) apt-get update -qq apt-cache show linux-image-$(uname -r) | grep CVE-2026-31431 ;; sles|opensuse*) zypper info --cve CVE-2026-31431 kernel-default ;; esac
curl -s "https://access.redhat.com/labs/securitydataapi/cve/CVE-2026-31431.json" |
jq -r '.affected_release[] | select(.package | startswith("kernel")) |
"(.product_name): (.advisory) - (.package)"'
**Pianifica con cron**:```bash
# Check daily for patches
0 6 * * * /usr/local/bin/check-cve-2026-31431-patch.sh | mail -s "CVE-2026-31431 Patch Check" [email protected]
Verifica la disponibilità della patch: ```bash
sudo yum check-update kernel # RHEL/CentOS/Fedora sudo apt update && apt list --upgradable linux-image-* # Ubuntu/Debian
Rivedi le note di rilascio:
Testa in ambiente non di produzione: ```bash
sudo yum update kernel # RHEL/CentOS/Fedora sudo apt upgrade linux-image-* # Ubuntu/Debian sudo reboot
Verificare l'efficacia della patch: ```bash
uname -r
ansible-playbook -i inventory quickstart.yml
Pianificare il rollout in produzione:
Rimuovere le mitigazioni temporanee (opzionale): ```bash
sudo rm /etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf sudo semodule -r cve_2026_31431_af_alg_deny # SELinux policy
Raccomandazione: Anche dopo l'applicazione della patch al kernel, considera di mantenere attive le mitigazioni di difesa in profondità come protezione contro vulnerabilità future.
Hai trovato un bug o desideri richiedere una funzionalità?
Accogliamo con piacere i contributi! Consulta docs/CONTRIBUTORS.md per:
cfDr si basa sulla competenza collettiva dei professionisti della sicurezza:
Consulta docs/CONTRIBUTORS.md per i dettagli completi sui contributi.
Questo progetto è fornito sotto la Licenza MIT per scopi di valutazione delle vulnerabilità e remediation.
Consulta LICENSE per i dettagli.
IMPORTANTE: Questo strumento fornisce mitigazioni temporanee in attesa delle patch del kernel fornite dal vendor. Queste mitigazioni riducono significativamente il rischio ma potrebbero non fornire una protezione completa in tutti gli scenari.
cfDr è fornito "così com'è" senza garanzia. Ricorda sempre di:
I collaboratori e i manutentori di cfDr non sono responsabili per eventuali danni o perdite di dati derivanti dall'uso di questo strumento.
Ultimo aggiornamento: 2026-05-02T23:30:00Z