EN
en direct
Linux Élevée CVSS 7.8

Quatre exploits publics transforment un compte Linux ordinaire en root, via des bugs vieux de 21 ans

Le 18 septembre 2026, le chercheur Asim Manizada publie des exploits fonctionnels pour quatre failles du noyau Linux — DirtyAH6, TUNderflow, PPPoEject et DiagSpill — qui donnent root à tout utilisateur local. Les correctifs existent depuis plusieurs semaines, alors vérifiez la version de votre noyau et restreignez les user namespaces non privilégiés sans attendre.

Une cage d’escalier de secours en béton plongée dans la pénombre, une seule marche éclairée en ambre comme unique degré allumé sur la montée.

18 septembre 2026, 6 h UTC. Le chercheur Asim Viladi Oglu Manizada publie quatre exploits fonctionnels pour le noyau Linux, chacun transformant un compte local ordinaire en root. Mi-juillet 2026. Il avait signalé les quatre failles à l’équipe sécurité du noyau, qui les a corrigées en divulgation coordonnée. Septembre 2026. Les bugs exploités ont entre 10 et 21 ans. Pourquoi c’est important : les correctifs existent déjà dans les branches stables, mais la publication des exploits change le calcul — le code qui était une démonstration théorique devient un outil prêt à l’emploi pour quiconque a déjà un pied sur la machine.

Quatre failles, quatre chemins vers root

Le quatuor porte des noms de baptême — DirtyAH6, TUNderflow, PPPoEject, DiagSpill — et chacun cible un composant réseau ancien du noyau. Leur point commun est plus intéressant que leurs différences : trois d’entre elles exigent des user namespaces non privilégiés, la fonctionnalité qui permet à un utilisateur sans droits d’obtenir un semblant de root dans un conteneur isolé, et qui est devenue le vecteur d’escalade privilégié de ces dernières années.

DirtyAH6 (CVE-2026-80844) frappe le traitement de l’en-tête d’authentification IPv6 dans le code IPsec/XFRM. Lorsque le noyau manipule un en-tête de routage IPv6 malformé sans valider correctement le champ segments_left, un pointeur interne peut sortir de la zone mémoire prévue et déclencher une opération hors limites. C’est d’abord une escalade de privilèges locale, mais un système qui fait office de routeur IPv6 et utilise AH en mode transport peut subir un déni de service distant dans des conditions étroites.

TUNderflow (CVE-2026-81000) réside dans le sous-système des périphériques virtuels TUN/TAP. Un utilisateur local malveillant peut passer des valeurs de receive-headroom surdimensionnées via certaines configurations de périphérique réseau — y compris les chemins Open vSwitch — et provoquer un dépassement d’entier lors de l’allocation du tampon de socket, plaçant les données du paquet hors de leur zone mémoire et ouvrant des lectures et écritures hors limites.

PPPoEject (CVE-2026-68121) est un use-after-free dans l’implémentation PPP over Ethernet du noyau. La fonction pppoe_sendmsg() conserve un pointeur vers un en-tête PPPoE pendant qu’elle appelle une fonction de niveau inférieur qui peut réallouer le tampon de socket et invalider ce pointeur. Les écritures suivantes, à travers le pointeur périmé, peuvent corrompre de la mémoire noyau déjà libérée.

DiagSpill (CVE-2026-74469) est la plus remarquable des quatre, car elle n’exige ni user namespaces non privilégiés, ni capacités spéciales dès lors que SCTP et sctp_diag sont disponibles. Une association SCTP peut contenir jusqu’à 65 536 transports pairs, alors que le compteur associé ne tient que sur 16 bits. Quand le compte atteint la limite, il revient à zéro, et le code de diagnostic réserve une place insuffisante avant de copier les informations des pairs — l’écrasement qui en résulte déborde largement du tampon de réponse Netlink.

Pourquoi les user namespaces sont le vrai dénominateur commun

Le signal le plus important de cette publication n’est pas la liste des composants — IPv6, TUN/TAP, PPPoE, SCTP — mais la dépendance de trois exploits sur quatre aux user namespaces non privilégiés. Cette fonctionnalité, conçue pour isoler des conteneurs sans privilèges, est devenue la passerelle standard entre « compte utilisateur lambda » et « contrôle du noyau ».

La mécanique est simple à comprendre. Un user namespace non privilégié permet à un utilisateur sans droit de créer un environnement dans lequel il est UID 0, avec des capacités root — mais limitées à ce namespace. Les failles du noyau deviennent alors exploitables depuis ce faux root local, qui ne demande aucun accès privilégié réel. C’est exactement ce que font DirtyAH6, TUNderflow et PPPoEject : elles s’appuient sur la capacité de créer ou de contrôler des namespaces réseau adaptés.

DiagSpill brise ce schéma. Elle ne dépend pas des user namespaces, ce qui signifie que désactiver les user namespaces non privilégiés ne la neutralise pas. C’est la nuance qui compte pour les défenseurs : le réflexe classique « coupe kernel.unprivileged_userns_clone et dors tranquille » ne couvre qu’une partie du quatuor.

Le correctif existe déjà, le risque est ailleurs

Les quatre failles sont déjà corrigées dans les branches stables. Les premières versions à contenir l’ensemble des correctifs sont Linux 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50 et 7.2.4. La publication des exploits ne révèle donc pas une faille zero-day : elle abaisse le coût d’exploitation pour les systèmes qui n’ont pas encore été mis à jour.

C’est précisément là que le risque se concentre. Un serveur qui exécute encore un noyau de la série 6.1 ou 6.6 non patché — souvent par inertie, parce que le redémarrage est coûteux ou planifié au trimestre — devient une cible dont l’exploitation est déjà écrite et publique. La distance entre « faille corrigée en amont » et « machine effectivement protégée » se mesure en semaines de retard de mise à jour, pas en absence de correctif.

Le vecteur d’attaque est aussi celui qui rend l’escalade la plus dangereuse : l’accès local. Un attaquant qui a obtenu un compte utilisateur — par un phishing, un service web compromis, une fuite de mots de passe — dispose désormais de quatre chemins documentés vers root. Dans un datacenter ou un cloud multi-tenant, c’est la différence entre « un utilisateur de plus est compromis » et « toute la machine est à l’attaquant ».

Ce qu’il faut faire, dans l’ordre

Trois actions suffisent, et elles sont cumulatives plutôt qu’alternatives.

Mettre à jour le noyau. C’est la seule mesure qui couvre les quatre failles, DiagSpill comprise. Vérifiez votre version avec uname -r et comparez-la aux branches corrigées. Pour la plupart des distributions, une mise à jour de sécurité est déjà disponible dans les dépôts officiels.

Restreindre les user namespaces non privilégiés. Sur les systèmes où la mise à jour n’est pas immédiate, désactiver kernel.unprivileged_userns_clone (ou équivalent selon la distribution) neutralise DirtyAH6, TUNderflow et PPPoEject. Attention : cela casse certains conteneurs non privilégiés, et ne protège pas contre DiagSpill.

Désactiver les composants inutilisés. AH6, TUN/TAP, PPPoE et SCTP/sctp_diag sont souvent présents par défaut sans être utilisés. Les retirer ou les désactiver réduit la surface d’attaque, mais — comme pour les user namespaces — ce n’est pas un substitut à la mise à jour du noyau.

bash
uname -r
# comparer avec les branches corrigées : 5.10.270, 5.15.221, 6.1.188,
# 6.6.157, 6.12.109, 6.18.50, 7.2.4
sysctl kernel.unprivileged_userns_clone=0   # neutralise 3 exploits sur 4

Verdict

Si vous gérez des serveurs ou des machines multi-utilisateurs, traitez cette publication comme une échéance de patch, pas comme une curiosité de chercheur : les correctifs existent depuis des semaines, et le code d’exploitation est désormais public. Si votre parc tourne encore sur des noyaux 6.1 ou 6.6 non mis à jour, montez la mise à jour en tête de file — le redémarrage coûte moins cher qu’un root offert à un attaquant qui a déjà un compte. Si vous ne pouvez pas patcher aujourd’hui, coupez les user namespaces non privilégiés et désactivez les composants réseau inutilisés, en gardant en tête que DiagSpill exige le correctif complet. La leçon de ce quatuor est limpide : dans un noyau vieux de plusieurs décennies, le code réseau hérité est un gisement d’escalades qui attend que quelqu’un le documente — la seule défense durable, c’est la fraîcheur de la version que vous exécutez.

Références

cve

Vulnérabilités liées

CVE-2026-81000In the Linux kernel, the following vulnerability has been resolved: net: tun: bound receive headroom tun_get_user() uses tun->align both as skb headroom and when choosing how much packet data to keep linear. OVS can propagate an oversized headroom request from another port to TUN or TAP. When align is larger than the usable space in a one-page skb head, SKB_MAX_HEAD(align) underflows and the result becomes negative when stored in good_linear. That value later wraps when assigned to the size_t linear variable, and tun_alloc_skb() can place skb->data outside the allocated head. Bound the headroom stored by TUN to the one-page skb-head budget and the largest non-sentinel 16-bit skb header offset. Leave one linear byte for raw TUN and a complete Ethernet header for TAP, including NET_IP_ALIGN. Also pull the raw-TUN protocol byte and the TAP Ethernet header before accessing them, so these checks remain safe for nonlinear skbs supplied by other allocation paths. Élevée CVSS 7.8 11/09 CVE-2026-74469In the Linux kernel, the following vulnerability has been resolved: sctp: prevent peer transport count overflow sctp_assoc_add_peer() increments the association's 16-bit transport_count for every new unique peer. Adding the 65,536th transport wraps the count to zero. SCTP sock_diag uses transport_count to reserve the INET_DIAG_PEERS payload, then copies one sockaddr_storage for every entry in transport_addr_list. After the wrap, a diagnostic dump reserves an empty payload and writes 8 MiB of peer addresses past the skb tail. Reject a new unique peer when transport_count has reached U16_MAX. Perform the check after the existing-peer lookup so a duplicate address continues to return its existing transport at the limit. Élevée CVSS 8.8 15/08 CVE-2026-68121In the Linux kernel, the following vulnerability has been resolved: pppoe: reload header pointer after dev_hard_header() pppoe_sendmsg() saves a pointer to the PPPoE header before calling dev_hard_header(). Device header callbacks are allowed to reallocate the skb head, invalidating pointers into it. This can happen when a send is blocked in copy_from_user() while the first non-Ethernet port is added to an empty team device. The team's delegated GRE header callback then expands the skb head. PPPoE subsequently writes six bytes through the stale pointer into the freed head. Reload the PPPoE header through the skb's network-header offset after device header creation. pskb_expand_head() updates that offset when it relocates the head. Élevée CVSS 7.8 10/08

Le brief cyber, chaque mardi

Les failles qui comptent, les correctifs à appliquer, en dix minutes de lecture.

Pas de spam. Désinscription en un clic.
à lire ensuite

Sur le même sujet

Linux 7.4 accélère jusqu’à 81 % l’ajout de mémoire à chaud sur les VM et le CXL

Une série de correctifs signée Yuan Liu (Intel), en file dans mm/core.git pour la fenêtre de fusion de Linux 7.4, remplace le balayage page par page des zones par une vérification de contiguïté optimisée. Mesuré : jusqu’à 81 % de réduction du temps d’ajout de mémoire à chaud sur une VM et 75 % sur le retrait, avec des gains aussi constatés par Samsung sur CXL.

← Retour au fil

Tapez au moins deux caractères.

↑ ↓ naviguer ↵ ouvrir esc fermer