
Vérifie si un système Linux est affecté par CVE-2026-99999 (PwnEscape) et affiche ou applique le correctif noyau spécifique à la distribution
English | 한국어
Un script shell unique qui vérifie si un système Linux est affecté par CVE-2026-99999 (« PwnEscape »). Il explique le verdict, puis affiche soit les étapes de correctif pour cette distribution, soit applique le correctif et redémarre le système pour vous.
Les données du fournisseur intégrées au script sont à jour au 2026-10-20. Les avis changent rapidement, alors confirmez toujours auprès du suivi de sécurité de votre distribution.
| Composant | Pile IPv4 du noyau Linux (skb_checksum_help → ip_do_fragment) |
| Cause | checksum_start / csum_offset fournis via l'en-tête virtio-net ou les sockets de paquets ne sont pas validés par rapport à l'en-tête IPv4. La finalisation de la somme de contrôle peut alors écraser la longueur d'en-tête déjà validée (CWE-20). |
| Impact | VM invitée → hôte : divulgation de la mémoire de l'hôte, plantage de l'hôte, exécution de code en tant que root sur l'hôte |
| Gravité | CVSS 3.1 9.3 Critique (CNA du noyau) · 8.8 Important (Red Hat) |
| Affectés | Tous les noyaux depuis 2.6.27 |
| Correctif | Commit amont 6785011f8b16 « ipv4: validate checksum_start before completing checksum » |
| Contournement | Aucun publié. Le seul correctif consiste à démarrer un noyau corrigé. |
Le risque principal concerne les hôtes de virtualisation qui exécutent des invités non fiables (KVM/QEMU, Firecracker, Proxmox, hôtes cloud et VPS). Corriger le noyau d'un invité ne protège pas l'hôte.
| Fichier | Description |
|---|---|
scanner-cve-2026-99999.sh | Le scanner, sortie en anglais |
scanner-cve-2026-99999_kr.sh | Le même scanner, sortie en coréen |
Les deux fichiers contiennent la même logique ; seuls les messages et les commentaires diffèrent.
| Fichier | SHA-256 | MD5 |
|---|---|---|
scanner-cve-2026-99999.sh | 65c3c226487d5bd80d436c06cc5256304cfa17011be82d8404c54355998801a6 | 8ab38c22ed737986775f6f64f5a800aa |
scanner-cve-2026-99999_kr.sh | 05d4af248ab2cab26566c81067ed35dd0a8c966f7fa8459867597c56ac43a805 | 6223f8db3c1a8dec361fe301a7193ff4 |
Vérifiez le fichier avant de l'exécuter :
echo "65c3c226487d5bd80d436c06cc5256304cfa17011be82d8404c54355998801a6 scanner-cve-2026-99999.sh" | sha256sum -c
echo "8ab38c22ed737986775f6f64f5a800aa scanner-cve-2026-99999.sh" | md5sum -c
Ces valeurs correspondent aux fichiers de la version v1.0.0. Les fichiers des commits ultérieurs peuvent différer.
Depuis la version publiée (recommandé) :
curl -LO https://github.com/sqzer-x/cve-2026-99999-scanner/releases/download/v1.0.0/scanner-cve-2026-99999.sh
echo "65c3c226487d5bd80d436c06cc5256304cfa17011be82d8404c54355998801a6 scanner-cve-2026-99999.sh" | sha256sum -c
sudo bash scanner-cve-2026-99999.sh
Ou depuis le dépôt :
git clone https://github.com/sqzer-x/cve-2026-99999-scanner.git
cd cve-2026-99999-scanner
sudo bash scanner-cve-2026-99999.sh
Exécutez-le sur l'hôte, pas à l'intérieur d'un conteneur. La vérification fonctionne en tant qu'utilisateur normal ; root (via sudo) n'est nécessaire que pour l'option 1 du menu.
Détecte la distribution (/etc/os-release) et le noyau en cours d'exécution (/proc).
Évalue le noyau :
Vérifie la présence d'un livepatch appliqué (kpatch, Canonical Livepatch, SUSE kernel-livepatch, Ksplice), d'un noyau corrigé installé mais pas encore démarré, et si le noyau du prochain démarrage est corrigé.
Signale les indicateurs d'exposition : /dev/kvm, vhost_net, les périphériques TUN/TAP, les processus de VM (QEMU, Firecracker, kvm de Proxmox, ...), les paramètres des espaces de noms utilisateur.
Si le système n'est pas sûr, propose un menu :
1. Patch now (install the fixed kernel and reboot)
2. Patch manually later (show the commands)
3. Exit
Lorsqu'il n'est pas exécuté depuis un terminal (cron, pipes, sortie redirigée vers un fichier), aucun menu n'est affiché et il se comporte comme l'option 2.
| Option | Description |
|---|---|
-l, --list | Affiche uniquement le tableau d'état par distribution |
--no-color | Désactive la sortie colorée (NO_COLOR est également pris en compte) |
--os-release FILE | Utilise ce fichier os-release au lieu de /etc/os-release |
--uname-r STRING | Évalue cette version de noyau au lieu de celle en cours d'exécution (ignore les vérifications locales) |
--uname-v STRING | Chaîne de compilation du noyau (uname -v), nécessaire pour les noyaux Debian avec --uname-r |
-h, --help | Affiche l'aide |
| Code | Signification |
|---|---|
| 0 | Sûr (corrigé, non affecté, ou livepatché) |
| 1 | Vulnérable — un noyau corrigé est disponible |
| 2 | Noyau corrigé installé — redémarrage nécessaire |
| 3 | Vulnérable — aucun correctif du fournisseur pour l'instant, ou fin de vie |
| 4 | Indéterminé (noyau inconnu, exécution dans un conteneur, ...) |
Les codes de sortie le rendent utilisable depuis la gestion de configuration ou la supervision :
bash scanner-cve-2026-99999.sh --no-color > report.txt; echo "exit code: $?"
Le verdict peut être calculé pour des valeurs collectées ailleurs, par exemple depuis un conteneur ou un inventaire :
# On the target: uname -r ; uname -v ; cat /etc/os-release > os-release.txt
bash scanner-cve-2026-99999.sh --uname-r 5.14.0-570.12.1.el9_6.x86_64 --os-release os-release.txt
bash scanner-cve-2026-99999.sh --uname-r 6.1.0-38-amd64 \
--uname-v '#1 SMP PREEMPT_DYNAMIC Debian 6.1.176-1 (2026-08-02)' --os-release os-release.txt
bash scanner-cve-2026-99999.sh --list affiche le même tableau.