
Dépôt de recherche pour CVE-2026-80844 (DirtyAH6), une élévation de privilèges locale dans le noyau Linux via IPv6 AH6/XFRM, avec PoC, analyse de la cause racine et du correctif.
DirtyAH6
CVE-2026-80844 est une vulnérabilité du noyau Linux affectant le sous-système IPv6 Authentication Header (AH6) / XFRM.
La vulnérabilité est causée par une validation insuffisante du champ
segments_left de l'en-tête de routage IPv6, pouvant entraîner une opération
mémoire hors limites et une corruption de la mémoire du noyau.
Ce dépôt est destiné uniquement à la recherche en sécurité autorisée, l'analyse de vulnérabilités, les CTF et les tests défensifs.
N'utilisez pas cette recherche contre des systèmes que vous ne possédez pas ou pour lesquels vous ne disposez pas d'une autorisation explicite de test.
| Champ | Détails |
|---|---|
| CVE | CVE-2026-80844 |
| Nom de code | DirtyAH6 |
| Composant | Noyau Linux |
| Sous-système | IPv6 / XFRM / AH6 |
| Type de vulnérabilité | Élévation de privilèges locale |
| Vecteur d'attaque | Local |
| Complexité d'attaque | Faible |
| Privilèges requis | Faibles |
| Interaction utilisateur | Aucune |
| CVSS v3.1 | 7.8 — Élevé |
| Code affecté | net/ipv6/ah6.c |
| Statut | Corrigé |
La vulnérabilité existe dans le chemin de traitement IPv6 AH6.
Le code affecté effectue une manipulation de l'en-tête de routage via :
net/ipv6/ah6.c
Plus précisément, la logique vulnérable implique :
ipv6_rearrange_rthdr()
La fonction n'a pas réussi à valider adéquatement la relation entre :
hdrlen
et :
segments_left
Un attaquant capable de fournir un paquet IPv6 spécialement conçu peut donc amener le noyau à opérer sur de la mémoire en dehors des limites attendues de l'en-tête de routage.
Cela peut entraîner :
Malformed IPv6 packet
│
▼
AH6 / XFRM processing
│
▼
Invalid routing-header state
│
▼
Out-of-bounds memory operation
│
▼
Kernel memory corruption
│
▼
Potential privilege escalation
Le problème fondamental est une validation insuffisante de la valeur segments_left de l'en-tête de routage IPv6.
Conceptuellement, la condition vulnérable peut être représentée comme suit :
segments_left > available routing-header addresses
Le noyau doit s'assurer que le nombre de segments demandé par l'en-tête de routage est cohérent avec la longueur réelle de l'en-tête avant de manipuler les données d'adresse associées.
Sans cette validation, les opérations mémoire ultérieures peuvent s'effectuer au-delà des limites valides du tampon.
Une exploitation réussie peut permettre à un attaquant disposant des capacités et de l'environnement locaux requis de corrompre la mémoire du noyau.
Les conséquences potentielles incluent :
L'exploitabilité exacte dépend de la configuration du noyau, des espaces de noms et capacités disponibles, ainsi que d'autres conditions environnementales.
net/ipv6/ah6.c
Traitement pertinent :
AH6
└── IPv6 Routing Header
└── ipv6_rearrange_rthdr()
Le scénario problématique implique des métadonnées d'en-tête de routage incohérentes.
Par exemple, conceptuellement :
hdrlen → describes a limited number of addresses
segments_left → claims more addresses than are available
Cette incohérence doit être rejetée avant que le noyau n'effectue le réarrangement d'adresses.
Le correctif amont introduit une validation de la valeur segments_left
de l'en-tête de routage avant que le noyau n'effectue l'opération
vulnérable.
Le commit amont associé est :
7bad4bda74dc4713f398d3b7624ff05478e3a568
xfrm: ah6: validate routing header segments_left
La correction de sécurité peut être résumée ainsi :
Before:
Trust segments_left
↓
Rearrange addresses
↓
Potential OOB access
After:
Validate segments_left
↓
Reject malformed header
↓
Safe AH6 processing
Les versions affectées dépendent de l'historique des rétroportages en amont et chez le fournisseur.
Les utilisateurs doivent vérifier l'avis de sécurité de leur distribution plutôt que de se fier uniquement au numéro de version en amont.
Voici des exemples de versions stables en amont corrigées :
| Branche du noyau | Version corrigée |
|---|---|
| 5.10 | 5.10.270 |
| 5.15 | 5.15.221 |
| 6.1 | 6.1.188 |
| 6.6 | 6.6.157 |
| 6.12 | 6.12.109 |
| 6.18 | 6.18.50 |
| 7.2 | 7.2.4 |
Vérifiez le noyau en cours d'exécution :
uname -a
ou :
uname -r
Vérifier les informations détaillées du noyau :
cat /proc/version
Pour les systèmes basés sur Debian/Kali :
apt-cache policy linux-image-amd64
Pour les systèmes basés sur RPM :
rpm -q kernel
Les noyaux des distributions rétroportent fréquemment des correctifs de sécurité sans modifier la version amont de manière évidente. Consultez toujours l'avis/le journal des modifications du fournisseur.
L'atténuation principale consiste à mettre à niveau vers un noyau contenant le correctif de sécurité.
Debian/Kali :
sudo apt update
sudo apt full-upgrade
Puis redémarrez :
sudo reboot
Vérifier :
uname -r
Pour les systèmes de production, consultez l'avis de sécurité officiel de la distribution Linux avant d'appliquer des mises à jour du noyau.
Environnement isolé recommandé :
Host
│
├── Kali Linux
│
└── Vulnerable Linux VM
│
├── Debug kernel
├── IPv6 enabled
├── AH6/XFRM support
└── Kernel symbols
Outils de débogage utiles :
gdb
gef
pwndbg
crash
dmesg
pahole
objdump
readelf
Débogage du noyau :
sudo dmesg -w
Inspecter les symboles du noyau :
cat /proc/kallsyms