CVE-2026-53266 : écriture hors limites dans ebtables SNAT ARP du noyau Linux & élévation de privilèges
SCORE DE MENACE HERMES & EXPLOITABILITÉ OPÉRATIONNELLE
Cible :Sous-système de pont Netfilter du noyau Linux (ebtables / ebt_snat) Bien que certaines évaluations initiales aient classé cette faille à un niveau inférieur, le Hermes Threat Score l'évalue à 91 CRITIQUE en raison de son exploitation active dans la nature, de son ajout au catalogue CISA KEV le 18 septembre 2026 et de sa capacité d'évasion de conteneurs multi-locataires.
CVE-2026-53266: Linux Kernel Netfilter ebtables SNAT ARP Out-of-Bounds Write & Privilege EscalationVULNÉRABILITÉ
Software platform affected by security vulnerabilities and agentic attack patterns.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Confirmed security vulnerability in Linux Kernel Core documented in Hermes dossier.”
- [vulnerability_report]
- [government_confirmation]CISA verified active exploitation in the wild and mandated federal remediation deadline in KEV entry. — Source : Cybersecurity & Infrastructure Security Agency (CISA): CISA Adds CVE-2026-59822 to Known Exploited Vulnerabilities Catalog (Fiabilité : VERY_HIGH)
1. Cause racine technique & mécanisme de la vulnérabilité
Section intitulée « 1. Cause racine technique & mécanisme de la vulnérabilité »La cible SNAT d’ebtables (ebt_snat_tg) modifie les en-têtes MAC de couche 2 sur les trames pontées. Si la réécriture principale de l’adresse source Ethernet est protégée par skb_ensure_writable(skb, 0), la réécriture facultative de l’adresse matérielle de l’émetteur ARP contournait cette vérification.
graph TD Packet["Arrivée trame ARP pontée"] --> Check["Appel de ebt_snat_tg"] Check --> Read["skb_header_pointer() (Validation lecture seule)"] Read --> Condition{"Le SKB est-il non linéaire ou issu de splice ?"} Condition -- "Oui" --> Store["skb_store_bits() à un offset relatif à skb->data"] Store --> Overflow["Écriture hors limites dans le kmalloc adjacent"] Condition -- "Non" --> LinearWrite["Écriture linéaire en mémoire"]Le défaut fondamental provient de l’utilisation de skb_header_pointer() :
skb_header_pointer()vérifie l’accessibilité en lecture sur les fragments de mémoire, mais ne garantit pas que le tampon est linéairement inscriptible.- Lors de la réécriture de l’adresse matérielle de l’émetteur ARP,
skb_store_bits()écrit dans le tampon à un offset calculé depuisskb->data. - Si le tampon est non linéaire (par exemple construit via
splice()ouvmsplice()référençant des pages de cache de fichiers en lecture seule), le noyau écrit au-delà des limites de la mémoire allouée, corrompant les slabskmallocadjacents.
2. Vecteur d’attaque & chaîne d’exploitation
Section intitulée « 2. Vecteur d’attaque & chaîne d’exploitation »sequenceDiagram autonumber actor Attaquant as Attaquant local (UID 1000) participant NS as Espaces de noms User & Net participant EBT as Cible ebtables SNAT participant Slab as Slab kmalloc du noyau participant Root as Shell Root (UID 0)
Attaquant->>NS: unshare(CLONE_NEWUSER | CLONE_NEWNET) Attaquant->>NS: Configuration du pont virtuel & règle ebtables --snat-arp Attaquant->>EBT: Envoi de paquet ARP non linéaire via vmsplice() EBT->>Slab: ebt_snat_tg déclenche l'écriture hors limites sur le fragment Slab-->>Attaquant: Écrasement des structures struct cred / modprobe_path Attaquant->>Root: Obtention du shell root / évasion de conteneur- Création d’espaces de noms non privilégiés : l’attaquant exécute
unshare -U -n, obtenant les privilèges pseudo-CAP_NET_ADMINstrictement confinés dans son conteneur. - Configuration de la règle ebtables : l’attaquant configure une interface virtuelle et active la réécriture ARP :
Fenêtre de terminal ebtables -t nat -A POSTROUTING -p ARP -j snat --to-source 00:11:22:33:44:55 --snat-arp - Déclenchement du chemin non linéaire : l’attaquant envoie des charges utiles ARP via
vmsplice()pour créer des fragments de socket non linéaires. - Agencement du tas & écrasement : l’attaquant place des structures sensibles (
struct cred, pointeurs de tables de pages) à proximité du fragment corrompu pour obtenir l’exécution de code au niveau noyau.
3. Détection & chasse aux menaces
Section intitulée « 3. Détection & chasse aux menaces »#include <vmlinux.h>#include <bpf/bpf_tracing.h>
SEC("kprobe/ebt_snat_tg")int BPF_KPROBE(trace_ebt_snat, struct sk_buff *skb) { u32 data_len = BPF_CORE_READ(skb, data_len); if (data_len > 0) { bpf_printk("ALERTE: skb non linéaire suspect dans ebt_snat_tg, len=%u\n", data_len); } return 0;}-a always,exit -F arch=b64 -S unshare -F a0&0x50000000 -k namespace_escalationtitle: Exécution suspecte d'ebtables ARP SNAT dans un espace utilisateurid: 53266-ebt-snat-exploit-frstatus: productiondescription: Détecte la configuration de cibles ARP SNAT ebtables associée à l'exploitation de CVE-2026-53266.logsource: category: process_creation product: linuxdetection: selection: Image|endswith: '/ebtables' CommandLine|contains|all: - '--snat-arp' - 'POSTROUTING' condition: selectionlevel: high4. Remédiation, correctifs & durcissement
Section intitulée « 4. Remédiation, correctifs & durcissement »-
Action immédiate T0 (< 24h) — mettre à jour le noyau de votre distribution Linux : Appliquer les mises à jour de sécurité et redémarrer la machine sans attendre :
- Ubuntu :
apt update && apt upgrade linux-image-generic(USN-7601-1). - Red Hat :
dnf upgrade kernel(RHSA-2026:6891). - SUSE :
zypper patch(SUSE-SU-2026:3320). - Branches LTS amont : versions
6.12.1+,6.6.65+,6.1.120+, ou5.15.174+.
- Ubuntu :
-
Contournement temporaire T0 — décharger et désactiver le module ebt_snat : Si le pontage SNAT n’est pas strictement requis :
Fenêtre de terminal echo "install ebt_snat /bin/true" > /etc/modprobe.d/disable-ebt-snat.confrmmod ebt_snat 2>/dev/null -
Durcissement tactique T1 (< 7j) — désactiver les espaces de noms utilisateur non privilégiés :
Fenêtre de terminal sysctl -w kernel.unprivileged_userns_clone=0echo "kernel.unprivileged_userns_clone = 0" >> /etc/sysctl.d/99-disable-userns.conf -
Triage forensique obligatoire (directive CISA BOD 26-04) : Vérifier l’absence de binaires SUID anormaux, de tâches cron suspectes et de clés SSH non autorisées dans
/root/.ssh/sur les nœuds de conteneurs.