Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-31431-mitigation-suite — Framework di difesa a runtime a livello di kernel per le vulnerabilità AF_ALG, con tracciamento dei socket tramite eBPF, hardening Ansible e un auditor crittografico per il rilevamento delle derive. | Kitploit
Strumenti/GitHubGitHub/mahdi13830510/cve-2026-31431-mitigation-suite
Sicurezza dell'Infrastruttura CloudStrumenti DifensiviAudit di ConfigurazioneDevSecOpsRilevamento IntrusioniRisposta agli IncidentiRilevamento di Anomalie
GitHub
mahdi13830510/cve-2026-31431-mitigation-suite

CVE-2026-31431-mitigation-suite

Framework di difesa a runtime a livello di kernel per le vulnerabilità AF_ALG, con tracciamento dei socket tramite eBPF, hardening Ansible e un auditor crittografico per il rilevamento delle derive.

Vedi Repository
4315 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Framework di Difesa AF_ALG

CI License

Un framework di difesa a livello di kernel per il sottosistema Linux AF_ALG (Address Family Algorithm, famiglia 38). Progettato per i Security Operations Center che gestiscono flotte Linux enterprise dove la Zero Trust deve estendersi dentro il kernel, non fermarsi al perimetro di rete.

Perché AF_ALG è importante per un SOC

AF_ALG espone l'API crittografica del kernel allo spazio utente tramite un'interfaccia socket (socket(AF_ALG, SOCK_SEQPACKET, 0)). È stato originariamente aggiunto per sistemi embedded senza /dev/crypto e da allora ha accumulato una quota sproporzionata di CVE del kernel perché presenta codice crittografico in modalità kernel a chiamanti non privilegiati — un classico disallineamento di superficie.

In una tipica build enterprise:

  • Quasi nessuno spazio utente lo richiede. OpenSSL, GnuTLS, libsodium e systemd-cryptsetup usano tutti altri percorsi di default.
  • Gli avversari sono interessati ad esso. È un pivot ricorrente nelle catene di escalation dei privilegi (CVE-2019-8912, CVE-2017-13215 e altri) proprio perché è raggiungibile da container non privilegiati quando i namespace utente sono disponibili.
  • È invisibile alla maggior parte degli EDR. Gli strumenti endpoint che intercettano connect(), bind() o DNS non vedono nulla — il traffico AF_ALG non lascia mai il kernel.

Questo framework tratta ogni creazione di socket AF_ALG come un evento ad alta segnalazione e riduce la superficie che rende sfruttabili tali eventi.

Modello di minaccia e mappatura Zero Trust

Principio Zero TrustControllo in questo framework
Mai fidarsi, verificare sempreTracer eBPF registra ogni tentativo di creazione socket AF_ALG con pid/uid/comm
Presumere la violazioneAuditor crittografico confronta la postura del kernel con una baseline firmata
Privilegio minimosystemd RestrictAddressFamilies + capability bounding sulle unità gestite
Microsegmentazione (lato kernel)unprivileged_userns_clone=0 rimuove il pivot userns usato dagli exploit
Validazione continuaCI valida i report di audit rispetto a uno schema versionato a ogni modifica

Struttura del repository

.
├── ebpf/                  Osservabilità runtime (tracer BCC + allowlist)
├── ansible/               Configuration-as-Code (sysctl + systemd drop-in)
├── systemd/               Drop-in systemd autonomo per host senza Ansible
├── auditor/               Auditor dello stato del kernel (Python)
├── schemas/               JSON Schema per l'ingestione dei report di audit
├── scripts/               Script shell di supporto (lintati dalla CI)
├── tests/                 Test unitari + fixture dei report
└── .github/workflows/     CI: shellcheck + validazione JSON Schema + lint

Componenti

1. Osservabilità runtime — tracer eBPF

ebpf/af_alg_tracer.py collega una kprobe a security_socket_create. La probe filtra su family == 38 a livello di programma BPF, così il verifier pota le creazioni di socket non correlate e l'overhead per evento rimane nell'ordine dei nanosecondi. Emette un record JSON per ogni tentativo:

{
  "@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"}
}

Inoltra lo stdout a Vector, Fluent Bit o journald (tramite systemd-cat). Un'allowlist basata sui nomi comm (/etc/af-alg-defense/allow.list) sopprime i consumatori noti e legittimi senza perdere la capacità di rilevare deviazioni.

Il target della kprobe è l'hook LSM, quindi gli eventi scattano sull'intento — anche i tentativi che verrebbero negati da seccomp o RestrictAddressFamilies producono comunque un record. È esattamente ciò che un SOC vuole per la baseline comportamentale.

2. Configuration as Code — ruolo Ansible + drop-in systemd

ansible/roles/af_alg_hardening/ applica due livelli di hardening:

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

  • kernel.unprivileged_userns_clone=0 — rimuove il pivot userns usato dalla maggior parte delle catene di escalation AF_ALG.
  • user.max_user_namespaces=0 — difesa in profondità portabile tra distribuzioni.

Drop-in systemd (/etc/systemd/system/<unit>.d/50-af-alg-restrict.conf): Usa RestrictAddressFamilies come allow-list (non deny-list). All'unità sono consentite AF_UNIX AF_INET AF_INET6 AF_NETLINK; qualsiasi altra famiglia — inclusa AF_ALG — fallisce con EAFNOSUPPORT perché systemd la applica tramite BPF collegato al cgroup che l'applicazione non può disabilitare. Il drop-in rimuove anche CAP_SYS_ADMIN e applica ProtectKernel* per chiudere i percorsi di escalation più comuni.

Applica con:

ansible-playbook -i inventory ansible/site.yml --check --diff   # anteprima
ansible-playbook -i inventory ansible/site.yml                  # applica

Per host senza Ansible, posiziona il file autonomo:

sudo ./scripts/deploy_dropin.sh nginx.service

3. Auditor dello stato del kernel

auditor/crypto_auditor.py produce un report JSON della postura di sicurezza ispezionando:

  • /proc/crypto — ogni cipher / hash / aead registrato, con flag FIPS e stato dei self-test.
  • /sys/module/ — moduli caricati nel sottosistema crittografico, con flag di taint e snapshot dei parametri.
  • /proc/sys/kernel/, /proc/sys/user/ — sysctl che controllano i percorsi di attacco AF_ALG.
  • /sys/kernel/security/lockdown — modalità di lockdown del kernel.

Il report è indicizzato da ID di finding stabili (FND-001 fino a FND-005 al momento) così le regole SIEM possono sopprimere singoli finding senza scartare l'intero documento. Il rilevamento di drift confronta la postura con una baseline:

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

Lo schema si trova in schemas/audit_report.schema.json (Draft 2020-12) e viene validato in CI a ogni push.

4. Integrazione continua

.github/workflows/ci.yml esegue quattro job a ogni push e PR:

  1. ShellCheck — ogni *.sh e script con shebang.
  2. Validazione schema — metaschema-check su audit_report.schema.json, poi esegue l'auditor live sul kernel del runner GH e valida il report risultante. Vengono controllate anche le fixture in tests/fixtures/.
  3. Lint Python (ruff check .).
  4. Lint Ansible sull'albero del ruolo.

Un controllo schema fallito blocca i merge, impedendo ai parser SIEM a valle di rompersi su un campo rinominato silenziosamente.

Guida operativa per il SOC

Regole di rilevamento da sovrapporre

  • Qualsiasi evento af_alg_socket_create da un comm non in allowlist — pagina alla prima occorrenza, non aggregare.
  • Nuova voce in crypto_modules tra esecuzioni consecutive dell'auditor su un host dove il caricamento dei moduli dovrebbe essere congelato.
  • Qualsiasi sysctl con hardened=false dopo un run del playbook di hardening — indica manomissione manuale o drift da un sistema di configurazione parallelo.
  • Il campo lockdown che transita da integrity/confidentiality a none — forte indicatore di manomissione dello stato del kernel.

Piano di rollout (consigliato)

Scarica lo strumento