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-mitigation-suite — Framework de défense au niveau du noyau pour les vulnérabilités AF_ALG, doté d'un traçage de sockets eBPF, d'un durcissement Ansible et d'un auditeur cryptographique pour la détection de dérives. | Kitploit
Outils/GitHubGitHub/mahdi13830510/cve-2026-31431-mitigation-suite
Sécurité de l'Infrastructure CloudOutils DéfensifsAudit de ConfigurationDevSecOpsDétection d'IntrusionRéponse aux IncidentsDétection d'Anomalies
GitHub
mahdi13830510/cve-2026-31431-mitigation-suite

CVE-2026-31431-mitigation-suite

Framework de défense au niveau du noyau pour les vulnérabilités AF_ALG, doté d'un traçage de sockets eBPF, d'un durcissement Ansible et d'un auditeur cryptographique pour la détection de dérives.

Voir le dépôt
431il 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

Framework de Défense AF_ALG

CI License

Un framework de défense au niveau du noyau pour le sous-système AF_ALG (Address Family Algorithm, famille 38) de Linux. Conçu pour les centres d'opérations de sécurité (SOC) gérant des parcs Linux d'entreprise où le Zero Trust doit s'étendre dans le noyau, et non s'arrêter à la périphérie du réseau.

Pourquoi AF_ALG est important pour un SOC

AF_ALG expose l'API crypto du noyau à l'espace utilisateur via une interface socket (socket(AF_ALG, SOCK_SEQPACKET, 0)). Il a été initialement ajouté pour les systèmes embarqués sans /dev/crypto et a depuis accumulé une part disproportionnée de CVE du noyau, car il présente du code crypto en mode noyau à des appelants non privilégiés — un déséquilibre classique de surface d'attaque.

Dans une configuration d'entreprise typique :

  • Presque aucun utilisateur n'en a besoin. OpenSSL, GnuTLS, libsodium et systemd-cryptsetup utilisent tous d'autres chemins par défaut.
  • Les adversaires s'y intéressent. C'est un point de pivot récurrent dans les chaînes d'élévation de privilèges (CVE-2019-8912, CVE-2017-13215, et d'autres) précisément parce qu'il est accessible depuis des conteneurs non privilégiés lorsque les espaces de noms utilisateur sont disponibles.
  • Il est invisible pour la plupart des EDR. Les outils de point de terminaison qui interceptent connect(), bind() ou le DNS ne voient rien — le trafic AF_ALG ne quitte jamais le noyau.

Ce framework traite chaque création de socket AF_ALG comme un événement à forte valeur de signal et réduit la surface qui rend ces événements exploitables.

Modèle de menace et correspondance Zero Trust

Principe Zero TrustContrôle dans ce framework
Ne jamais faire confiance, toujours vérifierTraceur eBPF journalise chaque tentative de création de socket AF_ALG avec pid/uid/comm
Présumer la compromissionAuditeur crypto compare l'état du noyau à une référence signée
Moindre privilègeRestrictAddressFamilies systemd + plafonnement des capacités sur les unités gérées
Microsegmentation (côté noyau)unprivileged_userns_clone=0 supprime le pivot userns utilisé par les exploits
Validation continueCI valide les rapports d'audit par rapport à un schéma versionné à chaque modification

Structure du dépôt

.
├── ebpf/                  Observabilité runtime (traceur BCC + liste d'autorisation)
├── ansible/               Configuration en tant que code (sysctl + drop-ins systemd)
├── systemd/               Drop-in systemd autonome pour les hôtes sans Ansible
├── auditor/               Auditeur d'état du noyau (Python)
├── schemas/               Schémas JSON pour l'ingestion des rapports d'audit
├── scripts/               Scripts shell d'assistance (vérifiés par CI)
├── tests/                 Tests unitaires + fixtures de rapports
└── .github/workflows/     CI : shellcheck + validation de schéma JSON + lint

Composants

1. Observabilité runtime — traceur eBPF

ebpf/af_alg_tracer.py attache un kprobe à security_socket_create. La sonde filtre sur family == 38 au niveau du programme BPF afin que le vérificateur élague les créations de sockets non liées et que la surcharge par événement reste de l'ordre de la nanoseconde. Elle émet un enregistrement JSON par tentative :

{
  "@timestamp": "2026-05-02T09:14:11.412041+00:00",
  "event": {"category": "kernel", "action": "af_alg_socket_create", "severity": "high"},
  "process": {"pid": 1394, "tgid": 1394, "comm": "suspicious_bin"},
  "user": {"uid": 1000, "gid": 1000},
  "socket": {"family": 38, "family_name": "AF_ALG", "type": 5, "protocol": 0},
  "host": {"name": "web-prod-04"}
}

Redirigez la sortie standard vers Vector, Fluent Bit ou journald (via systemd-cat). Une liste d'autorisation de noms de commandes (/etc/af-alg-defense/allow.list) supprime les consommateurs connus et légitimes sans perdre la capacité de détecter les écarts.

La cible du kprobe est le hook LSM, donc les événements se déclenchent sur l'intention — même les tentatives qui seraient refusées par seccomp ou RestrictAddressFamilies produisent un enregistrement. C'est exactement ce qu'un SOC souhaite pour l'établissement de références comportementales.

2. Configuration en tant que code — rôle Ansible + drop-in systemd

ansible/roles/af_alg_hardening/ applique deux couches de durcissement :

Drop-in sysctl (/etc/sysctl.d/90-af-alg-defense.conf) :

  • kernel.unprivileged_userns_clone=0 — supprime le pivot userns utilisé par la plupart des chaînes d'escalade AF_ALG.
  • user.max_user_namespaces=0 — défense en profondeur portable entre distributions.

Drop-in systemd (/etc/systemd/system/<unit>.d/50-af-alg-restrict.conf) : Utilise RestrictAddressFamilies comme liste d'autorisation (et non liste de refus). L'unité est autorisée pour AF_UNIX AF_INET AF_INET6 AF_NETLINK ; toute autre famille — AF_ALG inclus — échoue avec EAFNOSUPPORT car systemd l'applique via un BPF attaché au cgroup que l'application ne peut pas désactiver. Le drop-in retire également CAP_SYS_ADMIN et applique ProtectKernel* pour fermer les chemins d'escalade les plus courants.

Application :

ansible-playbook -i inventory ansible/site.yml --check --diff   # aperçu
ansible-playbook -i inventory ansible/site.yml                  # application

Pour les hôtes sans Ansible, placez le fichier autonome directement :

sudo ./scripts/deploy_dropin.sh nginx.service

3. Auditeur d'état du noyau

auditor/crypto_auditor.py produit un rapport JSON de posture de sécurité en inspectant :

  • /proc/crypto — chaque chiffrement / hachage / aead enregistré, avec les indicateurs FIPS et l'état d'auto-test.
  • /sys/module/ — modules chargés dans le sous-arbre crypto, avec indicateurs de taint et instantanés de paramètres.
  • /proc/sys/kernel/, /proc/sys/user/ — sysctls qui contrôlent les chemins d'attaque AF_ALG.
  • /sys/kernel/security/lockdown — mode de verrouillage du noyau.

Le rapport est indexé par des identifiants de constatation stables (FND-001 à FND-005 actuellement) afin que les règles SIEM puissent supprimer des constatations individuelles sans abandonner l'intégralité du document. La détection de dérive compare la posture à une référence :

sudo ./auditor/crypto_auditor.py --output /var/log/af-alg-defense/today.json
sudo ./auditor/crypto_auditor.py \
     --baseline /var/log/af-alg-defense/baseline.json \
     --fail-on-drift

Le schéma se trouve dans schemas/audit_report.schema.json (Draft 2020-12) et est validé en CI à chaque push.

4. Intégration continue

.github/workflows/ci.yml exécute quatre tâches à chaque push et PR :

  1. ShellCheck — chaque *.sh et script avec shebang.
  2. Validation de schéma — vérifie le métaschéma de audit_report.schema.json, puis exécute l'auditeur en direct sur le noyau du runner GH et valide le rapport résultant. Les fixtures dans tests/fixtures/ sont également vérifiées.
  3. Lint Python (ruff check .).
  4. Lint Ansible sur l'arborescence du rôle.

Un échec de validation de schéma bloque les fusions, ce qui empêche les analyseurs SIEM en aval de se casser sur un champ renommé silencieusement.

Recommandations opérationnelles pour le SOC

Règles de détection à superposer

Télécharger l’outil