Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
COPY-FAIL-Detection-with-Wazuh-4.14.4 — Wazuh 4.14.4 règles de détection pour CVE-2026-31431 (Copy Fail) - Élévation de privilèges locale Linux via l'écriture du cache de page authencesn | Kitploit
Outils/GitHubGitHub/mym0us3r/copy-fail-detection-with-wazuh-4.14.4
Escalade de PrivilègesAnalyse des VulnérabilitésAudit de ConfigurationRenseignement sur les MenacesDétection d'Intrusion
GitHubmym0us3r/copy-fail-detection-with-wazuh-4.14.4

COPY-FAIL-Detection-with-Wazuh-4.14.4

Wazuh 4.14.4 règles de détection pour CVE-2026-31431 (Copy Fail) - Élévation de privilèges locale Linux via l'écriture du cache de page authencesn

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
9il y a 3 moisPas encore vérifié

Détection de COPY FAIL avec Wazuh 4.14.4 - CVE-2026-31431

Ingénierie de détection pour l'élévation de privilèges locale (LPE) du noyau Copy Fail · Ubuntu / RHEL / SUSE / Amazon Linux 2023 / Kali

rules sca status mitre cve


Qu'est-ce que Copy Fail ?

CVE-2026-31431 est un bug logique dans le modèle cryptographique authencesn du noyau Linux. Il permet à tout utilisateur local non privilégié d'effectuer une écriture déterministe et contrôlée de 4 octets dans le cache de pages de n'importe quel fichier lisible sur le système - sans nécessiter de conditions de course, d'offsets du noyau ou de privilèges élevés.

Un script Python 3.10+ de 732 octets utilisant uniquement des modules de la bibliothèque standard (os, socket, zlib) exploite la vulnérabilité pour obtenir les droits root sur toutes les principales distributions Linux publiées depuis 2017.

Le fichier sur disque reste inchangé, rendant la surveillance traditionnelle de l'intégrité des fichiers (FIM) complètement aveugle.

Découvert par Taeyang Lee (Theori / Xint) avec l'assistance de l'outil d'IA Xint Code.


Références officielles


Pourquoi le FIM échoue - Pourquoi ce dépôt existe

L'écriture cible uniquement le cache de pages en mémoire. Le noyau ne marque jamais la page comme sale, donc le mécanisme d'écriture différée ne la persiste jamais sur disque. Le binaire sur disque reste identique octet par octet à l'original.

root@kitploit:~
Approche FIM traditionnelle :
  lire le fichier depuis le disque -> calculer le hachage -> comparer -> aucune anomalie signalée

Réalité de Copy Fail :
  fichier sur disque = INCHANGÉ
  cache de pages    = CORROMPU
  résultat FIM      = AVEUGLE

La seule détection efficace est comportementale, via la surveillance des appels système. Ce dépôt fournit des règles Wazuh validées en production qui détectent la chaîne d'exploitation au niveau des appels système du noyau.


Chaîne d'exploitation

root@kitploit:~
Étape 1 : socket(38, 5, 0)       Socket AF_ALG - aucun privilège requis
Étape 2 : bind()                  Liaison à authencesn - active le code vulnérable
Étape 3 : sendmsg()               Construire la charge utile AAD - octets 4-7 = valeur à écrire
Étape 4 : splice()          [!]   DÉCLENCHEUR - les pages du cache de pages entrent dans le SGL inscriptible
Étape 5 : recv()                  authencesn écrit seqno_lo dans le cache de pages
Étape 6 : execve(/usr/bin/su)     Le binaire setuid corrompu exécute le shellcode en tant que UID 0

Chaîne d'exploitation CVE-2026-31431

splice() est l'étape critique. Elle livre les pages du cache de pages dans la scatterlist inscriptible du socket AF_ALG sans copie - une optimisation sur place de 2017 dans algif_aead.c qui rendait les pages du tampon du pipe réutilisables dans le SGL de destination. Lorsque authencesn.decrypt() s'exécute, il écrit dans ces pages, qui se trouvent être le cache de pages de votre fichier cible.


Distributions affectées

Toutes les distributions Linux fournissant des noyaux depuis le commit 72548b093ee3 (2017) sont affectées.

Évasion de conteneur : Copy Fail est également un vecteur d'évasion de conteneur. Le cache de pages est partagé entre tous les processus de l'hôte, y compris à travers les frontières des conteneurs. La partie 2 de Xint couvre l'exploitation de Kubernetes.


Structure du dépôt

root@kitploit:~
COPY-FAIL-Detection-with-Wazuh-4.14.4/
│
├── rules/
│   └── local_rules.xml              # 8 règles de détection Wazuh (199600-199607)
│
├── auditd/
│   └── cve-2026-31431.rules         # Règles du capteur d'appels système auditd
│
├── sca/
│   └── cve_2026_31431.yml           # Politique SCA - indépendante de la version du noyau
│
└── docs/
    ├── pentlab_uid.png               # Exécution du PoC - root obtenu sur Kali
    ├── Rule-199604-TRIGs.png         # Règle 199604 - 80 hits sur pentlab
    ├── Rule_199604_Wazuh_Server_only.png  # Règle 199604 - première validation
    ├── Splice_-_Non-root_process.png # Règles 199600/199601/199604 déclenchées
    ├── Modprobe_-_Possible_Algif_aed_load_attempt.png  # Règle 199603
    ├── Pentlab-PoC.png               # Règle 199603 sur l'agent pentlab
    ├── exploit_chain_timeline.svg    # Chaîne d'exploitation
    └── SCA_CVE-2026-31431.png        # Score de la politique SCA 75%

Architecture de détection

Deux couches indépendantes - aucune ne dépend de la version du noyau.

Couche 1 - Détection comportementale (auditd + Wazuh)

Le filtre uid!=0 couvre les utilisateurs au-delà des comptes interactifs : comptes de service (www-data, postgres, jenkins), conteneurs et shells web sans session de connexion.

Règles du capteur auditd (auditd/cve-2026-31431.rules) :

root@kitploit:~
-a always,exit -F arch=b64 -S socket -F a0=0x26 -F uid!=0 -k copy_fail_af_alg
-a always,exit -F arch=b32 -S socket -F a0=0x26 -F uid!=0 -k copy_fail_af_alg
-a always,exit -F arch=b64 -S splice -F uid!=0 -k copy_fail_splice
-w /usr/bin/su    -p x -k copy_fail_execve_su
-w /usr/bin/kmod  -p x -k copy_fail_modload

Couche 2 - Surface de vulnérabilité (politique SCA)

Vérifications de configuration automatisées toutes les 12 heures via sca/cve_2026_31431.yml. Aucune version du noyau requise.

Architecture de la chaîne de règles

Note d'ingénierie : Les règles 199600 et 199601 doivent être des enfants de la règle 92600 (processus Python, profondeur 1), et non de 80700. Le moteur de règles Wazuh suit un seul chemin de chaîne par événement. Placer les règles de détection à la profondeur 2 sous 92600 garantit qu'elles gagnent l'évaluation de chaîne face aux règles sœurs (par exemple 92603-92606 dans 0850-audit_rules.xml qui correspondent également à if_group=audit + exe=python).


Déploiement

Étape 1 - Installer auditd

root@kitploit:~
# Ubuntu / Debian / Kali
apt install auditd audispd-plugins -y
systemctl enable --now auditd
auditctl -s | grep enabled
root@kitploit:~
# RHEL / Amazon Linux
yum install audit -y
systemctl enable --now auditd
root@kitploit:~
# SUSE
zypper install audit -y
systemctl enable --now auditd

Étape 2 - Déployer les règles du capteur auditd

root@kitploit:~
cp auditd/cve-2026-31431.rules /etc/audit/rules.d/
augenrules --load
auditctl -l | grep copy_fail

Sortie attendue :

root@kitploit:~
-a always,exit -F arch=b64 -S socket -F a0=0x26 -F uid!=0 -F key=copy_fail_af_alg
-a always,exit -F arch=b32 -S socket -F a0=0x26 -F uid!=0 -F key=copy_fail_af_alg
-a always,exit -F arch=b64 -S splice -F uid!=0 -F key=copy_fail_splice
-w /usr/bin/su -p x -k copy_fail_execve_su
-w /usr/bin/kmod -p x -k copy_fail_modload

Étape 3 - Déployer les règles de détection Wazuh

Les règles sont fournies dans rules/local_rules.xml. Vous pouvez soit fusionner le contenu dans votre /var/ossec/etc/rules/local_rules.xml existant, soit le déployer comme fichier autonome :

root@kitploit:~
# Option A - fichier autonome
cp rules/local_rules.xml /var/ossec/etc/rules/cve-2026-31431_rules.xml

# Option B - ajout à local_rules.xml
cat rules/local_rules.xml >> /var/ossec/etc/rules/local_rules.xml
root@kitploit:~
# Valider la syntaxe - doit se terminer avec 0 et zéro avertissement
/var/ossec/bin/wazuh-analysisd -t 2>&1 | tail -5

# Redémarrer le gestionnaire
systemctl restart wazuh-manager

Étape 4 - Déployer la politique SCA

root@kitploit:~
cp sca/cve_2026_31431.yml /var/ossec/etc/shared/default/

Ajouter à ossec.conf dans le bloc <sca> :

root@kitploit:~
<policies>
  <policy>/var/ossec/etc/shared/default/cve_2026_31431.yml</policy>
</policies>
root@kitploit:~
systemctl restart wazuh-manager

Étape 5 - Configurer le localfile ossec.conf

Assurez-vous que Wazuh ingère le journal auditd :

root@kitploit:~
<!-- Ajouter dans <ossec_config> -->
<localfile>
  <log_format>audit</log_format>
  <location>/var/log/audit/audit.log</location>
</localfile>

Validation

Test rapide (sans exploit - appels système uniquement)

root@kitploit:~
# Créer un utilisateur de test si nécessaire
useradd -m testuser 2>/dev/null || true

# Générer le SIGNAL 1 - socket AF_ALG
su - testuser -c "python3 -c \"import socket; socket.socket(38, 5, 0); print('AF_ALG OK')\""

# Générer le SIGNAL 3 - exécution de /usr/bin/su
su - testuser -c "/usr/bin/su --help 2>/dev/null || true"

# Vérifier que auditd a capturé les événements
ausearch -k copy_fail_af_alg -ts recent 2>/dev/null | grep "key=\|exe=\|uid=" | head -5

# Vérifier que Wazuh a généré des alertes
grep -E "199600|199602" /var/ossec/logs/alerts/alerts.log | tail -10

Valider les résultats SCA

root@kitploit:~
grep -E "31431|cve_2026" /var/ossec/logs/alerts/alerts.log | tail -10

Score SCA attendu (système non atténué) : 75% (3 réussis / 1 échoué - algif_aead non mis sur liste noire)


Preuves de validation en production

Exécution du PoC - Root obtenu sur Kali (pentlab)

testuser (uid=1001) a exécuté le PoC de 732 octets et obtenu un shell root :

PoC - Root obtenu sur Kali


Règle 199604 - CHAÎNE D'EXPLOITATION DÉTECTÉE (pentlab, 80 hits)

Socket AF_ALG + splice() depuis le même processus Python - pid=46784 - ENQUÊTE IMMÉDIATE REQUISE :

Règle 199604 - pentlab 80 hits


Règle 199604 - Première validation (serveur Wazuh, pid=53447)

Règle 199604 - serveur Wazuh


Règles 199600 / 199601 / 199604 - splice() et AF_ALG déclenchés

Splice et AF_ALG - processus non root


Règle 199603 - Exécution de modprobe détectée (93 hits)

Modprobe - tentative de chargement algif_aead possible


Règle 199603 - agent pentlab (35 hits)

Pentlab - Règle 199603


Politique SCA - Score 75% (3 réussis / 1 échoué)

SCA CVE-2026-31431


Résultats Wazuh Dashboard Discover (agent=pentlab, Aujourd'hui) :

wazuh-analysisd -t : sortie 0 - zéro avertissement - les 8 règles chargées.


Remédiation

Atténuation immédiate (avant le correctif)

root@kitploit:~
rmmod algif_aead 2>/dev/null || true
echo 'install algif_aead /bin/false' > /etc/modprobe.d/disable-algif-aead.conf

Cela n'affecte pas dm-crypt/LUKS, kTLS, IPsec, OpenSSL, GnuTLS ou SSH.

Correctif permanent

Appliquez le commit du noyau a664bf3d603d via la mise à jour du noyau de votre distribution. Il annule l'optimisation sur place de 2017 dans algif_aead.c, séparant req->src (SGL TX, où splice livre les pages) de req->dst (SGL RX, tampon utilisateur). Toutes les principales distributions fournissent le correctif.

root@kitploit:~
# Ubuntu / Debian
apt update && apt upgrade linux-generic

# RHEL / Amazon Linux
dnf update kernel

# SUSE
zypper update kernel-default

Chronologie de divulgation


Comparaison avec des vulnérabilités similaires


Résumé de la politique SCA


Auteur

Kislley Rodrigues (m0us3r) Ambassadeur Wazuh | Ingénierie de détection | Équipe bleue


Remerciements

  • Taeyang Lee (Theori / Xint) pour la découverte, l'article et la divulgation coordonnée de CVE-2026-31431
  • Équipe Wazuh pour la plateforme SIEM/XDR open source et le programme d'ambassadeurs
  • Xint Research pour la profondeur technique sur https://xint.io/blog/copy-fail-linux-distributions

Règles de détection, configuration du capteur auditd et politique SCA validées sur Wazuh 4.14.4, Ubuntu 24.04.2 LTS (noyau 6.8.0-106-generic) et Kali GNU/Linux 2026.1 (noyau 6.18.12+kali-amd64).


Mise à jour 2026-05-03

SourceLien
CISA ajoute le bug d'accès root Linux activement exploité CVE-2026-31431 au KEVhttps://thehackernews.com/2026/05/cisa-adds-actively-exploited-linux-root.html


Wazuh

Ce projet a été développé dans le cadre du Programme d'ambassadeurs Wazuh.

Wazuh est une plateforme de sécurité open source gratuite qui fournit une protection unifiée XDR et SIEM. En savoir plus sur wazuh.com.

Télécharger l’outil
RessourceLien
Site officiel du CVEhttps://copy.fail/
Article technique - Xint Researchhttps://xint.io/blog/copy-fail-linux-distributions
PoC - copy_fail_exp.pyhttps://github.com/theori-io/copy-fail-CVE-2026-31431/blob/main/copy_fail_exp.py
Correctif du noyau - a664bf3d603dhttps://github.com/torvalds/linux/commit/a664bf3d603d
Commit vulnérable - 72548b093ee3https://github.com/torvalds/linux/commit/72548b093ee3
MITRE ATT&CK T1068https://attack.mitre.org/techniques/T1068/
DistributionNoyauStatut
Ubuntu 24.04 LTS6.17.0-1007-awsROOT CONFIRMÉ
Amazon Linux 20236.18.8-9.213.amzn2023ROOT CONFIRMÉ
RHEL 10.16.12.0-124.45.1.el10_1ROOT CONFIRMÉ
SUSE 166.12.0-160000.9-defaultROOT CONFIRMÉ
Kali GNU/Linux 2026.16.18.12+kali-amd64ROOT CONFIRMÉ
RègleParentSignalProfondeurNiveau
80700decoded_as=auditdAncre auditd (intégrée à Wazuh)00
9260080700Exécution de processus Python (intégrée à Wazuh)10
19960092600Socket AF_ALG - chaîne Python210
19960192600Appel système splice() - chaîne Python210
199604199601 + if_matched=199600CHAÎNE D'EXPLOITATION - Python (même pid/120s)315
19960280700Exécution de /usr/bin/su16
19960380700Exécution de modprobe/kmod112
19960580700Socket AF_ALG - non-Python110
19960680700Appel système splice() - non-Python110
199607199606 + if_matched=199605CHAÎNE D'EXPLOITATION - non-Python (même pid/120s)215
RègleHitsDescription
19960480CHAÎNE D'EXPLOITATION DÉTECTÉE - pid=46784 exe=/usr/bin/python3.13
19960040Socket AF_ALG créé par un processus non root
19960328Exécution de modprobe détectée
19960212/usr/bin/su exécuté
DateÉvénement
2026-03-23Vulnérabilité signalée à l'équipe de sécurité du noyau Linux
2026-03-24Confirmation initiale reçue
2026-03-25Correctifs proposés et examinés
2026-04-01Correctif validé dans le noyau principal (a664bf3d603d)
2026-04-22CVE-2026-31431 attribué
2026-04-29Divulgation publique - article Xint + PoC publiés
Dirty Cow (2016-5195)Dirty Pipe (2022-0847)Copy Fail (2026-31431)
Condition de courseOui - tentatives multiplesNonNon - logique déterministe
Peut faire planter le systèmeOuiNonNon
PortabilitéLimitéeSpécifique à la versionToutes les distributions 2017+
Taille de l'exploitKilooctets (C)Centaines d'octets732 octets (stdlib Python)
Détection FIMPossiblePossibleImpossible
VérificationTitreRisque
31431001algif_aead non chargé en mémoireCRITIQUE
31431002algif_aead désactivé via modprobe.dÉLEVÉ
31431003auditd actif et en cours d'exécutionÉLEVÉ
31431004Règles du capteur CVE-2026-31431 déployéesÉLEVÉ
Catalogue des vulnérabilités connues exploitéeshttps://www.cisa.gov/known-exploited-vulnerabilities-catalog
CVE-2026-31431 - crypto : algif_aead - Retour au fonctionnement hors placehttps://www.cve.org/CVERecord?id=CVE-2026-31431