Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-31431 — Preuve de concept fonctionnelle pour CVE-2026-31431, une élévation de privilèges locale du noyau Linux via la corruption du cache de pages AEAD AF_ALG, permettant d'obtenir un shell root. | Kitploit
Outils/GitHubGitHub/wesmar/cve-2026-31431
Escalade de PrivilègesFrameworks d'ExploitationAnalyse des VulnérabilitésExploitationExploitation de Binaires
GitHubwesmar/cve-2026-31431

CVE-2026-31431

Preuve de concept fonctionnelle pour CVE-2026-31431, une élévation de privilèges locale du noyau Linux via la corruption du cache de pages AEAD AF_ALG, permettant d'obtenir un shell root.

Voir le dépôt
618il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-31431 — Élévation de privilèges locale via AF_ALG

NVD / NIST PoC Download

2026-04-29 — Je publie cet exploit un jour après l'avoir partagé sur le forum MyDigitalLife. Il ne nécessite pas Python ; il est écrit en C et compilé à la taille la plus petite possible en utilisant :

musl-gcc -static -Os -o exploit exploit.c -s

Menace critique. Le binaire de l'exploit est compilé sans dépendances et peut être utilisé pour tester les vulnérabilités sur n'importe quel système Linux.

CVE-2026-31431 est une vulnérabilité confirmée par le NIST dans le noyau Linux qui permet à un utilisateur local non privilégié d'obtenir un shell root en quelques secondes. Compte tenu de l'exploit circulant publiquement pour CVE-2026-31431, j'ai développé une preuve de concept (PoC) binaire pour évaluer l'exposition de notre infrastructure interne. Bien que certains environnements restreignent l'utilisation de su, cette vulnérabilité est particulièrement critique pour les serveurs partagés car elle cible la gestion de la mémoire du noyau sous-jacent. Par conséquent, tout binaire SETUID — y compris sudo, passwd, mount ou newgrp — peut être exploité pour déclencher l'exploit et obtenir un shell root. Une action administrative pour corriger le noyau est requise immédiatement, car les restrictions standard de l'espace utilisateur sont insuffisantes pour atténuer cette menace. Tout système Linux exécutant un noyau non corrigé est à risque.

Mon propre exploit fonctionnel · Noyau Linux · Interface cryptographique AF_ALG (AEAD)

Remplace /usr/bin/su dans le cache de pages du noyau sans toucher au fichier sur disque

Un accès shell local suffit — aucun privilège supplémentaire requis

Affecte les distributions Linux non corrigées

CVE-2026-31431


📚 Table des matières

  • Qu'est-ce que cette vulnérabilité
  • Qui est concerné
  • Comment fonctionne l'exploit — étape par étape
  • Flux d'attaque
  • Analyse du code de l'exploit
  • Charge utile ELF — détails techniques
  • Comment vérifier si vous êtes vulnérable
  • Mesures d'atténuation
  • Notes du chercheur
  • Avertissement

Qu'est-ce que cette vulnérabilité

CVE-2026-31431 est un bug dans la gestion des opérations d'E/S scatter-gather et des références au cache de pages dans le sous-système cryptographique du noyau Linux — plus précisément dans l'implémentation des sockets AF_ALG pour les algorithmes AEAD (crypto/af_alg.c, crypto/aead.c).

PropriétéValeur
IdentifiantCVE-2026-31431
RéférenceNIST NVD
TypeÉlévation de privilèges locale (LPE)
ComposantNoyau Linux — AF_ALG / AEAD (authencesn)
Accès requisUtilisateur local non privilégié
ImpactShell root interactif
Statut de l'exploitPoC fonctionnel disponible publiquement sur GitHub
PersistanceAucune — la modification n'existe qu'en RAM ; un redémarrage restaure l'état d'origine

Ce qui se passe réellement

Le noyau Linux expose une interface cryptographique à l'espace utilisateur via les sockets AF_ALG. La vulnérabilité réside dans le fait que lors d'une opération de déchiffrement AEAD, le noyau mappe incorrectement la sortie du déchiffrement directement sur les pages du cache de pages du fichier source — au lieu d'un tampon temporaire. Un attaquant peut ainsi écraser le contenu en mémoire de n'importe quel fichier sans le modifier sur disque, sans privilèges root, et sans laisser de trace visible dans le système de fichiers.


Qui est concerné

SystèmeStatut
Ubuntu 24.04 (machine physique / VM)⚠️ Vulnérable sur noyau non corrigé
Debian, Fedora, Arch sur noyau non corrigé⚠️ Vulnérable
Distributions avec CONFIG_SECURITY_LOCKDOWN_LSM✅ Probablement protégé
Systèmes avec nosuid ou ProtectSUID (systemd)✅ Protégé
Systèmes avec AppArmor/SELinux bloquant AF_ALG✅ Protégé
macOS, Windows (natif)✅ Non concerné

Comment fonctionne l'exploit — étape par étape

L'exploit se compose de deux éléments : un script auxiliaire dans /tmp/x et une boucle de corruption basée sur AF_ALG. Voici un parcours exact basé sur l'analyse du code source :

1. Configuration du script auxiliaire

L'exploit crée /tmp/x avec le contenu suivant :

#!/bin/sh
export TERM=xterm-256color
exec /bin/sh

Il définit les permissions sur 0755. La raison : /usr/bin/su supprime les variables d'environnement (y compris TERM) au lancement. Le script auxiliaire les restaure avant de lancer le vrai shell, garantissant un terminal fonctionnel.

2. Construction de la charge utile ELF

Un binaire ELF x86_64 minimal de 158 octets contenant du shellcode brut est construit en mémoire. La chaîne /bin/sh à l'offset 150 est ensuite remplacée par /tmp/x\0 via memcmp/memcpy. Voir Charge utile ELF pour plus de détails.

3. Ouverture de /usr/bin/su en lecture seule

int su_fd = open("/usr/bin/su", O_RDONLY);

Le fichier est ouvert en lecture seule — l'exploit ne nécessite aucune permission d'écriture.

4. Boucle de corruption — 39 itérations de 4 octets chacune

La charge utile (158 octets) est traitée par blocs de 4 octets (39 blocs complets). Chaque bloc passe par corrupt_binary_chunk(), qui effectue :

  • Crée un socket AF_ALG (SOCK_SEQPACKET)
  • Se lie à authencesn(hmac(sha256),cbc(aes)) — un algorithme AEAD composé
  • Définit une clé de 72 octets et une taille de tag d'authentification de 4 octets
  • Accepte un socket d'opération (op_sock)
  • Envoie sendmsg avec un tampon de 8 octets (4× 'A' + 4 octets de charge utile) et trois CMSG : ALG_OP_DECRYPT, IV (20 octets), assoclen=8
  • Effectue splice : su_fd → pipe → op_sock (zéro-copie à travers le noyau)
  • Finalise via recv() — c'est ici que le noyau écrase par erreur le cache de pages

5. Exécution

execve("/usr/bin/su", args, NULL);

Le noyau charge /usr/bin/su via le cache de pages — qui est maintenant empoisonné. Le bit SUID (chmod u+s) est intact, donc le noyau exécute le fichier en tant que root. Le shellcode exécute setuid(0) → execve("/tmp/x") → shell root interactif.


Flux d'attaque

Télécharger l’outil