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

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense- — Neutralizzazione delle CVE attive del kernel Linux di CISA (CVE-2025-39964, CVE-2026-53266, CVE-2025-39682) tramite eBPF moderno, disarmo dei moduli e user namespace di containerd. | Kitploit
Strumenti/GitHubGitHub/mc493/linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-
Strumenti DifensiviSicurezza dei ContenitoriAnalisi delle VulnerabilitàDevSecOpsRisposta agli Incidenti
GitHubmc493/linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-

linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-

Neutralizzazione delle CVE attive del kernel Linux di CISA (CVE-2025-39964, CVE-2026-53266, CVE-2025-39682) tramite eBPF moderno, disarmo dei moduli e user namespace di containerd.

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 →
Vedi Repository
51 giorno faNon ancora revisionato
Condividi

Difesa Zero-Day del Kernel Linux senza Downtime: Controlli Compensativi a Livelli tramite Telemetria eBPF, Disarmo dei Moduli e User Namespaces

Quando la Cybersecurity and Infrastructure Security Agency (CISA) aggiunge vulnerabilità critiche del kernel Linux al suo catalogo Known Exploited Vulnerabilities (KEV), per i team infrastrutturali e gli SRE lead inizia un conto alla rovescia operativo urgente:

Il Gap delle Patch Upstream:
La durata tra la weaponizzazione pubblica di uno zero-day in-the-wild e la disponibilità di pacchetti kernel binari firmati e testati dalle distribuzioni enterprise (Ubuntu HWE, Debian, RHEL) è tipicamente compresa tra 7 e 21 giorni.

Nei cluster Kubernetes di produzione, attendere passivamente i pacchetti del vendor espone i sistemi allo sfruttamento attivo, mentre upgrade del kernel prematuri o riavvii di emergenza rischiano interruzioni operative.

Questo caso di studio documenta un framework di controlli compensativi defense-in-depth progettato per gestire tre vulnerabilità concorrenti del kernel Linux (CVE-2025-39964, CVE-2026-53266, CVE-2025-39682) attraverso userspace, kernel loader e livelli runtime senza richiedere riavvii dell'host.


Matrice delle Minacce e Tassonomia delle Difese

Per garantire accuratezza operativa, le difese sono categorizzate rigorosamente in base alle loro proprietà di sicurezza (Prevenzione, Rilevamento Runtime e Contenimento):

VulnerabilitàSottosistemaMeccanismo di AttaccoGravitàModalità di DifesaMeccanismo di Implementazione
CVE-2026-53266Netfilter Bridging (ebtables)Overflow aritmetico nelle regole di riscrittura della tabella ARP del bridgeAlta (Memory Corruption)Prevenzione (Disarmo)Espulsione dalla RAM (modprobe -r) + override del loader (/bin/true)
CVE-2025-39964Crypto Netlink (AF_ALG)Troncamento di interi nell'allocazione dei socket crypto netlinkAlta (LPE / Breakout)Rilevamento (eBPF) / GatingeBPF moderno (sys_enter_socket, domain 38) + SECCOMP
CVE-2025-39682Kernel TLS (kTLS)Flaw nell'elaborazione di record a lunghezza zero in TCP ULPAlta (Kernel Panic / Heap)Rilevamento (eBPF)eBPF moderno (sys_enter_setsockopt, TCP_ULP 31 & SOL_TLS 282)

Architettura di Difesa a Livelli Defense-in-Depth

root@kitploit:~
flowchart TD
    subgraph Ring3 ["User Space / Container Pod (Ring 3)"]
        Workload["Container Workload / Untrusted Process"]
        Probe["Exploit Vectors: socket(AF_ALG) or setsockopt(TCP_ULP)"]
        Workload --> Probe
    end

    subgraph Ring0 ["Linux Kernel (Ring 0)"]
        SyscallTrap["Syscall Trap (sysenter)"]
        Probe --> SyscallTrap
        
        Tracepoint["Kernel Tracepoint: sys_enter"]
        SyscallTrap --> Tracepoint
        
        subgraph eBPFEngine ["Modern eBPF Detection (CO-RE Ring Buffer)"]
            Filter{"Syscall Gating:\n- domain == 38 (AF_ALG)\n- SOL_TCP + TCP_ULP\n- SOL_TLS (282)"}
            Tracepoint --> Filter
        end
        
        Disarmed["Modprobe Hook: /bin/true\n(ebtables evicted & blocked)"]
        UserNS["containerd v2.2.4 User Namespace Remap\nContainer UID 0 -> Host UID 4050714624\n(Bounded Credential Containment)"]
        
        Filter -- "Match (<1ms)" --> AlertRingBuf["Ring Buffer Emission"]
        Filter -- "Pass" --> KernelExec["Normal Execution Path"]
        KernelExec --> UserNS
    end

    subgraph SecurityPipeline ["Reactive Event Pipeline"]
        Falcosidekick["Falco Daemon & Sidekick (:2801)"]
        Forwarder["Event Forwarder Daemon (:9876)"]
        NATSBus["NATS Security Bus (sovereign.security.alert)"]
        
        AlertRingBuf --> Falcosidekick
        Falcosidekick --> Forwarder
        Forwarder --> NATSBus
    end

    subgraph Enforcement ["Automated Remediation & Audit"]
        Remediator["Dynamic Bouncer (CrowdSec / nftables Drop)"]
        AuditLedger["Cryptographically Tamper-Evident Hash Chain\n(SHA-256 Chaining & Cross-Node Replication)"]
        
        NATSBus --> Remediator
        NATSBus --> AuditLedger
    end

    classDef danger fill:#ffdddd,stroke:#ff0000,stroke-width:2px;
    classDef safe fill:#ddffdd,stroke:#00aa00,stroke-width:2px;
    classDef arch fill:#f0f4f8,stroke:#0066cc,stroke-width:1px;
    class Probe danger;
    class Disarmed,UserNS,AuditLedger safe;

Livello 1: Disarmo dei Moduli del Kernel (Preventivo)

1. La Sfumatura Operativa: Memoria Attiva vs. Probing Futuro

Una trappola comune con gli override in /etc/modprobe.d/ è che install /bin/true blocca solo i tentativi di caricamento successivi del modulo. Se il bridge networking (Docker, CNI legacy) ha caricato ebtables prima nel ciclo di vita dell'host, il codice vulnerabile rimane attivo nella RAM del kernel.

Il disarmo senza downtime richiede una sequenza in due passaggi:

  1. Espulsione: Scaricare i moduli attualmente residenti dalla memoria del kernel.
  2. Sigillatura: Configurare gli override del loader /bin/true per impedire il ricaricamento.

2. Implementazione

root@kitploit:~
# Step A: Evict active ebtables modules from running kernel RAM
sudo modprobe -r ebtable_nat ebtable_filter ebtable_broute ebt_snat ebt_dnat ebt_arpreply ebtables 2>/dev/null || true

# Step B: Seal the loader via /etc/modprobe.d/blacklist-ebtables.conf
sudo tee /etc/modprobe.d/blacklist-ebtables.conf << 'EOF'
# Mitigation for CVE-2026-53266: Netfilter ARP table corruption
install ebtables /bin/true
install ebtable_nat /bin/true
install ebtable_broute /bin/true
install ebtable_filter /bin/true
install ebt_snat /bin/true
install ebt_dnat /bin/true
install ebt_arpreply /bin/true

blacklist ebtables
blacklist ebtable_nat
blacklist ebt_snat
blacklist ebt_arpreply
EOF

3. Verifica

root@kitploit:~
# Test explicit loading:
$ sudo modprobe ebt_snat
$ lsmod | grep ebt
# Output: (Empty - 0 modules resident in kernel memory)

Livello 2: Telemetria delle Syscall eBPF e Gating Comportamentale (Rilevamento)

1. Rilevamento vs. Prevenzione Inline

  • Falco eBPF (EDR Asincrono): Aggancia sys_enter tramite ring buffer eBPF moderni, fornendo alerting sub-millisecondo verso SIEM/NATS. È ottimizzato per visibilità a overhead zero senza modificare il flusso di controllo del kernel.
  • Blocco Inline (LSM Sincrono): Per ambienti che richiedono il rifiuto sincrono (-EACCES), una sonda eBPF LSM o un profilo SECCOMP può scartare la syscall prima dell'esecuzione.

2. Meccanica Corretta delle Syscall kTLS (Gating a Due Fasi)

L'abilitazione del Kernel TLS su una connessione TCP avviene in due fasi distinte:

  1. Fase 1 (Aggancio): setsockopt(fd, SOL_TCP=6, TCP_ULP=31, "tls", 4) aggancia l'Upper Layer Protocol.
  2. Fase 2 (Configurazione): setsockopt(fd, SOL_TLS=282, TLS_TX/TLS_RX, ...) inizializza le chiavi crittografiche.

Filtrare esclusivamente su SOL_TLS (282) manca la fase di aggancio dell'ULP. La regola valuta entrambe le fasi:

root@kitploit:~
# falco-rules-kernel-cve.yaml
customRules:
  rules-kernel-cve.yaml: |-
    - rule: Detect AF_ALG Crypto Socket Creation (CVE-2025-39964)
      desc: Detects creation of Crypto API Netlink sockets used in local privilege escalation
      condition: evt.type = socket and evt.rawarg.domain = 38
      output: "Active Exploit Probe: AF_ALG socket requested (domain=%evt.rawarg.domain type=%evt.rawarg.type user=%user.name proc=%proc.name container=%container.id)"
      priority: WARNING
      tags: [cve, zero-day, cve-2025-39964, crypto, container_escape]

    - rule: Detect Container Kernel TLS Activation (CVE-2025-39682)
      desc: Detects container workloads attaching kTLS TCP_ULP or configuring SOL_TLS
      condition: container.id != host and evt.type = setsockopt and 
                 ((evt.rawarg.level = 6 and evt.rawarg.optname = 31) or (evt.rawarg.level = 282))
      output: "Container kTLS Activation Detected (level=%evt.rawarg.level optname=%evt.rawarg.optname user=%user.name proc=%proc.name container=%container.name)"
      priority: WARNING
      tags: [cve, zero-day, cve-2025-39682, ktls, tcp_ulp]

3. Stabilità in Produzione: Invariante del Filtro ABI su Linux 7.0

Sui kernel Linux moderni (Linux 7.0+ HWE), il motore inspector userspace di Falco (sinsp) incontra disallineamenti nel parsing dei registri sui parametri di openat (sinsp_exception: could not parse param 2 (name)).

Per garantire la stabilità continua del DaemonSet senza crash loop:

root@kitploit:~
falco:
  base_syscalls:
    custom_set: ['!openat']

4. (Opzionale) Blocco Inline Sincrono tramite SECCOMP

Se i workload nei container devono essere rigorosamente vietati dal chiamare AF_ALG, applicare un profilo SECCOMP che restituisce SCMP_ACT_ERRNO:

root@kitploit:~
{
  "defaultAction": "SCMP_ACT_ALLOW",
  "syscalls": [
    {
      "names": ["socket"],
      "action": "SCMP_ACT_ERRNO",
      "args": [
        {
          "index": 0,
          "value": 38,
          "op": "SCMP_CMP_EQ"
        }
      ]
    }
  ]
}

Livello 3: Isolamento degli User Namespace (Contenimento)

1. Escalation Limitata vs. Scrittura Ring-0 Arbitraria

  • Escalation di Privilegi Limitata: La maggior parte delle LPE Netlink/socket sfrutta flaw logici del kernel per acquisire root all'interno della struct delle credenziali del processo (current->cred).
  • La Difesa UserNS: In containerd v2.2.4 con Kubernetes CRI v1.30 (hostUsers: false), il root del container (UID 0) è mappato su un range host non privilegiato (host UID 4050714624). Le escalation di credenziali limitate rimangono confinate all'interno del namespace non-root.
  • Confine Realistico: Le vulnerabilità di scrittura arbitraria completa in ring-0 (controllo diretto dell'instruction pointer del kernel o delle page table) possono aggirare i confini degli user namespace; tali minacce richiedono isolamento a livello microVM o hypervisor (es. Firecracker, Kata).

2. Configurazione del Workload

root@kitploit:~
apiVersion: v1
kind: Pod
metadata:
  name: hardened-workload
spec:
  runtimeClassName: runc
  hostUsers: false  # Remaps container root away from host root
  containers:
  - name: app
    image: app:latest

3. Verifica sull'Host

root@kitploit:~
$ cat /proc/$(pgrep -f hardened-workload)/uid_map
         0 4050714624      65536

Livello 4: Catena di Audit Crittografica Tamper-Evident

1. Tamper-Evidence vs. WORM Hardware

I file di log locali su un host compromesso possono teoricamente essere modificati se un attaccante ottiene l'esecuzione illimitata in ring-0. La vera immutabilità richiede supporti fisici write-once o distribuzione crittografica:

  1. Concatenamento Sequenziale SHA-256: Ogni record si lega all'hash del record precedente: $$\text{Hash}n = \mathcal{H}\left(n \parallel \text{Timestamp} \parallel \text{Topic} \parallel \text{Payload} \parallel \text{Hash}{n-1}\right)$$
  2. Replicazione Cross-Node: I log sono trasmessi in streaming attraverso NATS e replicati su un nodo di attestazione indipendente (192.0.2.52), impedendo la riscrittura unilaterale dei log da parte di un singolo host compromesso.

2. Esempio di Record della Catena

root@kitploit:~
{
  "index": 386200,
  "timestamp": "2026-09-22T08:58:36.564478+00:00",
  "topic": "sovereign.security.alert",
  "prev_hash": "b2f6ef1e467cf8402da283f58e470ee64993a479a957a0914ec8c351be7fa83d",
  "hash": "cece8f9bd8839d3753232dd7e504c538a0f58fe0bcf2e260fbefb7d27e77b8cf",
  "data": {
    "output": "Active Exploit Probe: AF_ALG socket requested (domain=38 type=5 user=root ...)",
    "priority": "Warning",
    "rule": "Detect AF_ALG Crypto Socket Creation (CVE-2025-39964)"
  }
}

Verifica Empirica e Telemetria

La validazione è stata condotta utilizzando un'allocazione sintetica di socket AF_ALG in un container di test non privilegiato:

root@kitploit:~
import socket
# Requests AF_ALG Netlink family (domain 38, SOCK_SEQPACKET 5)
s = socket.socket(38, socket.SOCK_SEQPACKET, 0)

Ciclo di Vita dell'Evento:

  1. Syscall del Kernel: socket(38, 5, 0) invoca sys_enter_socket.
  2. Valutazione eBPF (< 1ms): Il tracepoint eBPF moderno valuta domain == 38 e invia l'evento al ring buffer.
  3. Dispatch nella Pipeline (2ms): Falco emette l'alert verso il webhook di Falcosidekick (:9876).
  4. Distribuzione NATS (4ms): Il daemon forwarder trasmette l'evento a sovereign.security.alert.
  5. Sigillatura del Ledger (12ms): Il daemon di audit aggiunge il record alla catena crittografica SHA-256.
  6. Validazione Crittografica:
    root@kitploit:~
    $ python3 fsm_audit_vault.py --verify
    # Verified 386,213 records. Zero tampering detected.
    

Struttura del Repository e Artefatti Distribuibili

Questo repository include configurazioni pronte per la produzione per il deployment immediato:

root@kitploit:~
|-- etc/
|   \-- modprobe.d/
|       \-- blacklist-ebtables.conf     # Modprobe loader override
|-- helm/
|   |-- falco-rules-kernel-cve.yaml     # Falco modern eBPF rules (CO-RE)
|   \-- README.md                       # One-line Helm deployment guide
|-- k8s/
|   \-- pod-userns-hardened.yaml        # containerd v2.2.4 UserNS manifest
|-- scripts/
|   |-- evict-and-harden.sh             # Two-step module eviction & sealing
|   \-- verify-mitigation.sh            # Automated verification & CI test suite
|-- seccomp/
|   \-- seccomp-block-af-alg.json       # Inline SECCOMP blocking profile (EACCES)
|-- vault/
|   \-- audit_vault.py                  # Cryptographic SHA-256 hash-chain engine
|-- README.md
\-- LICENSE

Considerazioni per SRE e Architetti di Sistemi

  1. I Controlli Compensativi Colmano il Gap delle Patch: Quando zero-day attivi del kernel vengono weaponizzati, distribuire immediatamente controlli su loader e runtime mentre si attende la verifica dei pacchetti upstream della distribuzione.
  2. L'Espulsione dei Moduli Attivi è Obbligatoria: Gli override di modprobe influenzano solo le richieste future del loader; verificare sempre la memoria in esecuzione tramite lsmod ed espellere esplicitamente i moduli residenti (modprobe -r).
  3. Gating a Due Fasi per kTLS: Le regole di sicurezza per kTLS devono valutare sia l'aggancio di TCP_ULP (SOL_TCP=6, optname=31) sia l'inizializzazione delle opzioni (SOL_TLS=282).
  4. Gli User Namespace Limitano l'Escalation di Privilegi: Abbinare i workload Kubernetes con gli user namespace di containerd (hostUsers: false) impedisce che l'escalation di privilegi a livello container rivendichi banalmente il root ring-0 dell'host.
  5. Disaccoppiare l'EDR dall'Enforcement Inline: Utilizzare eBPF asincrono (Falco) per l'osservabilità del cluster a basso overhead, e LSM / SECCOMP sincroni quando la terminazione a microsecondi zero è obbligatoria.

Mantenuto dal Sovereign Systems & Security Architecture Team.
Testato in Produzione su Linux HWE & Kubernetes CRI v1.30 (containerd v2.2+).

Scarica lo strumento