
Ein Ansible-Playbook zur Behebung der Schwachstelle CVE-2026-31431 auf RHEL-basierten und Debian-basierten Betriebssystemen.
Ein Ansible-Playbook zum Anwenden und Zurücksetzen der CVE-2026-31431 (AF_ALG)-Kernelmodul-Mitigation auf Debian/Ubuntu- und RHEL/Rocky/AlmaLinux-Systemen.
Dieses Playbook mitigiert CVE-2026-31431, indem es das verwundbare Kernelmodul algif_aead deaktiviert:
grubby, um ein Kernel-Initcall-Blacklist-Argument hinzuzufügen⚠️ Wichtig: Das Playbook startet Ihre Server NICHT automatisch neu. Es zeigt eine Erinnerungsmeldung an, wenn ein Neustart erforderlich ist, sodass Administratoren Neustarts innerhalb von Wartungsfenstern planen können.
Beispielkonfigurationsdateien befinden sich im Verzeichnis examples/:
# Beispiel-Inventory kopieren
cp examples/inventory/hosts.ini inventory/hosts.ini
# Beispiel-Ansible-Konfiguration kopieren (optional)
cp examples/ansible.cfg ansible.cfg
Siehe examples/README.md für detaillierte Anpassungsanweisungen.
Bearbeiten Sie inventory/hosts.ini mit Ihren Serverdetails:
[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
Um die Mitigation auf alle Hosts in Ihrem Inventory anzuwenden:
ansible-playbook mitigation-playbook.yaml
Um sie auf bestimmte Hosts oder Gruppen anzuwenden:
ansible-playbook mitigation-playbook.yaml --limit webservers
Um die Mitigation zurückzusetzen (zu entfernen):
ansible-playbook mitigation-playbook.yaml -e "rollback=true"
Oder verwenden Sie das rollback-Tag:
ansible-playbook mitigation-playbook.yaml --tags rollback -e "rollback=true"
Um veraltete Systemd-Drop-in-Dateien zu entfernen (falls Sie von einer älteren Version dieser Mitigation migrieren):
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."
}
| OS-Familie | Neustart erforderlich, wenn | Verhalten |
|---|---|---|
| Debian/Ubuntu | Modul war "in use" und konnte nicht entladen werden | Nur Erinnerung |
| RHEL/Rocky/Alma | Grubby Änderungen an Kernel-Argumenten vorgenommen | Nur Erinnerung |
Das Playbook ist so konzipiert, dass es niemals automatisch neu startet, um Administratoren die volle Kontrolle über Wartungsfenster zu geben.
| Variable | Standard | Beschreibung |
|---|---|---|
rollback | false | Auf true setzen, um die Mitigation zurückzusetzen |
run_systemd_cleanup | false | Auf true setzen, um veraltete Systemd-Drop-ins zu entfernen |
target_hosts | all | Ausführung auf bestimmte Hosts oder Gruppen begrenzen |
mitigation_serial | 25% | Batchgröße für die rollierende Ausführung |
mitigation - Nur die Aufgaben zum Anwenden der Mitigation ausführenrollback - Nur die Rollback-Aufgaben ausführensystemd-cleanup - Nur die Systemd-Bereinigungsaufgaben ausführenBeispiel:
# Nur Mitigationsaufgaben ausführen
ansible-playbook -i inventory/hosts.ini mitigation-playbook.yaml --tags mitigation
# Nur Rollback-Aufgaben ausführen
ansible-playbook -i inventory/hosts.ini mitigation-playbook.yaml --tags rollback -e "rollback=true"
Nach der Ausführung des Playbooks (und einem Neustart, falls dazu aufgefordert), verifizieren Sie, dass die Mitigation aktiv ist:
# Prüfen, ob das Modul auf der Blacklist steht
cat /etc/modprobe.d/disable-algif.conf
# Prüfen, ob das Modul geladen ist (sollte nichts zurückgeben)
lsmod | grep algif_aead
# Prüfen, ob das Kernel-Argument vorhanden ist
grep initcall_blacklist /proc/cmdline
# Sollte etwa Folgendes ausgeben:
# ... initcall_blacklist=algif_aead_init ...
MIT-Lizenz - Siehe LICENSE-Datei für Details
Beiträge sind willkommen! Bitte reichen Sie Issues und Pull Requests ein.
Dieses Playbook wurde unter Inspiration durch die folgenden Quellen erstellt:
Dieses Playbook wird wie besehen bereitgestellt. Testen Sie es immer gründlich in Ihrer Umgebung, bevor Sie es auf Produktionssystemen anwenden. Die Autoren sind nicht verantwortlich für Systemschäden oder Ausfallzeiten, die durch die Verwendung dieses Playbooks verursacht werden.