
# Playbook Ansible pour détecter et corriger CVE-2026-31431 (Copy Fail) - Vulnérabilité d'élévation de privilèges locale du noyau Linux
Copie Fail Détection et Remédiation
Une suite de rôles Ansible et de playbooks pour détecter et remédier à la CVE-2026-31431 (Copy Fail), une vulnérabilité critique d'élévation de privilèges locaux dans le module algif_aead du noyau Linux.
🔗 GitHub : https://github.com/parmstro/cfDr
Le nom cfDr est un jeu de mots sur « Copy Fail Doctor » - votre remède de confiance pour la CVE-2026-31431.
CVE-2026-31431 (CVSS 7.8) est un défaut logique dans l'interface socket AEAD du noyau Linux (AF_ALG) découvert en 2026. La vulnérabilité permet à tout utilisateur local non privilégié d'élever ses privilèges à root en quelques secondes.
algif_aead (interface crypto AF_ALG)Versions du noyau : noyau Linux >= 4.10 (publié en 2017)
Distributions affectées :
Remarque : toute distribution Linux avec un noyau 4.10 ou plus récent est potentiellement vulnérable.
Cette vulnérabilité est particulièrement dangereuse car :
Une fois qu'un attaquant dispose d'une forme quelconque d'accès local (SSH, shell web, évasion de conteneur, etc.), il peut :
En attendant les correctifs du noyau fournis par les éditeurs, plusieurs stratégies d'atténuation sont disponibles. cfDr les implémente toutes, avec des recommandations intelligentes basées sur la configuration de votre système.
Toutes les remédiations ne se valent pas. Voici ce que vous devez savoir :
| Méthode | Root peut-il contourner ? | Couverture | Prise en charge Enterprise Linux |
|---|---|---|---|
| Liste noire de modules | ✅ Oui (via insmod) | Empêche le chargement par modprobe | Toutes les versions |
| Politique SELinux | ❌ NON (couche LSM) | Domaines configurés uniquement | Toutes les versions (par défaut) |
| seccomp systemd | ❌ NON (filtre d'appels système) | Services configurés uniquement | Toutes les versions |
| eBPF LSM | ❌ NON (couche LSM) | À l'échelle du système (si configuré) | RHEL 9+, Fedora 34+ |
Recommandation par défaut de cfDr : Niveau 3 (liste noire de modules + SELinux)
Cela fournit deux couches de protection indépendantes :``` ┌─────────────────────────────────────────────────┐ │ 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
### Pourquoi la liste noire de modules seule ne suffit pas
Un attaquant déterminé disposant d'un accès root peut contourner la liste noire de modules :```bash
# Module blacklist DOES NOT prevent:
insmod /lib/modules/$(uname -r)/kernel/crypto/algif_aead.ko.xz
Cependant, cela est acceptable car :
Pour une protection complète et non contournable, vous avez besoin de :
Liste noire de modules + au moins l'un des éléments suivants :
cfDr utilise des indicateurs binaires pour activer plusieurs atténuations :
| Valeur d'indicateur | Atténuations activées | Cas d'utilisation |
|---|---|---|
| 1 | Liste noire de modules uniquement | Protection minimale, systèmes sans SELinux |
| 2 | SELinux uniquement | Environnements SELinux uniquement |
| 3 | Liste noire de modules + SELinux | Défaut RECOMMANDÉ |
| 5 | Liste noire de modules + seccomp | Non-SELinux avec durcissement des services |
| 7 | Liste noire de modules + SELinux + seccomp | Protection renforcée |
| 15 | Toutes les atténuations | Protection maximale (RHEL 9+ uniquement) |
Calcul des indicateurs : 1 (liste noire) + 2 (SELinux) + 4 (seccomp) + 8 (eBPF) = somme
Protection SELinux :
user_t, unconfined_t, httpd_t, postgresql_t, mysqld_tuser_t et unconfined_t couvrent la grande majorité des scénarios d'attaqueProtection seccomp systemd :
httpd, nginx, postgresql, mariadb, redis, memcachedProtection eBPF LSM :
cfDr effectue une évaluation complète sur plusieurs dimensions :
uname -r
- Détermine si la version du noyau est >= 4.10 (plage vulnérable)
- Identifie la version du noyau et la distribution
#### 2. Vérification de la disponibilité du module```bash
modinfo algif_aead
algif_aead existe dans le noyaulsmod | grep algif_aead
- Détermine si le module est actuellement chargé
- **Critique** : Module chargé = activement exploitable
#### 4. Détection active des sockets```bash
lsof -U | grep AF_ALG
Liste noire de modules :```bash grep -E "blacklist algif_aead|install algif_aead" /etc/modprobe.d/*.conf
**Politique SELinux** :```bash
semodule -l | grep cve_2026_31431_af_alg_deny
systemd seccomp :```bash systemctl show | grep RestrictAddressFamilies
#### 6. Détermination catégorique du statut
cfDr classe chaque hôte dans l'un de ces états :
| Statut | Condition | Action requise |
|--------|-----------|-----------------|
| **VULNÉRABLE - Module chargé** | Noyau >= 4.10, module existant ET chargé | **IMMÉDIATE** - Exploitable activement |
| **VULNÉRABLE - Module existant** | Noyau >= 4.10, module existant, non chargé | **HAUTE** - Peut être chargé et exploité |
| **ATTÉNUÉ - Module sur liste noire** | Liste noire détectée | **FAIBLE** - Surveiller, appliquer des couches supplémentaires |
| **PROTÉGÉ - Défense en profondeur** | Liste noire + SELinux/seccomp/eBPF | **AUCUNE** - Entièrement protégé |
| **NON VULNÉRABLE - Ancien noyau** | Noyau < 4.10 | **AUCUNE** - Antérieur à la vulnérabilité |
| **NON VULNÉRABLE - Aucun module** | Module algif_aead absent du noyau | **AUCUNE** - Module non disponible |
### Sortie d'évaluation
Chaque hôte reçoit :
1. **Sortie console** : Brève ligne de statut
2. **Fichier détaillé** : `/root/cve-2026-31431-assessment-<hostname>.txt`
3. **Rapport JSON** : `/tmp/cve-2026-31431-<hostname>.json`
Exemple de sortie brève :```
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 est conçu comme un rôle Ansible moderne avec plusieurs points d'entrée de 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
### Flux d'exécution
#### Mode d'évaluation (par défaut)```
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
### Détails de la remédiation
#### Liste noire de modules (Indicateur 1)
**Ce qu'il fait** :
1. Décharge le module `algif_aead` s'il est actuellement chargé (`rmmod algif_aead`)
2. Crée `/etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf` : ```
blacklist algif_aead
install algif_aead /bin/true
update-initramfs -udracut -fmodprobeProtection : Immédiate, aucun redémarrage requis Persistance : Survit aux redémarrages et aux mises à jour du noyau
Ce qu'elle fait :
policycoreutilspolicycoreutils-python-utilsselinux-policy-develcheckpolicysemodule -i cve_2026_31431_af_alg_deny.ppDomaines protégés (par défaut) :
user_t - Processus utilisateur standardunconfined_t - Processus non confinéshttpd_t - Serveur web Apachepostgresql_t - Base de données PostgreSQLmysqld_t - Base de données MySQL/MariaDBProtection : Bloque au niveau de la couche LSM, ne peut pas être contournée Persistance : La politique survit aux redémarrages
Ce qu'il fait :
/etc/systemd/system/<service>.service.d/90-cve-2026-31431-block-af-alg.confRestrictAddressFamilies=~AF_ALGServices protégés (par défaut) :
httpd, nginx - Serveurs webpostgresql, mariadb - Bases de donnéesredis, memcached - Serveurs de cacheProtection : Bloque la création de sockets au niveau des appels système par service Persistance : Survit aux redémarrages et aux mises à jour des services
Ce qu'il fait :
Exigences :
CONFIG_BPF_LSM=yProtection : Politique dynamique et programmable à l'échelle du système Persistance : Nécessite un service système pour recharger au démarrage
cfDr peut générer des fichiers d'inventaire prêts à l'emploi contenant uniquement les hôtes vulnérables :
Fichiers générés :``` 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
**Ce qui est inclus** :
- Résultats de l'évaluation des vulnérabilités
- Indicateurs d'atténuation recommandés (calculés par hôte)
- Détails du système (version du noyau, état de SELinux)
- Paramètres de remédiation prêts à appliquer
**Recommandations intelligentes** :
- Indicateur 3 (Liste noire de modules + SELinux) si SELinux est activé
- Indicateur 1 (Liste noire de modules uniquement) si SELinux n'est pas disponible
- Personnalisable par hôte via les `host_vars` générés
---
## Impact sur la cryptographie système
### Constat critique : la cryptographie standard de RHEL n'est PAS affectée
**Niveau de confiance** : ⭐⭐⭐⭐⭐ **ÉLEVÉ** - Voir le [rapport de validation IPsec/XFRM](https://github.com/parmstro/cfdr/blob/HEAD/docs/IPSEC_VALIDATION.md) pour une analyse complète
**Bonne nouvelle pour les déploiements Enterprise Linux :** D'après des sources faisant autorité, notamment [CERT-EU](https://cert.europa.eu/publications/security-advisories/2026-005/), [CloudLinux](https://blog.cloudlinux.com/cve-2026-31431-copy-fail-mitigation-and-patches) et [HPCsec](https://www.hpcsec.com/2026/04/30/advisory-cve-2026-31431-copy-fail-local-privilege-escalation-via-af-alg-algif_aead/), **les mesures d'atténuation de cfDr ont un impact minimal, voire nul**, sur la cryptographie et les services système standard de RHEL.
### Ce qui n'est PAS affecté
Les systèmes cryptographiques critiques de RHEL suivants **n'utilisent pas AF_ALG** et ne sont absolument pas affectés par nos remédiations :
#### Services système essentiels
| Service/Composant | Fonction | Statut |
|------------------|----------|--------|
| **dm-crypt / LUKS** | Chiffrement complet du disque | ✅ Non affecté |
| **IPsec / XFRM** | VPN et réseau chiffré | ✅ Non affecté ([validé](https://github.com/parmstro/cfdr/blob/HEAD/docs/IPSEC_VALIDATION.md)) |
| **kTLS** | Implémentation TLS du noyau | ✅ Non affecté |
| **SSH** | Connexions shell sécurisées | ✅ Non affecté |
#### Bibliothèques cryptographiques
| Bibliothèque | Utilisation | Statut |
|---------|-------|--------|
| **OpenSSL** (par défaut) | SSL/TLS, certificats, crypto générale | ✅ Non affecté |
| **GnuTLS** (par défaut) | Implémentation TLS | ✅ Non affecté |
| **NSS** | Services de sécurité réseau Mozilla | ✅ Non affecté |
| **Trousseau de clés du noyau** | Gestion des clés du noyau | ✅ Non affecté |
#### Infrastructure critique
- ✅ **SSL/TLS** - Tout le chiffrement des serveurs web n'est pas affecté
- ✅ **HTTPS** - Le trafic web sécurisé n'est pas affecté
- ✅ **Chiffrement des e-mails** (S/MIME, PGP) - Non affecté
- ✅ **Opérations de certificats** - Non affectées
- ✅ **Chiffrement des bases de données** - Non affecté
- ✅ **Chiffrement des sauvegardes** - Non affecté
### Pourquoi les services standard n'utilisent pas AF_ALG
Comme documenté dans la [documentation crypto du noyau Linux](https://www.kernel.org/doc/html/v4.11/crypto/userspace-if.html), **AF_ALG est une interface socket espace utilisateur** vers la crypto du noyau introduite dans Linux 2.6.38. Cependant, la plupart des services système RHEL utilisent l'API crypto du noyau **directement** plutôt que de passer par la couche socket AF_ALG.
Selon l'[avis de sécurité de CERT-EU](https://cert.europa.eu/publications/security-advisories/2026-005/) :
> « Les builds dm-crypt / LUKS, kTLS, IPsec, SSH et OpenSSL / GnuTLS par défaut ne dépendent pas d'AF_ALG et ne sont pas affectés par les limitations d'AF_ALG. »
L'architecture se présente comme suit :```
┌─────────────────────────────────────────────┐
│ 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
Selon l'analyse de R-fx Networks :
« Pour la plupart des environnements HPC, cela ne cassera rien – AF_ALG est une porte d'entrée côté utilisateur vers la crypto du noyau que presque rien n'utilise réellement. »
Seules ces configurations extrêmement rares pourraient être affectées :
PAS par défaut sur RHEL. Le moteur afalg doit être explicitement configuré :```bash
openssl engine afalg
**Cas d’utilisation :** Déchargement de l’accélération cryptographique matérielle
**Prévalence :** Extrêmement rare dans les déploiements standard
**Impact :** L’application retombe sur la cryptographie logicielle
#### 2. Applications personnalisées utilisant libkcapi
**Programmation directe de sockets AF_ALG** à l’aide de bibliothèques spécialisées.
**Cas d’utilisation :** Outils de sécurité spécialisés ou applications cryptographiques personnalisées
**Prévalence :** Quasi inexistante dans les environnements d’entreprise standard
**Impact :** Spécifique à l’application, nécessiterait une modification du code
#### 3. Outils de déchargement cryptographique matériel
**Outils spécialisés** qui utilisent AF_ALG pour l’accélération matérielle.
**Cas d’utilisation :** Calcul haute performance, accélérateurs cryptographiques matériels
**Prévalence :** Uniquement dans les environnements spécialisés de haute sécurité ou HPC
**Impact :** Retour à la cryptographie logicielle
### Position officielle de Red Hat
Selon [Red Hat Bugzilla #2460538](https://bugzilla.redhat.com/show_bug.cgi?id=2460538) :
- **CVE :** CVE-2026-31431
- **Gravité :** Élevée (CVSS 7.8)
- **Statut :** Corrigé dans le noyau 6.19.12+
- **Correctif :** Annule l’optimisation en place de 2017 (commit 72548b093ee3)
- **Impact :** « Aucun avantage à opérer en place dans algif_aead puisque la source et la destination proviennent de mappages différents »
### Évaluation de l’impact par indicateur d’atténuation
| Indicateur | Atténuations | Impact sur les services standard |
|------|------------|----------------------------|
| 1 | Liste noire de modules | ✅ Impact nul - AF_ALG non utilisé |
| 2 | Politique SELinux | ✅ Impact nul - Bloque l’appel système inutilisé |
| **3** | **Liste noire + SELinux** | ✅ **Impact nul - RECOMMANDÉ** |
| 5 | Liste noire + seccomp | ✅ Impact nul - Sûr par service |
| 7 | Liste noire + SELinux + seccomp | ✅ Impact nul - Défense en profondeur |
| 15 | Toutes les atténuations | ✅ Impact nul - Protection maximale |
### Vérification après remédiation
Après avoir appliqué les atténuations cfDr, vérifiez que les services critiques continuent de fonctionner :```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
Résultat attendu : Tous les services continuent de fonctionner normalement.
Plusieurs organisations de sécurité faisant autorité confirment notre évaluation :
CERT-EU (30 avril 2026) :
« Les builds dm-crypt / LUKS, kTLS, IPsec, SSH et OpenSSL / GnuTLS par défaut ne dépendent pas d'AF_ALG »
Sysdig (29 avril 2026) :
Documente que les opérations cryptographiques standard utilisent des API du noyau, et non des sockets AF_ALG
R-fx Networks (2 mai 2026) :
« Les charges de travail d'hébergement n'utilisent pas légitimement AF_ALG, ce qui rend son désactivation sûre comme mesure d'atténuation sans impact sur les services de production »
HPCsec (30 avril 2026) :
« Pour la plupart des environnements HPC, cela ne cassera rien – AF_ALG est une porte d'entrée côté espace utilisateur vers la cryptographie du noyau que presque personne n'utilise réellement »
Pour les environnements RHEL/CentOS/Fedora standard :
Matrice de décision :
| Votre environnement | Recommandation | Raison |
|---|---|---|
| Serveurs RHEL standard | Déployez le drapeau 3 maintenant | Impact nul, protection immédiate |
| RHEL avec cryptographie personnalisée | Auditez d'abord l'utilisation d'AF_ALG | Extrêmement improbable, mais vérifiez |
| Systèmes de développement | Déployez le drapeau 3 maintenant | Identique à la production |
| Environnements à haute sécurité | Déployez le drapeau 7 ou 15 | Défense en profondeur maximale |
Les mesures correctives de cfDr sont sûres pour tous les déploiements RHEL standard. Le module algif_aead et l'interface socket AF_ALG ne sont pas utilisés par aucune cryptographie système critique sur les systèmes Enterprise Linux.
Ce que cela signifie :
Le seul risque théorique concerne les applications personnalisées explicitement programmées pour utiliser les sockets AF_ALG - un scénario si rare que plusieurs organisations de sécurité ont indépendamment confirmé qu'il est sûr de bloquer AF_ALG dans les environnements d'entreprise.
Ce flux de travail équilibre rigueur et sécurité opérationnelle :
ansible-playbook -i inventory quickstart.yml
**Ce qui se passe** :
- Tous les hôtes sont évalués
- Aucune modification n'est effectuée
- Des rapports sont générés
**Examen** :
- Vérifiez `/root/cve-2026-31431-assessment-<hostname>.txt` sur chaque hôte
- Examinez la sortie récapitulative
- Identifiez les hôtes vulnérables
**Sortie attendue** :```
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
**Ce qui se passe** :
- Hôtes vulnérables identifiés
- Indicateurs de mitigation recommandés calculés par hôte
- Fichiers d'inventaire générés
**Examen** :```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*'
**Ce qui se passe** :
- Les mesures d’atténuation ne sont appliquées qu’aux hôtes de test/développement
- Les services sont redémarrés (pour seccomp)
- Une vérification est effectuée
**Vérifier** :```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
Applications de 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*'
**Ce qui se passe** :
- Chaque niveau est corrigé séparément
- Les services sont redémarrés un niveau à la fois
- Permet une validation par étapes
**Surveillance entre les étapes** :
- Vérifier la disponibilité des services
- Examiner les journaux d'application
- Valider l'expérience utilisateur
#### Étape 5 : Vérification et documentation```bash
# Final assessment of all hosts
ansible-playbook -i inventory quickstart.yml
Document :
Total hosts scanned: 50 Vulnerable hosts: 0
All hosts protected with defense-in-depth mitigations
### Workflow de réponse d'urgence
Pour les systèmes **activement exploités** ou les **menaces immédiates** :```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
Utilisez cette approche lorsque :
Attention : Cela applique des mesures d'atténuation à TOUS les hôtes vulnérables simultanément. Surveillez de près.
Pour la conformité continue et la détection de nouveaux systèmes :```bash
0 2 * * 0 ansible-playbook -i inventory quickstart.yml -e generate_inventory=true
**Intégration avec** :
- Base de données de gestion de configuration (CMDB)
- Gestion des informations et des événements de sécurité (SIEM)
- Systèmes de tickets pour le suivi des remédiations
### Workflow de remédiation personnalisé
Pour des **exigences spécifiques** au-delà du 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
Après la remédiation, vérifiez la protection :```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
---
## Démarrage rapide
Pour les utilisateurs qui souhaitent commencer immédiatement :
### Utilisation la plus simple```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
### Génération de l'inventaire des vulnérabilités```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
Remplacez les atténuations par défaut pour chaque exécution de 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
### Personnalisation des domaines SELinux
Modifiez `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
Modifiez roles/cve_2026_31431/defaults/main.yml :```yaml
seccomp_protected_services:
### Répertoire de sortie d'inventaire personnalisé```bash
# Specify custom output location
ansible-playbook quickstart.yml \
-e generate_inventory=true \
-e inventory_output_dir=/path/to/output
Le fichier sample_playbook.yml contient plusieurs exemples :```yaml
### Exigences
- **Ansible** : 2.9 ou supérieur (2.15+ recommandé)
- **Accès privilégié** : sudo/root sur les hôtes cibles
- **Python** : 2.7 ou 3.5+ sur les hôtes cibles
- **Systèmes d'exploitation pris en charge** : Red Hat Enterprise Linux, CentOS, Fedora (prise en charge limitée pour Debian/Ubuntu)
---
## Ressources supplémentaires
### Informations et analyses sur les CVE
**Sources officielles** :
- [NVD - CVE-2026-31431](https://nvd.nist.gov/vuln/detail/CVE-2026-31431)
- [Entrée CVE MITRE](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-31431)
**Recherche et analyse en sécurité** :
- [Sysdig - Analyse de 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 - Vulnérabilité Copy Fail](https://thehackernews.com/2026/04/new-linux-copy-fail-vulnerability.html)
- [Avis de sécurité CERT-EU](https://cert.europa.eu/publications/security-advisories/2026-005/)
- [Help Net Security - Détails sur Copy Fail](https://www.helpnetsecurity.com/2026/04/30/copyfail-linux-lpe-vulnerability-cve-2026-31431/)
### Projets d'atténuation associés
Contributions de la communauté à l'atténuation de CVE-2026-31431 :
- **[block-copyfail](https://github.com/atgreen/block-copyfail)** - Implémentation eBPF LSM par Anthony Green
- Atténuation complète basée sur eBPF
- Protection à l'échelle du système pour les noyaux modernes
- Source de l'implémentation eBPF de cfDr
- **[Blastwall](https://gprocunier.github.io/blastwall/demo.html)** - Cadre de politiques SELinux par Greg Procunier
- Gestion avancée des politiques SELinux
- Cadre de protection multi-CVE
- Source de l'implémentation SELinux de cfDr
### Ressources spécifiques à Red Hat
**Articles de la base de connaissances** :
- [Portail client Red Hat - CVE-2026-31431](https://access.redhat.com/security/cve/cve-2026-31431)
- [Données de sécurité Red Hat - Produits concernés](https://access.redhat.com/security/data/metrics/)
**Guides d'atténuation** :
- [SELinux pour Enterprise Linux - Guide de l'utilisateur](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/using_selinux/)
- [Fonctionnalités de sécurité 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)
### Documentation
**Documentation étendue de cfDr** :
- [Guide des atténuations pour Enterprise Linux](https://github.com/parmstro/cfdr/blob/HEAD/enterprise-linux-mitigations.md) - Comparaison complète de toutes les méthodes d'atténuation
- [Guide d'atténuation SELinux](https://github.com/parmstro/cfdr/blob/HEAD/selinux-mitigation.md) - Implémentation détaillée des politiques SELinux
- [Guide d'atténuation seccomp](https://github.com/parmstro/cfdr/blob/HEAD/seccomp-mitigation.md) - Implémentation du filtre seccomp systemd
- [Guide d'atténuation eBPF LSM](https://github.com/parmstro/cfdr/blob/HEAD/ebpf-lsm-mitigation.md) - Implémentation du programme eBPF LSM
- [docs/CONTRIBUTORS.md](https://github.com/parmstro/cfdr/blob/HEAD/CONTRIBUTORS.md) - Directives de contribution et crédits
**Documentation Ansible** :
- [Guide de l'utilisateur Ansible](https://docs.ansible.com/ansible/latest/user_guide/)
- [Bonnes pratiques Ansible](https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html)
---
## Surveillance des correctifs
### Red Hat Enterprise Linux
**Source principale** : Portail client Red Hat
- **Avis de sécurité** : https://access.redhat.com/security/security-updates/
- **Avis d'errata** : https://access.redhat.com/errata/
- **Suivi des CVE** : https://access.redhat.com/security/cve/cve-2026-31431
**Méthodes de notification** :
1. **Alertes par e-mail** (recommandé) :
- Connectez-vous au portail client Red Hat
- Accédez à : Paramètres du compte → Notifications
- Activez : « Avis de sécurité » et « Errata produit »
- Sélectionnez : les versions RHEL que vous gérez
2. **Flux RSS** :
- Sécurité RHEL 7 : https://access.redhat.com/blogs/766093/feed
- Sécurité RHEL 8 : https://access.redhat.com/blogs/1683903/feed
- Sécurité RHEL 9 : https://access.redhat.com/blogs/5480361/feed
- Toutes les sécurités : https://access.redhat.com/security/data/oval/com.redhat.rhsa-all.xml
3. **Accès API** : ```bash
# Check for kernel security updates
curl -H "Accept: application/json" \
"https://access.redhat.com/labs/securitydataapi/cve/CVE-2026-31431.json"
Surveillance automatisée : ```bash
sudo yum install yum-plugin-security
sudo yum updateinfo list security
sudo yum updateinfo list security kernel
Ce qu'il faut rechercher :
Exemple de format d'avis :``` 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** :
- **Annonces** : https://lists.centos.org/pipermail/centos-announce/
- **Liste de diffusion sécurité** : https://lists.centos.org/mailman/listinfo/centos-security-announce
**Rocky Linux** :
- **Suivi de sécurité** : https://errata.rockylinux.org/
- **Annonces** : https://rockylinux.org/news/
**AlmaLinux** :
- **Errata** : https://errata.almalinux.org/
- **Sécurité** : https://wiki.almalinux.org/security/
### Fedora
**Source principale** : Projet Fedora
- **Système de mises à jour** : https://bodhi.fedoraproject.org/
- **Liste de sécurité** : https://lists.fedoraproject.org/archives/list/[email protected]/
**Méthodes de notification** :```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
Source principale : Avis de sécurité Ubuntu
Méthodes de notification :```bash
sudo apt update sudo apt list --upgradable | grep security
sudo apt install ubuntu-security-tools usn list --cve CVE-2026-31431
### Debian
**Source principale** : Debian Security Tracker
- **Security Tracker** : https://security-tracker.debian.org/tracker/CVE-2026-31431
- **Annonces de sécurité** : https://www.debian.org/security/
**Méthodes de notification** :```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
Source principale : SUSE Security
Méthodes de notification :```bash
sudo zypper list-patches --category security
sudo zypper info --cve CVE-2026-31431
### Noyau amont
**Liste de diffusion du noyau Linux** :
- **Archives LKML** : https://lkml.org/
- **Liste de sécurité** : https://www.kernel.org/category/releases.html
**Dépôt 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"
Créez un script de surveillance pour votre environnement :```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)"'
**Planifier avec 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]
Vérifier la disponibilité du correctif : ```bash
sudo yum check-update kernel # RHEL/CentOS/Fedora sudo apt update && apt list --upgradable linux-image-* # Ubuntu/Debian
Examiner les notes de version :
Tester hors production : ```bash
sudo yum update kernel # RHEL/CentOS/Fedora sudo apt upgrade linux-image-* # Ubuntu/Debian sudo reboot
Vérifier l’efficacité du correctif : ```bash
uname -r
ansible-playbook -i inventory quickstart.yml
Planifier le déploiement en production :
Supprimer les mesures d'atténuation temporaires (facultatif) : ```bash
sudo rm /etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf sudo semodule -r cve_2026_31431_af_alg_deny # SELinux policy
Recommandation : Même après l'application du correctif du noyau, envisagez de conserver les mesures de défense en profondeur en place comme protection contre de futures vulnérabilités.
Vous avez trouvé un bug ou souhaitez proposer une fonctionnalité ?
Nous accueillons volontiers les contributions ! Consultez docs/CONTRIBUTORS.md pour :
cfDr est construit sur l'expertise collective des professionnels de la sécurité :
Consultez docs/CONTRIBUTORS.md pour les détails complets des contributions.
Ce projet est fourni sous la licence MIT à des fins d'évaluation des vulnérabilités et de remédiation.
Consultez LICENSE pour plus de détails.
IMPORTANT : Cet outil fournit des atténuations temporaires en attendant les correctifs du noyau fournis par les vendeurs. Ces atténuations réduisent considérablement les risques mais peuvent ne pas offrir une protection complète dans tous les scénarios.
cfDr est fourni « tel quel » sans garantie. Toujours :
Les contributeurs et mainteneurs de cfDr ne sont pas responsables des dommages ou pertes de données résultant de l'utilisation de cet outil.
Dernière mise à jour : 2026-05-02T23:30:00Z