🔍 Contexte
Publié le 8 mai 2026 sur GitHub par le chercheur Hyunwoo Kim (@v4bel), ce write-up technique détaille Dirty Frag, une classe de vulnérabilités Linux permettant d’obtenir les privilèges root sur la majorité des distributions Linux en chaînant deux primitives d’écriture arbitraire en page cache.
🧩 Vulnérabilités impliquées
Dirty Frag repose sur deux vulnérabilités distinctes :
-
CVE-2026-43284 — xfrm-ESP Page-Cache Write : Dans
esp_input(), lorsqu’un skb non-linéaire sansfrag_listest traité, le code contourneskb_cow_data()et effectue un déchiffrement AEAD en place directement sur la page cache. Viasplice(), un attaquant peut planter une page cache en lecture seule dans le frag du skb. La fonctioncrypto_authenc_esn_decrypt()effectue un STORE de 4 octets contrôlés (viaseq_hide l’attributXFRMA_REPLAY_ESN_VAL) à un offset de fichier choisi. L’authentification AEAD échoue mais le STORE est déjà persisté. NécessiteCAP_NET_ADMIN(user namespace suffisant). -
CVE-2026-43500 — RxRPC Page-Cache Write : Dans
rxkad_verify_packet_1(), un déchiffrementpcbc(fcrypt)en place sur 8 octets est effectué directement sur la page cache viaskb_to_sgvec(). La valeur STOREée estfcrypt_decrypt(C, K)où K est la session_key d’un token RxRPC enregistré sans privilège viaadd_key(). Ne nécessite aucun privilège (pas de user namespace).
💥 Exploitation
Variante ESP :
- Cible :
/usr/bin/su(setuid-root) - 192 octets d’un ELF root-shell statique sont écrits en 48 chunks de 4 octets via 48 SA XFRM distincts
- Utilise
unshare(CLONE_NEWUSER | CLONE_NEWNET)pour obtenirCAP_NET_ADMIN - Chaque trigger :
vmsplice+splice+ envoi UDP encapsulé ESP - Résultat :
execve("/usr/bin/su")exécute directement un shell root
Variante RxRPC :
- Cible :
/etc/passwdligne 1 (entrée root) - Objectif : transformer
root:x:0:0:...enroot::0:0:GGGGGG:...(champ passwd vide) - Brute-force en espace utilisateur de clés K_A/K_B/K_C (~18M/s, ~5ms à ~1s)
- Trois STOREs de 8 octets aux offsets 4, 6, 8 avec correction de ciphertext chaîné
- Résultat : PAM
nullokaccepte le mot de passe vide → shell root via/usr/bin/su
🔗 Chaînage
Les deux variantes se complètent :
- ESP : disponible sur la plupart des distros mais bloqué sur Ubuntu (AppArmor + user namespace)
- RxRPC : ne nécessite pas de user namespace mais
rxrpc.koabsent sur RHEL, présent sur Ubuntu - Un binaire unique tente ESP en premier, puis bascule sur RxRPC en cas d’échec
🛠️ Correctifs
- ESP (CVE-2026-43284) : Ajout du flag
SKBFL_SHARED_FRAGsur les frags issus desplice; vérification deskb_has_shared_frag()dansesp_input/esp6_input. Mergé dans mainline le 2026-05-08. - RxRPC (CVE-2026-43500) : Ajout de
|| skb->data_lendans la condition deskb_cloned()pour forcerskb_copy()sur les skbs non-linéaires. Patch soumis, non encore mergé upstream.
📅 Chronologie de divulgation
- 2026-04-29/30 : Soumission à
security@kernel.orget patches publiés - 2026-05-07 : Embargo rompu par un tiers non identifié → divulgation complète
- 2026-05-08 : CVE-2026-43284 et CVE-2026-43500 assignés ; patch ESP mergé dans mainline
📄 Type d’article : Analyse technique et rapport de vulnérabilité détaillé publié par le découvreur, incluant root cause analysis, code d’exploitation et patches correctifs.
🧠 TTPs et IOCs détectés
TTP
- T1068 — Exploitation for Privilege Escalation (Privilege Escalation)
- T1203 — Exploitation for Client Execution (Execution)
- T1548 — Abuse Elevation Control Mechanism (Privilege Escalation)
- T1222.002 — File and Directory Permissions Modification: Linux and Mac File and Directory Permissions Modification (Defense Evasion)
- T1565.001 — Data Manipulation: Stored Data Manipulation (Impact)
🟡 Indice de vérification factuelle : 50/100 (moyenne)
- ⬜ github.com — source non référencée (0pts)
- ✅ 29524 chars — texte complet (fulltext extrait) (15pts)
- ✅ 8 IOCs (IPs/domaines/CVEs) (10pts)
- ⬜ 0/1 IOCs confirmés externellement (0pts)
- ✅ 5 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ 0/2 CVE(s) confirmée(s) (0pts)
🔗 Source originale : https://github.com/V4bel/dirtyfrag/blob/master/assets/write-up.md