
Un playbook Ansible per mitigare la vulnerabilità CVE-2026-31431 su sistemi operativi basati su RHEL e Debian.
Un playbook Ansible per applicare e annullare la mitigazione del modulo kernel CVE-2026-31431 (AF_ALG) su sistemi Debian/Ubuntu e RHEL/Rocky/AlmaLinux.
Questo playbook mitiga CVE-2026-31431 disabilitando il modulo kernel vulnerabile algif_aead:
grubby per aggiungere un argomento kernel di blacklist initcall⚠️ Importante: Il playbook NON riavvia automaticamente i tuoi server. Mostra un messaggio di promemoria quando è necessario un riavvio, consentendo agli operatori di pianificare i riavvii durante le finestre di manutenzione.
I file di configurazione di esempio sono forniti nella directory examples/:
# Copia l'inventory di esempio
cp examples/inventory/hosts.ini inventory/hosts.ini
# Copia la configurazione ansible di esempio (opzionale)
cp examples/ansible.cfg ansible.cfg
Consulta examples/README.md per istruzioni dettagliate di personalizzazione.
Modifica inventory/hosts.ini con i dettagli dei tuoi server:
[servers]
server1.example.com
server2.example.com ansible_host=192.168.1.50
[servers:vars]
ansible_user=admin
ansible_become=true
ansible all -m ping
ansible-playbook mitigation-playbook.yaml
Per applicare la mitigazione a tutti gli host nel tuo inventory:
ansible-playbook mitigation-playbook.yaml
Per applicarla a host o gruppi specifici:
ansible-playbook mitigation-playbook.yaml --limit webservers
Per annullare (rimuovere) la mitigazione:
ansible-playbook mitigation-playbook.yaml -e "rollback=true"
Oppure usa il tag rollback:
ansible-playbook mitigation-playbook.yaml --tags rollback -e "rollback=true"
Per rimuovere i file drop-in systemd deprecati (se si migra da una versione precedente di questa mitigazione):
ansible-playbook mitigation-playbook.yaml -e "run_systemd_cleanup=true"
TASK [CVE-2026-31431 Summary (Debian)] ****************************************
ok: [server1] => {
"msg": [
"===== CVE-2026-31431 SUMMARY — server1 =====",
"Action: apply",
"Module loaded (pre): False",
"Module loaded (post): False",
"Reboot required: False"
]
}
TASK [Remind operator to reboot (RHEL)] ****************************************
ok: [server2] => {
"msg": "REMINDER: Kernel args changed. Reboot required to activate mitigation."
}
TASK [CVE-2026-31431 Summary (Red Hat)] ****************************************
ok: [server2] => {
"msg": [
"===== CVE-2026-31431 SUMMARY — server2 =====",
"Action: apply",
"Kernel arg active (pre): False",
"Kernel arg active (post): False",
"Reboot required: True"
]
}
TASK [Remind to reboot if required (Red Hat)] **********************************
ok: [server2] => {
"msg": "REMINDER: A reboot is required to activate/deactivate the mitigation on this Red Hat-based host."
}
| Famiglia OS | Riavvio Necessario Quando | Comportamento |
|---|---|---|
| Debian/Ubuntu | Il modulo era "in uso" e non poteva essere scaricato | Solo promemoria |
| RHEL/Rocky/Alma | Grubby ha apportato modifiche agli argomenti kernel | Solo promemoria |
Il playbook è progettato per non riavviare mai automaticamente per dare agli operatori il pieno controllo sulle finestre di manutenzione.
| Variabile | Default | Descrizione |
|---|---|---|
rollback | false | Impostare a true per annullare la mitigazione |
run_systemd_cleanup | false | Impostare a true per rimuovere i drop-in systemd deprecati |
target_hosts | all | Limita l'esecuzione a host o gruppi specifici |
mitigation_serial | 25% | Dimensione del batch per l'esecuzione progressiva |
mitigation - Esegue solo le attività di applicazione della mitigazionerollback - Esegue solo le attività di annullamentosystemd-cleanup - Esegue solo le attività di pulizia systemdEsempio:
# Esegui solo le attività di mitigazione
ansible-playbook -i inventory/hosts.ini mitigation-playbook.yaml --tags mitigation
# Esegui solo le attività di annullamento
ansible-playbook -i inventory/hosts.ini mitigation-playbook.yaml --tags rollback -e "rollback=true"
Dopo aver eseguito il playbook (e riavviato se richiesto), verifica che la mitigazione sia attiva:
# Controlla se il modulo è in blacklist
cat /etc/modprobe.d/disable-algif.conf
# Controlla se il modulo è caricato (non dovrebbe restituire nulla)
lsmod | grep algif_aead
# Controlla se l'argomento kernel è presente
grep initcall_blacklist /proc/cmdline
# Dovrebbe restituire qualcosa come:
# ... initcall_blacklist=algif_aead_init ...
Licenza MIT - Consulta il file LICENSE per i dettagli
I contributi sono benvenuti! Invia issue e pull request.
Questo playbook è stato creato prendendo ispirazione dalle seguenti fonti:
Questo playbook è fornito così com'è. Testa sempre accuratamente nel tuo ambiente prima di applicarlo ai sistemi di produzione. Gli autori non sono responsabili per eventuali danni al sistema o tempi di inattività causati dall'uso di questo playbook.