
# Playbook de réponse aux incidents et package de détection défensif pour CVE-2026-31431 (Copy Fail) LPE du noyau Linux, incluant des requêtes de chasse Sigma, auditd, Falco, Wazuh, YARA, eBPF et SIEM.
Playbook RI prêt pour la production, règles de détection et guide de triage SOC pour CVE-2026-31431 — une élévation de privilèges locale du noyau Linux dans l'interface crypto algif_aead. Comprend un playbook HTML interactif, des règles Sigma, des configurations auditd, des règles Falco pour conteneurs, des règles de corrélation Wazuh, des signatures YARA, des moniteurs eBPF en temps réel et des requêtes de chasse SIEM sur Splunk, Sentinel KQL, Elastic EQL et QRadar AQL.
Aucun code d'exploitation — contenu purement défensif pour les analystes SOC et les ingénieurs en détection.
Auteur : Ashok Reddy
La liste noire modprobe largement recommandée ne fonctionne pas sur RHEL, CentOS, AlmaLinux, Rocky Linux ou CloudLinux. Le module algif_aead est compilé directement dans le noyau (CONFIG_CRYPTO_USER_API_AEAD=y). Les commandes s'exécutent sans erreur mais laissent le système totalement non protégé.
Atténuation correcte pour la famille RHEL :
grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
reboot
# Vérification :
cat /proc/cmdline | grep initcall_blacklist
Voir mitigate/ pour les scripts spécifiques à chaque plateforme.
├── README.md # Ce fichier
├── LICENSE # Licence MIT
├── playbook/
│ ├── index.html # Playbook RI interactif (13 onglets)
│ └── triage_playbook.md # Guide de triage pour analystes SOC
├── sigma/
│ ├── afalg_socket_creation.yml # Socket AF_ALG par un non-root
│ ├── afalg_bind_aead_string.yml # Chaîne d'algorithme authencesn
│ └── afalg_splice_chain.yml # Règle de chaîne comportementale
├── auditd/
│ └── cve-2026-31431.rules # Ensemble complet de règles auditd
├── falco/
│ └── afalg_container.yml # Détection AF_ALG en conteneur
├── wazuh/
│ └── cve-2026-31431.xml # Règles de corrélation Wazuh
├── yara/
│ └── copyfail_artifacts.yar # Détection d'artefacts de fichiers PoC
├── ebpf/
│ └── copyfail_monitor.bt # Moniteur temps réel bpftrace
├── queries/
│ ├── splunk.spl # Requêtes de chasse SPL Splunk
│ ├── defender_sentinel.kql # Requêtes KQL Sentinel/MDE
│ ├── elastic.eql # Séquences EQL Elastic
│ └── qradar.aql # Requêtes AQL QRadar
├── mitigate/
│ ├── mitigate_debian.sh # Atténuation Debian/Ubuntu
│ └── mitigate_rhel.sh # Famille RHEL (méthode grubby)
└── check/
└── is_vulnerable.sh # Vérification de vulnérabilité sûre
Le fichier playbook/index.html est un playbook interactif complet avec 13 onglets :
En ligne : https://ashok523.github.io/cve-2026-31431/
# 1. Vérifier si le système est vulnérable
sudo bash check/is_vulnerable.sh
# 2. Appliquer l'atténuation
sudo bash mitigate/mitigate_rhel.sh # Famille RHEL
sudo bash mitigate/mitigate_debian.sh # Debian/Ubuntu
# 3. Déployer les règles auditd
sudo cp auditd/cve-2026-31431.rules /etc/audit/rules.d/
sudo augenrules --load
# 4. Déployer les règles Wazuh
sudo cp wazuh/cve-2026-31431.xml /var/ossec/etc/rules/local_rules.xml
sudo systemctl restart wazuh-manager
# 5. Déployer la règle Falco (Kubernetes)
sudo cp falco/afalg_container.yml /etc/falco/rules.d/
sudo systemctl restart falco
# 6. Exécuter le moniteur eBPF (temps réel)
sudo bpftrace ebpf/copyfail_monitor.bt
# 7. Rechercher les fichiers PoC
yara yara/copyfail_artifacts.yar /tmp/ /dev/shm/ /var/tmp/
Ce dépôt contient uniquement du contenu de détection défensif. Aucun code d'exploitation, script de preuve de concept, décalage d'appel système ou shellcode n'est inclus ni ne sera ajouté.
| Champ | Détail |
|---|
| CVE | CVE-2026-31431 |
| Surnom | Copy Fail |
| Composant | Noyau Linux algif_aead (interface crypto AF_ALG) |
| Type | Élévation de privilèges locale (LPE) |
| CVSS | 7.8 (ÉLEVÉE) |
| Primitive | Écriture déterministe de 4 octets dans le cache de pages de tout fichier lisible |
| Taille de l'exploit | 732 octets en Python (bibliothèque standard uniquement, Python 3.10+) |
| Fiabilité | 100 % — aucune condition de course, aucune nouvelle tentative |
| Écritures disque | Zéro — cache de pages uniquement, invisible pour les outils FIM |
| Portée | Toutes les principales distributions Linux depuis 2017 (noyau 4.13–6.18) |
| Risque conteneur | Primitive d'évasion de conteneur si le noyau hôte n'est pas corrigé (T1611) |
| Statut PoC | Public depuis le 29 avril 2026 |
| Correctif | Commit a664bf3d603d — annule les opérations AEAD en place |
| Découvert par | Taeyang Lee (Theori) · Chaîne d'exploitation par Xint Code (assistée par IA) |
| Onglet | Contenu |
|---|
| Vue d'ensemble | Graphe d'attaque, chaîne d'exploitation, statistiques |
| Phases 1–6 | Cycle de vie RI complet avec listes de contrôle |
| Flux de renseignements | Méthodologie de détection SOC, VAPT vs SOC, outils communautaires, statut des correctifs |
| IOC | Indicateurs d'appels système, de processus, de système de fichiers et comportementaux |
| MITRE ATT&CK | Cartographie des techniques avec signaux de détection |
| Cas d'utilisation de détection | 8 cas d'utilisation basés sur les TTP (UC-CF-001 à UC-CF-008) |
| Chasse SIEM | 18 requêtes sur toutes les plateformes |
| Détection IA | Capacités et limites UEBA/ML |
| Étape | Détection | Outil |
|---|
| Socket AF_ALG par un non-root | Sigma · auditd · Falco · eBPF | Signal principal |
| Chaîne splice() (même PID, 10 s) | auditd · eBPF | FP quasi nul |
| Chaîne AEAD authencesn | Sigma · auditd | Critique si observée |
| uid→euid=0 sans authentification | auditd · Splunk · KQL | LPE confirmée |
| su sans nom d'utilisateur | auth.log (signal Wiz) | Post-exploitation |
| PoC sur le système de fichiers | YARA | Détection de préparation |
| Évasion de conteneur | Falco avec contexte K8s | T1611 |
| Persistance post-root | auditd FIM · Wazuh | Clés SSH, SUID, cron |
| Approche | Volume | Confiance |
|---|
| ❌ Alerter sur tous les splice() | ~10 000/h | Très faible |
| ⚠️ Alerter sur socket(AF_ALG) seul | ~5–50/jour | Moyenne |
| ✅ AF_ALG + splice même PID/10 s | ~0–2/jour | Très élevée |
| ✅ AF_ALG + splice + su / 60 s | ~0/jour | Critique |
| Distribution | Statut | Commande |
|---|
| Ubuntu | ✅ Corrigé | apt update && apt install linux-image-generic |
| AlmaLinux | ✅ Corrigé | dnf clean metadata && dnf upgrade |
| CloudLinux | ✅ Corrigé + livepatch | kcarectl --update |
| Debian | ✅ Suivi | apt update && apt upgrade |
| Mainline | ✅ Corrigé 7.0-rc7 | Commit a664bf3d603d |
| RHEL | ⏳ En attente | Errata non encore publié |
| Amazon Linux | 🔄 Suivi | yum update kernel |