
Erkennungs- und Mitigationstools für CVE-2026-31431 (Copy Fail) auf Linux-Kerneln. Enthält Skripte von Phalanx-CCS und Silent4Labs sowie ein Ansible-Playbook, um eine temporäre Mitigation (Blockieren des algif_aead-Moduls oder Boot-Parameter) serverweit anzuwenden.
Dieses Paket bietet eine automatisierte Lösung zur Erkennung und Eindämmung der Schwachstelle CVE-2026-31431 (auch Copy Fail genannt) auf Linux-Systemen mit betroffenen Kerneln (Versionen 4.14 bis 6.12.84, 6.13 bis 6.18.21 usw.).
Das Tooling besteht aus:
mitigate_copyfail.sh), das:
CONFIG_CRYPTO_USER_API_AEAD=m|y) erkennt.=m): erstellt /etc/modprobe.d/disable-algif-aead.conf mit install algif_aead /bin/false und entlädt das Modul (rmmod).=y): fügt den Kernel-Bootparameter initcall_blacklist=algif_aead_init hinzu (Neustart erforderlich).mitigation.yml), das:
Wichtiger Hinweis: Die Mitigation ist temporär. Der dauerhafte Fix besteht darin, den Kernel auf eine Version zu aktualisieren, die den Patch
a664bf3d603denthält (≥6.18.22, ≥6.19.12 oder ≥7.0).
become: yes)sudo-Rechte (um die Mitigation anzuwenden)Die Erkennungsskripte (Phalanx-CCS und Silent4Labs) sind sicher und nutzen die Schwachstelle nicht aus; sie prüfen lediglich die Angriffsfläche.
cve-2026-31431-mitigation/
├── README.md
├── scripts/
│ ├── mitigate_copyfail.sh # Unified script (detection + mitigation)
│ ├── check_copyfail.py # Phalanx-CCS (reachability checker)
│ └── check-copyfail.sh # Silent4Labs (risk assessment)
├── ansible/
│ ├── ansible.cfg # (optional) Ansible configuration
│ ├── inventory.ini # Server inventory
│ └── mitigation.yml # Main playbook
└── resultados_cve/ # Auto‑generated folder for logs
git clone https://github.com/your-username/cve-2026-31431-mitigation.git
cd cve-2026-31431-mitigation/ansible
inventory.ini)Beispiel für einen Remote-Server:
[servers]
server1 ansible_host=192.168.1.10 ansible_user=root
[localhost]
localhost ansible_connection=local
[all:vars]
ansible_become=yes
# ansible_become_password=my_password # if using password for sudo
In mitigation.yml verwendet die Aufgabe Copy scripts to remote src: "../scripts/{{ item }}". Stellen Sie sicher, dass der relative Pfad korrekt ist, oder passen Sie ihn an Ihre Verzeichnisstruktur an.
Aus dem Verzeichnis ansible/:
ansible-playbook -i inventory.ini mitigation.yml -k -K
-k fragt nach dem SSH-Passwort.-K fragt nach dem become-Passwort (sudo).Bei Verwendung von localhost mit ansible_connection=local ist kein SSH erforderlich.
Das Playbook zeigt eine Klartext-Zusammenfassung ähnlich der folgenden:
==========================================
MITIGATION RESULTS
==========================================
Host: server1
------------------------------------------
- Status: SYSTEM SECURE
- Code: (not applicable)
------------------------------------------
- Final score: 40 / 100
- Risk level: MEDIUM
==========================================
Zusätzlich wird eine Protokolldatei unter resultados_cve/<hostname>_mitigation.log gespeichert, die die vollständige Skriptausgabe enthält (Datum, Kernelversion, Erkennungsmeldungen usw.).
Wenn extrahierte Werte ? oder Not detected anzeigen, aktivieren Sie die Debug-Aufgaben in mitigation.yml:
when: false in when: true (oder setzen Sie when: true, um clean_stdout- und Regex-Ausgaben zu sehen).Bearbeiten Sie die Aufgaben Create local results directory und Save full output to local file:
path: /absolute/path/resultados_cve
dest: "/absolute/path/resultados_cve/{{ inventory_hostname }}_mitigation.log"
Kommentieren Sie die Kopieraufgaben aus und passen Sie den Pfad in der Aufgabe Run mitigation script so an, dass er auf den vorhandenen Speicherort zeigt.
Ändern Sie in der letzten Aufgabe (Clean up remote scripts) when: false in when: true.
initcall_blacklist) erfordert einen Neustart, um wirksam zu werden. Das Playbook startet nicht automatisch neu; ein Wartungsfenster muss eingeplant werden.CONFIG_CRYPTO_USER_API_AEAD=y (eingebauter Kernel) kann das Modul nicht mit rmmod entladen werden; der einzige Weg ist der Bootparameter./proc/crypto und /boot/config-* zu lesen; sie werden mit become: yes ausgeführt.Dieses Projekt wird unter der MIT-Lizenz vertrieben. Skripte von Drittanbietern (Phalanx-CCS, Silent4Labs) behalten ihre jeweiligen Lizenzen.
Wenn Sie dieses Tool nützlich finden, geben Sie ihm bitte einen Stern auf GitHub!