Skip to content
KitploitKITPLOIT
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cve-2026-31431-mitigation — Mitigation basée sur Seccomp pour CVE-2026-31431, une LPE du noyau Linux. Bloque la socket AF_ALG via un module PAM et un wrapper autonome, avec détection automatique des noyaux corrigés. | Kitploit
Outils/GitHubGitHub/linux-zs/cve-2026-31431-mitigation
Outils DéfensifsAnalyse des VulnérabilitésAudit de ConfigurationVirtualisation de Sécurité
GitHublinux-zs/cve-2026-31431-mitigation

cve-2026-31431-mitigation

Mitigation basée sur Seccomp pour CVE-2026-31431, une LPE du noyau Linux. Bloque la socket AF_ALG via un module PAM et un wrapper autonome, avec détection automatique des noyaux corrigés.

Voir le dépôt

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 →
il y a 3 moisPas encore vérifié
Partager

Atténuation seccomp CVE-2026-31431

Une atténuation légère et réversible basée sur seccomp pour CVE-2026-31431, une vulnérabilité d'élévation de privilèges locale dans le sous-système crypto algif_aead / authencesn du noyau Linux.

中文文档


Présentation de la vulnérabilité

Type : Élévation de privilèges locale (LPE)

Composant affecté : crypto/algif_aead.c du noyau Linux - opération AEAD en place

Primitive d'attaque : Une écriture contrôlable de 4 octets dans le cache de pages de tout fichier lisible via le chemin d'écriture scratch de l'algorithme AEAD authencesn. En ciblant /etc/passwd, un attaquant peut modifier son UID en 0 (root) et obtenir un shell root via su.

Confirmé sur les noyaux 6.12+, 6.17+, 6.18+, et également reproduit sur les noyaux RHEL/CentOS 4.18/5.14.

Noyaux affectés :

Environnements vérifiés : Rocky Linux 8 (noyau 4.18) et Rocky Linux 9 (noyau 5.14) - exploit entièrement bloqué, suppression sûre confirmée.

Cause racine : Le commit 72548b093ee3 a introduit l'opération AEAD en place. Lorsque des pages du cache de pages épissées sont utilisées comme liste de scatter-gather de destination, le champ AAD seqno_lo est incorrectement réécrit dans le cache de pages lors du déchiffrement AEAD.

Correctif en amont : Revenir à l'opération AEAD hors place.

Comment fonctionne cette atténuation

Cette solution comporte deux composants :

  1. Module PAM (pam_block_afalg.so) - La défense principale. Chargé par PAM lors de l'ouverture de session (pam_sm_open_session), il applique un filtre BPF seccomp qui bloque socket(AF_ALG, ...) avant que tout code utilisateur ne s'exécute. Cela couvre TOUTES les sessions authentifiées par PAM : su -c, su -, SSH, connexion TTY, etc.

  2. Binaire autonome (block_afalg) - Optionnel. Peut encapsuler des programmes spécifiques pour les scénarios non-PAM (par exemple, tâches cron, services systemd, invocation manuelle).

Le filtre seccomp :

  • Bloque uniquement socket(AF_ALG, ...) (retourne EACCES)
  • Zéro impact sur tous les autres appels système (y compris setuid, su, sudo)
  • Est hérité par tous les processus enfants (fork + exec)
  • Détecte automatiquement les noyaux corrigés et devient une opération sans effet

Architecture

root@kitploit:~
Ouverture de session PAM (su, ssh, login, etc.)
  |
  v
pam_block_afalg.so (pam_sm_open_session)
  |
  +-- Vérification : le noyau est-il vulnérable ? (essayer socket(AF_ALG))
  |     |
  |     +-- Non  --> retourner PAM_SUCCESS (sans effet)
  |     |
  |     +-- Oui --> prctl(PR_SET_SECCOMP, filtre BPF)
  |                   |
  |                   +-- filtre seccomp actif sur le processus enfant sshd
  |                   +-- hérité par le shell de l'utilisateur et TOUS les processus enfants
  |                   +-- socket(AF_ALG, ...) retourne EACCES
  v
Le shell / la commande de l'utilisateur s'exécute avec la protection seccomp
  |
  +-- su, sudo et tous les autres appels système fonctionnent normalement
  +-- Seul le socket AF_ALG est bloqué

Fichiers

FichierObjectif
pam_block_afalg.cSource du module PAM. Applique le filtre seccomp à l'ouverture de session.
pam_minimal.hDéfinitions minimales des types PAM (compilation sans pam-devel).
block_afalg.cBinaire autonome d'encapsulation seccomp. Pour une utilisation non-PAM.
deploy.shScript de déploiement. Compile, installe et gère le module PAM.

Prérequis

  • Noyau Linux avec support seccomp (la plupart des noyaux modernes)
  • gcc (pour la compilation)
  • libpam (exécution, généralement préinstallé)
  • Accès root/sudo (pour l'installation)
  • Architecture x86_64 (le filtre BPF utilise les numéros d'appels système x86_64)

Démarrage rapide

root@kitploit:~
# 1. Compiler le module PAM
gcc -Wall -O2 -fPIC -shared -o pam_block_afalg.so pam_block_afalg.c \
    /usr/lib64/libpam.so.0

# 2. Installer (ajoute automatiquement les configurations PAM à su, sshd, login)
sudo ./deploy.sh install

# 3. Vérifier (doit être une NOUVELLE session)
cat /proc/self/status | grep Seccomp
# Devrait afficher : Seccomp: 2

python3 -c "
import socket
try:
    s = socket.socket(38,2,0); s.close()
    print('VULNERABLE')
except OSError:
    print('BLOQUÉ')
"
# Devrait afficher : BLOQUÉ

# 4. Désinstaller
sudo ./deploy.sh remove

Référence des commandes

CommandeDescription
deploy.sh installCompiler le module PAM, l'installer dans /lib64/security/, ajouter automatiquement les configurations PAM
deploy.sh removeDésinstallation complète : supprimer le module, nettoyer les configurations PAM, supprimer les fichiers
deploy.sh statusAfficher l'état de l'installation, les configurations PAM, l'état du noyau

Utilisation autonome

Pour les scénarios non-PAM, utilisez block_afalg directement :

root@kitploit:~
# Compiler
gcc -Wall -O2 -o block_afalg block_afalg.c

# Exécuter une commande avec AF_ALG bloqué
./block_afalg python3 votre_script.py
./block_afalg bash

Vérification

Vérifier si le noyau est vulnérable

root@kitploit:~
python3 -c "
import socket
try:
    s = socket.socket(38, socket.SOCK_SEQPACKET, 0)
    s.close()
    print('VULNÉRABLE : socket AF_ALG disponible')
except:
    print('SÛR : socket AF_ALG bloqué ou indisponible')
"

Vérifier que le module PAM est actif

root@kitploit:~
# Vérifier l'état seccomp
cat /proc/self/status | grep Seccomp
# Seccomp: 0 = non protégé
# Seccomp: 2 = protégé

# Tester le socket AF_ALG
python3 -c "
import socket
try:
    s = socket.socket(38,2,0)
    s.close()
    print('AF_ALG disponible - NON protégé')
except OSError:
    print('AF_ALG bloqué - PROTÉGÉ')
"

# Vérifier les journaux PAM
grep pam_block_afalg /var/log/secure
# Devrait afficher : filtre seccomp appliqué, AF_ALG bloqué

Limitations

  • x86_64 uniquement : Le filtre BPF code en dur le numéro d'appel système 41 (__NR_socket sur x86_64). Les autres architectures nécessitent une mise à jour du numéro d'appel système.
  • Dépendant de PAM : Protège uniquement les sessions qui passent par PAM. Les appels exec() directs sans PAM ne sont pas couverts (utilisez block_afalg pour ceux-ci).
  • Pas de désactivation à l'exécution : Une fois le filtre seccomp appliqué à un processus, il ne peut pas être supprimé. La vérification du noyau garantit qu'il n'est appliqué que lorsque nécessaire.
  • Nouvelles sessions uniquement : Les sessions existantes démarrées avant l'installation du module ne sont pas protégées rétroactivement.

Quand supprimer

  1. Le correctif officiel du noyau est appliqué - Le module PAM le détecte automatiquement, mais vous pouvez toujours nettoyer avec remove.
  2. RHEL/CentOS publie un noyau corrigé - yum update kernel puis supprimez le module.

Licence

Cet outil est fourni uniquement à des fins de tests de sécurité autorisés et de défense. Utilisez-le uniquement sur des systèmes que vous possédez ou que vous êtes explicitement autorisé à évaluer.

Télécharger l’outil