
Une implémentation en Go de fragnesia (CVE-2026-46300)
Un SA. Un octet à la fois. Aucune course.
Portage Go de fragnesia (CVE-2026-46300). Membre de la classe de vulnérabilités Dirty Frag - bug distinct, même surface, correctif propre.
Le bug se situe dans le sous-système Linux XFRM ESP-in-TCP. Lorsque TCP_ULP espintcp est installé sur un socket après que des données ont déjà été splice()ées d'un fichier dans la file de réception TCP, le noyau traite les données en file comme un enregistrement de chiffré ESP et les déchiffre en place. La source de ces données est une page du cache de pages. Le déchiffrement XORe le flux de clé AES-GCM directement dans cette page.
Le résultat est une écriture contrôlée d'un seul octet dans le cache de pages de n'importe quel fichier lisible.
Table du flux de clé
Le bloc de compteur AES-GCM (RFC 4106) en position 2 est [salt(4) || IV(8) || 0x00000002]. Son chiffrement sous la clé de session donne un bloc de flux de clé de 16 octets. L'octet 0 de ce bloc est celui qui est XORé dans l'octet cible. En faisant varier les 32 bits de poids faible du nonce IV, toutes les 256 valeurs possibles d'octet de flux de clé sont atteignables parmi les 65536 premiers nonces. L'exploit construit cette table de correspondance une fois au démarrage via AF_ALG AES-ECB.
Boucle de bascule d'octets
Pour chaque octet de la charge utile :
flux_necessaire = actuel XOR desire.splice() la page du fichier dans le socket, le récepteur retarde l'installation de TCP_ULP jusqu'à ce que les données soient en file).actuel XOR flux = actuel XOR (actuel XOR desire) = desire.Un SA. 192 déclencheurs maximum. Déterministe.
go build -o fragnesia-go .
./fragnesia-go
En cas de succès, il ouvre un shell root via un nouveau PTY. Le binaire sur disque n'est pas modifié - cache de pages uniquement.
echo 1 | tee /proc/sys/vm/drop_caches
esp6 (mode transport, bouclage IPv6)Tous les noyaux antérieurs au correctif : https://lists.openwall.net/netdev/2026/05/13/79
Même plage que dirtyfrag.
Identique à dirtyfrag :
rmmod esp4 esp6
printf 'install esp4 /bin/false\ninstall esp6 /bin/false\n' \
> /etc/modprobe.d/fragnesia.conf
| dirtyfrag-go | fragnesia-go |
|---|
| CVE | CVE-2026-43284 / CVE-2026-43500 | CVE-2026-46300 |
| Transport | ESP-in-UDP + RxRPC | ESP-in-TCP (ULP) |
| Granularité d'écriture | 4 octets par déclencheur | 1 octet par déclencheur |
| SA XFRM | 48 | 1 |
| Cryptographie | HMAC-SHA256 + CBC-AES | AES-128-GCM |
| Famille IP | IPv4 | IPv6 |