Failles critiques CVE-2026-87902 + xss2shellTester mon site
LinuxKVMVirtualisationCVEVulnérabilitéÉvasion de VM

PwnEscape (CVE-2026-99999) : la faille du noyau Linux qui fait sortir une VM de son hôte KVM

CVE-2026-99999, alias PwnEscape : une faille de la pile IPv4 du noyau Linux, présente depuis 2008, permet à une machine virtuelle de lire la mémoire de son hôte KVM, de le faire tomber et, en laboratoire, d'y exécuter du code. Qui est concerné, noyaux corrigés, mesures d'attente et plan de remédiation.

par 20 min de lecture
PwnEscape (CVE-2026-99999) : la faille du noyau Linux qui fait sortir une VM de son hôte KVM

Pourquoi CVE-2026-99999 concerne tous ceux qui font tourner des VM sur Linux

Le 15 octobre 2026, l'équipe CVE du noyau Linux a publié CVE-2026-99999, notée 9,3 sur 10 en CVSS 3.1. Le même jour, sept noyaux stables corrigés sortaient, et l'équipe de recherche de pwn.ai mettait en ligne la description de la faille sous le nom de PwnEscape. Le résumé tient en une phrase qui fait lever un sourcil à quiconque exploite un hyperviseur : une machine virtuelle invitée peut, en envoyant des paquets réseau façonnés, lire la mémoire du noyau de l'hôte, le faire tomber, et, dans les conditions d'un laboratoire, y exécuter du code en root.

« Évasion de VM » fait partie de ces expressions qu'on lit dans les présentations de conférence et qu'on croise rarement sur sa propre infrastructure. Ici, le terrain est le plus banal qui soit : un hôte Linux, KVM, une carte réseau virtio-net. Pas d'hyperviseur exotique, pas de pilote de niche. Le code concerné date de 2008 (Linux 2.6.27) et il vit dans tous les noyaux qu'on exploite aujourd'hui, du 4.x des distributions d'entreprise au 7.x tout frais. Dix-huit ans, donc, pendant lesquels un hébergeur, un cloud privé ou une plateforme de bac à sable a pu faire tourner des invités non fiables au-dessus de ce chemin.

Il faut tout de suite poser ce que la faille n'est pas : elle n'est pas exploitable à distance. Il faut être dans un invité, ou plus rarement être un utilisateur local sans privilège sur l'hôte, pour la déclencher. Le modèle de menace est celui du locataire hostile : un client qui loue une VM chez vous, un pipeline d'intégration continue qui exécute du code tiers, un agent IA qu'on enferme dans un micro-VM pour le laisser travailler. C'est exactement l'usage pour lequel on avait choisi la virtualisation comme frontière de sécurité.

Cet article démonte le mécanisme, délimite ce qui est démontré et ce qui ne l'est pas, dresse l'état des correctifs distribution par distribution, et détaille le plan de remédiation, mesures d'attente comprises.

Les faits, tels que les sources primaires les posent

ÉlémentValeur
IdentifiantCVE-2026-99999, publiée le 15 octobre 2026 par le CNA du noyau Linux
NomPwnEscape (donné par les découvreurs, PWNAI Research)
ComposantPile IPv4 du noyau, skb_checksum_help() appelée pendant la fragmentation (net/ipv4/ip_output.c), alimentée par les métadonnées virtio-net
ClasseÉcriture hors limites (CWE-787), menant à une divulgation de mémoire
CVSS 3.19,3 (critique) pour le CNA et la NVD, vecteur AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H ; 8,8 (important) chez Red Hat et SUSE, qui retiennent PR:L
IntroduiteLinux 2.6.27 (2008), commits f43798c27684 et bfd5f4a3d605
CorrigéeCommit 6785011f8b16 « ipv4: validate checksum_start before completing checksum », mainline 7.3-rc7 ; stables 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.57 et 7.2.11
PréconditionÊtre un invité KVM (virtio-net via TAP ou vhost-net), ou un utilisateur local pouvant ouvrir un périphérique tun ; pas exploitable à distance
DémontréFuite de mémoire hôte sur les bacs à sable de production de Vercel ; crash et exécution en root sur des hôtes KVM et Firecracker du chercheur
ExploitationAucun exploit public, aucune exploitation observée dans la nature, absente du catalogue KEV de la CISA au 19 octobre 2026 (EPSS ≈ 0 %)

Deux remarques sur ce tableau. D'abord le désaccord sur le score : le CNA considère qu'aucun privilège n'est requis (PR:N), Red Hat et SUSE estiment qu'il en faut un (PR:L), celui d'émettre des paquets depuis l'invité. L'écart ne change rien à la décision : dans les deux cas le vecteur est local, la portée déborde le composant (S:C, on sort de la VM) et les trois impacts sont au maximum. Ensuite, la fiche Red Hat mentionne un suivi interne de type « KEV » ; nous avons relu le catalogue de la CISA le 19 octobre, la faille n'y figure pas. On retient donc, à cette date, une vulnérabilité critique mais non exploitée publiquement, soit la fenêtre où corriger coûte le moins cher.

Au cœur du bug : deux parties du noyau qui ne lisent pas le même paquet

Pour comprendre PwnEscape, il faut accepter une idée un peu contre-intuitive : le problème n'est ni dans KVM, ni dans virtio, ni dans la fragmentation IP prise isolément. Il est dans le fait que ces morceaux ne regardent pas la même version du paquet. Les chercheurs parlent d'une « inversion de confiance sur des métadonnées différées ». Voici l'idée, au niveau où les sources publiques la décrivent.

Quand une VM émet un paquet par une carte virtio-net, elle joint un petit en-tête d'indications de déchargement (offload). L'une d'elles revient à dire : « je n'ai pas calculé la somme de contrôle, fais-le pour moi, elle commence à tel endroit et le résultat s'écrit à tel autre ». C'est une optimisation légitime, utilisée partout. L'hôte accepte ces indications, marque le paquet comme à compléter, et remet le calcul à plus tard.

Le contrôle d'entrée existait, mais il était trop lâche : il situait le début de la somme par rapport au début du tampon, sans tenir compte de l'en-tête de liaison qui le précède, et sans vérifier que ce point tombe bien après l'en-tête IPv4. C'est toute la faille : une donnée que l'invité contrôle, insuffisamment bornée, qui désigne un emplacement situé à l'intérieur d'un en-tête que le reste de la pile considère, lui, comme sûr et déjà validé.

Le paquet traverse alors toute la pile IPv4 de l'hôte, qui lit un en-tête de taille normale et lui fait confiance pour le routage et les règles de filtrage. Ce n'est qu'au moment de la fragmentation, en sortie, que le calcul différé s'exécute et vient écrire au point désigné par l'invité, à l'intérieur de l'en-tête. Le champ qui annonce la longueur de l'en-tête change de valeur. L'hôte recopie alors, dans chaque fragment, bien plus d'octets qu'il n'y a de données réelles, et ces octets supplémentaires sont de la mémoire du noyau hôte, renvoyée à l'invité sous l'apparence d'options IP.

C'est le cœur de PwnEscape, et c'est suffisant pour comprendre la portée sans en faire un tutoriel. La suite, le passage de cette fuite à une écriture contrôlée puis à l'exécution de code, repose sur des techniques de façonnage du tas que les chercheurs ont volontairement gardées privées pour une seconde publication. Nous faisons de même : il n'y a pas, dans cet article, de charge prête à l'emploi.

De la fuite au contrôle de l'hôte : ce qui est prouvé, ce qui ne l'est pas

Comme pour toute faille à fort retentissement, la gravité réelle se joue dans la distinction entre ce qui est démontré et ce qui reste conditionnel. PwnEscape se lit sur trois marches, de plus en plus difficiles.

Kill chain

Les trois marches de PwnEscape

Phase 1Divulgation de mémoire hôte (certaine)
  1. 1

    Invité hostile

    une VM non fiable émet des paquets façonnés par sa carte virtio-net.

  2. 2

    Fuite répétable

    chaque fragment rapporte une trentaine d'octets du noyau hôte, et la fuite se rejoue tant que l'invité émet.

Phase 2Crash de l'hôte (démontré en laboratoire)
  1. 3

    Déni de service

    les mêmes paquets peuvent faire tomber l'hôte, donc toutes les VM qu'il héberge.

Phase 3Exécution de code en root (laboratoire seulement)
  1. 4

    Façonnage du tas

    technique non publiée, reproduite uniquement sur des hôtes du chercheur.

  2. Shell root sur l'hôte

    obtenu sur quatre démarrages à froid, jamais sur une infrastructure de production tierce.

La divulgation de mémoire est solidement établie, y compris en production. Le crash de l'hôte l'est sur des machines de test. L'exécution de code en root n'a été reproduite qu'en laboratoire, sur des hôtes montés par le chercheur pour ressembler à la cible, et la chaîne qui y mène n'est pas publique.

Cette hiérarchie n'est pas un détail de communication, elle commande la réponse. La fuite est le fait avéré et le plus immédiat : Vercel confirme l'avoir constatée contre ses propres bacs à sable de production, sans toutefois qu'aucune donnée client, secret ou fichier n'ait été exposé selon son analyse. Le crash est une menace de disponibilité sérieuse pour un hôte mutualisé. L'exécution de code, elle, reste à ce jour une démonstration de laboratoire. Le chercheur prévient cependant qu'il s'attend à voir des exploits viser des configurations faibles « en quelques semaines » et des configurations par défaut « en un mois ». C'est une prévision, pas un constat, mais elle fixe l'horizon de la remédiation.

Suis-je concerné ? Le périmètre, sans jargon

La bonne question n'est pas « quelle version de noyau », c'est « est-ce que des invités non fiables partagent mon hôte ». Trois cas.

  • Vous hébergez des VM que vous ne contrôlez pas (clients d'un VPS, bac à sable, exécuteurs CI éphémères, agents IA en micro-VM) : vous êtes en première ligne. Le chemin virtio-net via TAP ou vhost-net est le vecteur principal, et il est actif par défaut.
  • Vous exploitez un utilisateur local hostile sur une machine partagée : des chemins locaux existent, via les espaces de noms utilisateur non privilégiés qui permettent d'ouvrir certains périphériques réseau. Ils sont jugés « plausibles d'après le code » mais n'ont pas tous été confirmés. Sur les distributions dérivées de Red Hat 8 et plus, ces espaces de noms sont activés par défaut.
  • Vous ne faites tourner que vos propres charges, sans virtualisation imbriquée ni locataire tiers : votre exposition est marginale. Un paquet venu du réseau ne peut pas, seul, fabriquer ces métadonnées. Corrigez tout de même, dans le cycle normal.

Un mot sur le cloud public, parce que la question revient aussitôt. AWS a publié le bulletin 2026-137 le 15 octobre 2026 : les services gérés (EC2, Lambda, Fargate) ne sont pas concernés, aucune action n'est requise pour eux. Le cas visé est celui du client qui gère lui-même des VM avec KVM et virtio-net, par exemple avec de la virtualisation imbriquée sur une instance, sur une instance bare-metal, ou derrière un gestionnaire comme Firecracker. AWS est clair sur un point : « il n'existe aucun contournement », la seule issue est le noyau corrigé. Côté hébergeurs, le japonais Sakura Internet a même suspendu, le 16 octobre, les nouvelles souscriptions de plusieurs offres le temps de vérifier l'isolation de ses hyperviseurs, tout en maintenant les serveurs existants.

Vérifier son exposition sans rien casser

Contrairement à une faille applicative, on ne « teste » pas PwnEscape en envoyant une charge : la reproduire, c'est déjà risquer de faire tomber l'hôte. La vérification se fait donc par constat de configuration, pas par exploitation. Trois gestes, à lancer sur l'hôte de virtualisation.

1. Lire la version du noyau en service

uname -r

2. Voir si le déchargement de somme de contrôle est actif sur vos invités

C'est le réglage qui ouvre le vecteur principal. Sous libvirt, pour un domaine donné :

virsh dumpxml <domaine> | grep "csum="

Une sortie vide signifie que les réglages par défaut de QEMU s'appliquent, et le déchargement est actif. C'est l'état le plus courant.

3. Pour les hôtes mutualisés, vérifier le chemin local

Si des utilisateurs non privilégiés partagent l'hôte, mesurez s'ils peuvent créer un espace de noms réseau isolé, préalable aux chemins locaux :

sysctl user.max_user_namespaces
unshare -Urn echo ok   # lancé en utilisateur non privilégié : s'il échoue, ce chemin-là est fermé

Que faire maintenant : le plan de remédiation

Par ordre d'efficacité, la seule remédiation complète restant le noyau corrigé.

  1. Appliquer le noyau corrigé de votre distribution, puis redémarrer l'hôte. C'est le correctif, tout le reste n'achète que du temps. Sur un hôte de virtualisation, migrez ou arrêtez proprement les invités avant le redémarrage, qui les interrompt tous.
  2. En attendant le redémarrage, désactiver le déchargement de somme de contrôle sur les invités non fiables. C'est la mesure d'atténuation que recommandent TuxCare et CloudLinux. Sous libvirt, on ajoute dans l'élément <interface> du domaine :
    <driver>
      <host csum='off'/>
      <guest csum='off'/>
    </driver>
    À poser par VM, avec un redémarrage de l'invité. Contrepartie : l'invité perd TSO et GSO, donc du débit. Et c'est une atténuation non testée contre cette faille précise : elle ferme le vecteur le plus évident, pas nécessairement tous.
  3. Sur un hôte mutualisé sans VM, réduire les chemins locaux en désactivant les espaces de noms utilisateur non privilégiés (sysctl -w user.max_user_namespaces=0), en sachant que cela casse les conteneurs sans root et les bacs à sable de Chrome ou Flatpak. À réserver aux hôtes où ce compromis est acceptable.
  4. Si vous vendez du livepatch (KernelCare et équivalents), suivre la disponibilité d'un correctif sans redémarrage : il était en cours de déploiement pour la famille Red Hat 9 à la mi-octobre.

Surveiller, le temps de corriger

Il n'y a pas d'indicateur de compromission propre à cette faille, ni de règle de détection toute faite : la CISA n'en a publié aucun. La surveillance est donc comportementale. Sur vos hôtes de virtualisation, corrélez trois signaux : des plantages du noyau (kernel panic) qui coïncident avec de l'activité réseau d'un invité, des événements de fragmentation IPv4 anormaux, et des comportements inhabituels des processus de virtualisation juste après du trafic invité. Si vous suspectez une évasion, traitez tout l'hôte comme compromis, préservez sa mémoire et ses traces réseau, et examinez les charges voisines : une évasion réussie expose tous les locataires du même hôte.

L'état des correctifs, distribution par distribution

Au 16 octobre 2026, la situation était contrastée. Vérifiez toujours l'avis officiel de votre distribution avant d'agir, cette photo vieillit vite.

Timeline

Divulgation et correctifs

La découverte

  1. 18 août 2026

    Vercel lance un concours doté d'un million de dollars pour qui s'évade de son bac à sable.

  2. 20 août 2026

    première remontée d'une fuite de mémoire hôte, par Paulos Yibelo (PWNAI Research).

La correction

  1. 4 septembre 2026

    cause racine signalée en privé aux mainteneurs réseau du noyau, avec des correctifs candidats.

  2. 7 septembre 2026

    Michael S. Tsirkin (Red Hat) reproduit la faille.

  3. 8 octobre 2026

    le correctif entre dans l'arbre réseau du noyau.

La publication

  1. 14 octobre 2026

    le correctif atteint la branche principale de Linus Torvalds ; Vercel publie son bilan.

  2. 15 octobre 2026

    CVE publiée, sept noyaux stables corrigés, description de pwn.ai et bulletin AWS mis en ligne.

D'une découverte dans un concours de bac à sable à la publication coordonnée, en moins de deux mois.
  • Noyau amont : corrigé en 7.3-rc7, et dans les stables 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.57 et 7.2.11.
  • Debian : corrigé dans bookworm en 6.1.190-1 (DLA-4841-1) et dans trixie en 6.12.113-1 (DSA-6568-1).
  • AlmaLinux : noyaux corrigés disponibles dans le dépôt almalinux-testing (8, 9 et 10), le temps qu'ils passent en production.
  • Famille Red Hat (RHEL, Rocky, Oracle Linux) : marquée affectée, résolution déléguée en cours, pas de noyau corrigé publié à la mi-octobre.
  • SUSE / openSUSE : marquée affectée, avis de sécurité à venir.
  • Ubuntu : la fiche existe, aucun paquet n'affichait encore de version corrigée, chaque noyau « en évaluation ».
  • Amazon Linux : correctif à prendre via les guides de mise à jour d'AWS pour les hôtes KVM auto-gérés.

La leçon : la frontière de virtualisation n'est pas une boîte noire

PwnEscape n'est pas une prouesse d'exploitation, c'est une erreur de confiance. Deux parties du noyau lisaient la même suite d'octets et n'en tiraient pas la même conclusion, l'une faisant confiance à une métadonnée que l'autre laissait l'invité contrôler. Le correctif tient en une quarantaine de lignes et son propre auteur le qualifie de « défense en profondeur » : une rustine posée à la bonne place, en attendant une validation plus complète à l'entrée. C'est dire que la surface n'est pas entièrement refermée.

La vraie leçon est ailleurs. On choisit la virtualisation précisément pour isoler ce en quoi on n'a pas confiance : un client, un code tiers, un agent automatique. Pendant dix-huit ans, cette frontière a comporté une fissure que personne n'avait regardée, jusqu'à ce qu'un concours bien doté y braque des outils modernes et la trouve en trois jours. Ce qui vaut pour le noyau vaut pour tout votre périmètre : une protection qu'on ne teste jamais finit par être testée par quelqu'un d'autre. Et une faille comme celle-ci ne se voit ni dans un scan d'applications, ni dans un pentest annuel daté du printemps. Elle se voit quand on cartographie tout son système d'information et qu'on fait l'inventaire de sa surface d'attaque externe, hôtes de virtualisation et interfaces d'administration compris, puis qu'on en surveille la version et la configuration en continu. La leçon rejoint celle du contournement d'authentification de Proxmox VE 7 : le plan de gestion d'une infrastructure de virtualisation n'a rien à faire en frontal.

Détecter ce type d'exposition en continu avec Flawfence

Chez Flawfence, le principe ne change pas d'une faille à l'autre. Le moteur cartographie votre périmètre exposé sur Internet, identifie les services qui y répondent en votre nom, situe leurs versions dans les plages vulnérables connues et vérifie l'exposition des vecteurs concernés, sans jamais envoyer de charge destructrice.

Une faille de noyau comme PwnEscape ne se déclenche pas depuis Internet, et nous ne prétendons pas la tester à distance : ce serait malhonnête. Ce que Flawfence apporte, c'est l'autre moitié du problème, celle qu'on néglige. Vos interfaces d'administration d'hyperviseurs (Proxmox, oVirt, consoles cloud) sont-elles joignables depuis l'extérieur ? Vos hôtes exposent-ils des services dont la version trahit un noyau ancien jamais redémarré ? Un nouveau sous-domaine, une console oubliée, un hôte réapparu après une migration déclenchent-ils une alerte, ou passent-ils sous le radar jusqu'au prochain audit ? C'est là que se gagne ou se perd la réponse à une faille comme celle-ci.

Questions fréquentes sur PwnEscape (CVE-2026-99999)

Qu'est-ce que PwnEscape, en une phrase ?

Une faille critique de la pile IPv4 du noyau Linux (CVE-2026-99999, CVSS 9,3) qui permet à une machine virtuelle invitée de lire la mémoire du noyau de son hôte KVM, de le faire tomber et, en laboratoire, d'y exécuter du code en root. Elle vit dans le traitement réseau partagé par l'hôte et ses invités, pas dans KVM lui-même.

Suis-je vulnérable si je n'héberge pas de VM d'autrui ?

Votre exposition est faible. La faille se déclenche depuis un invité non fiable, ou depuis un utilisateur local hostile sur une machine partagée. Si vous ne faites tourner que vos propres charges, sans locataire tiers ni virtualisation imbriquée, le risque est marginal. Appliquez tout de même le noyau corrigé dans votre cycle normal.

Est-elle exploitable à distance depuis Internet ?

Non. Les métadonnées en cause sont des informations internes de tampon réseau, qu'une carte ne fabrique pas à partir d'un paquet reçu. Il faut être dans un invité ou être un utilisateur local pour les produire. C'est pourquoi le vecteur CVSS est local (AV:L), malgré la gravité maximale des impacts.

Mon hébergeur cloud est-il concerné ?

Pour les services gérés, non. AWS a confirmé le 15 octobre 2026 qu'EC2, Lambda et Fargate ne sont pas concernés. Le cas visé est celui du client qui gère lui-même des VM avec KVM et virtio-net, y compris derrière Firecracker. Si vous êtes dans ce cas, c'est à vous de corriger le noyau de l'hôte.

La faille est-elle exploitée dans la nature ?

Pas à notre connaissance au 19 octobre 2026. Il n'existe aucun code d'exploitation public, aucune exploitation observée n'a été rapportée, et la faille ne figure pas au catalogue KEV de la CISA. La fuite de mémoire a été démontrée en production chez Vercel, mais l'exécution de code en root n'a été reproduite qu'en laboratoire. Le chercheur prévoit néanmoins l'apparition d'exploits en quelques semaines : la fenêtre pour corriger tranquillement est courte.

Un redémarrage du noyau suffit-il ?

Oui, à condition d'avoir d'abord installé le noyau corrigé de votre distribution. Un noyau corrigé présent mais non démarré ne protège pas : vérifiez après coup que uname -r et la révision du paquet correspondent bien à la version corrigée annoncée par votre distribution. Les livepatch (type KernelCare) corrigent sans redémarrage quand ils sont disponibles pour votre noyau.

Désactiver le déchargement de somme de contrôle, est-ce une vraie protection ?

C'est une atténuation d'attente, pas un correctif. Elle ferme le vecteur le plus évident, au prix d'un débit réseau réduit pour les invités concernés, et elle n'a pas été testée de façon exhaustive contre cette faille précise. On l'applique en attendant de pouvoir redémarrer sur le noyau corrigé, pas à sa place.

En résumé

CVE-2026-99999 rappelle que la frontière de virtualisation, celle sur laquelle repose tout l'hébergement mutualisé et toute exécution de code non fiable, n'est sûre que tant qu'on la vérifie. Une métadonnée mal bornée, présente depuis 2008, a suffi à la fissurer. La bonne nouvelle est que le correctif existe, qu'aucune exploitation publique n'a encore été observée, et qu'une mesure d'attente simple ferme le vecteur principal le temps d'un redémarrage planifié.

Le réflexe de fond reste le même que pour chaque faille que nous couvrons : un inventaire exhaustif de ce que votre organisation expose, et une surveillance continue de la version et de la configuration de ces actifs. C'est ce que Flawfence fait, pour les interfaces d'administration d'hyperviseurs comme pour la prochaine faille qui n'a pas encore de numéro.

Vérifiez votre exposition dès maintenant, il ne vous faudra que 5 minutes.

Sources

Discutons de votre exposition externe

Demandez une démo personnalisée de Flawfence et découvrez votre niveau d’exposition réel.