Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Soumettre
OutilsExploitsBlog
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
linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense- — Neutralisation des CVE actives du noyau Linux de la CISA (CVE-2025-39964, CVE-2026-53266, CVE-2025-39682) via eBPF moderne, désarmement de modules et espaces de noms utilisateur containerd. | Kitploit
Outils/GitHubGitHub/mc493/linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-
Outils DéfensifsSécurité des ConteneursAnalyse des VulnérabilitésDevSecOpsRéponse aux Incidents
GitHubmc493/linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-

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

Neutralisation des CVE actives du noyau Linux de la CISA (CVE-2025-39964, CVE-2026-53266, CVE-2025-39682) via eBPF moderne, désarmement de modules et espaces de noms utilisateur containerd.

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 →
Voir le dépôt
6il y a 1 jourPas encore vérifié
Partager

Défense zero-day du noyau Linux sans interruption de service : contrôles compensatoires en couches via la télémétrie eBPF, le désarmement des modules et les espaces de noms utilisateur

Lorsque la Cybersecurity and Infrastructure Security Agency (CISA) ajoute des vulnérabilités critiques du noyau Linux à son catalogue Known Exploited Vulnerabilities (KEV), une horloge opérationnelle urgente commence à tourner pour les équipes d'infrastructure et les responsables SRE :

L'écart de correctif amont :
Le délai entre l'armement public d'un zero-day exploité en conditions réelles et la disponibilité de paquets binaires du noyau testés et signés par les distributions d'entreprise (Ubuntu HWE, Debian, RHEL) s'étend généralement de 7 à 21 jours.

Dans les clusters Kubernetes de production, attendre passivement les paquets des fournisseurs expose les systèmes à une exploitation active, tandis que des mises à niveau prématurées du noyau ou des redémarrages d'urgence risquent des interruptions de service.

Cette étude de cas documente un cadre de contrôles compensatoires de défense en profondeur conçu pour gérer trois vulnérabilités concurrentes du noyau Linux (CVE-2025-39964, CVE-2026-53266, CVE-2025-39682) à travers l'espace utilisateur, le chargeur du noyau et les couches d'exécution, sans nécessiter de redémarrage de l'hôte.


Matrice des menaces et taxonomie des défenses

Pour garantir l'exactitude opérationnelle, les défenses sont catégorisées strictement selon leurs propriétés de sécurité (, et ) :

Prévention
Détection à l'exécution
Confinement
VulnérabilitéSous-systèmeMécanisme d'attaqueSévéritéMode de défenseMécanisme d'implémentation
CVE-2026-53266Pontage Netfilter (ebtables)Débordement arithmétique dans les règles de réécriture de la table ARP du pontÉlevée (Corruption mémoire)Prévention (Désarmement)Éviction de la RAM (modprobe -r) + substitution du chargeur (/bin/true)
CVE-2025-39964Crypto Netlink (AF_ALG)Troncature d'entier dans l'allocation de socket crypto netlinkÉlevée (LPE / Évasion)Détection (eBPF) / FiltrageeBPF moderne (sys_enter_socket, domaine 38) + SECCOMP
CVE-2025-39682TLS du noyau (kTLS)Faille de traitement des enregistrements de longueur nulle dans TCP ULPÉlevée (Panique du noyau / Tas)Détection (eBPF)eBPF moderne (sys_enter_setsockopt, TCP_ULP 31 & SOL_TLS 282)

Architecture de défense en profondeur par couches

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;

Couche 1 : Désarmement des modules du noyau (Préventif)

1. La nuance opérationnelle : mémoire active vs. sondage futur

Un piège courant avec les substitutions dans /etc/modprobe.d/ est que install /bin/true ne bloque que les tentatives de chargement de module ultérieures. Si le pontage réseau (Docker, CNI hérité) a chargé ebtables plus tôt dans le cycle de vie de l'hôte, le code vulnérable reste actif dans la RAM du noyau.

Le désarmement sans interruption de service nécessite une séquence en deux étapes :

  1. Éviction : Décharger les modules actuellement résidents de la mémoire du noyau.
  2. Scellement : Configurer les substitutions du chargeur /bin/true pour empêcher le rechargement.

2. Implémentation

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. Vérification

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

Couche 2 : Télémétrie des appels système eBPF et filtrage comportemental (Détection)

1. Détection vs. prévention en ligne

  • Falco eBPF (EDR asynchrone) : Se branche sur sys_enter via les tampons circulaires eBPF modernes, fournissant une alerte inférieure à la milliseconde vers le SIEM/NATS. Il est optimisé pour une visibilité sans surcoût sans modifier le flux de contrôle du noyau.
  • Blocage en ligne (LSM synchrone) : Pour les environnements nécessitant un rejet synchrone (-EACCES), une sonde eBPF LSM ou un profil SECCOMP peut rejeter l'appel système avant son exécution.

2. Mécanique corrigée des appels système kTLS (filtrage en deux phases)

L'activation du TLS du noyau sur une connexion TCP se produit en deux phases distinctes :

  1. Phase 1 (Attachement) : setsockopt(fd, SOL_TCP=6, TCP_ULP=31, "tls", 4) attache le protocole de couche supérieure.
  2. Phase 2 (Configuration) : setsockopt(fd, SOL_TLS=282, TLS_TX/TLS_RX, ...) initialise les clés cryptographiques.

Filtrer uniquement sur SOL_TLS (282) manque la phase d'attachement ULP. La règle évalue les deux phases :

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é en production : invariant du filtre ABI Linux 7.0

Sur les noyaux Linux modernes (Linux 7.0+ HWE), le moteur d'inspection en espace utilisateur de Falco (sinsp) rencontre des incohérences d'analyse des registres sur les paramètres de openat (sinsp_exception: could not parse param 2 (name)).

Pour garantir la stabilité continue du DaemonSet sans boucles de plantage :

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

4. (Optionnel) Blocage synchrone en ligne via SECCOMP

Si les charges de travail dans les conteneurs doivent être strictement interdites d'appeler AF_ALG, appliquez un profil SECCOMP renvoyant 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"
        }
      ]
    }
  ]
}

Couche 3 : Isolation par espace de noms utilisateur (Confinement)

1. Escalade bornée vs. écriture arbitraire en Ring-0

  • Escalade de privilèges bornée : La plupart des LPE Netlink/socket exploitent des failles logiques du noyau pour acquérir root au sein de la structure d'identifiants du processus (current->cred).
  • La défense UserNS : Dans containerd v2.2.4 avec Kubernetes CRI v1.30 (hostUsers: false), le root du conteneur (UID 0) est mappé vers une plage hôte non privilégiée (UID hôte 4050714624). Les escalades de privilèges bornées restent confinées dans l'espace de noms non-root.
  • Limite réaliste : Les vulnérabilités d'écriture arbitraire complète en ring-0 (contrôle direct du pointeur d'instruction du noyau ou des tables de pages) peuvent contourner les frontières des espaces de noms utilisateur ; de telles menaces nécessitent une isolation au niveau microVM ou hyperviseur (par ex. Firecracker, Kata).

2. Configuration de la charge de travail

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. Vérification sur l'hôte

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

Couche 4 : Chaînage d'audit cryptographiquement inviolable

1. Inviolabilité vs. WORM matériel

Les fichiers journaux locaux sur un hôte compromis peuvent théoriquement être modifiés si un attaquant obtient une exécution ring-0 sans restriction. La véritable immuabilité nécessite soit un support physique à écriture unique, soit une distribution cryptographique :

  1. Chaînage séquentiel SHA-256 : Chaque enregistrement s'engage sur le hachage de l'enregistrement précédent : $$\text{Hash}n = \mathcal{H}\left(n \parallel \text{Timestamp} \parallel \text{Topic} \parallel \text{Payload} \parallel \text{Hash}{n-1}\right)$$
  2. Réplication inter-nœuds : Les journaux sont diffusés via NATS et répliqués vers un nœud d'attestation indépendant (192.0.2.52), empêchant la réécriture unilatérale des journaux par un seul hôte compromis.

2. Exemple d'enregistrement de chaîne

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)"
  }
}

Vérification empirique et télémétrie

La validation a été effectuée à l'aide d'une allocation synthétique de socket AF_ALG dans un conteneur de test non privilégié :

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

Cycle de vie de l'événement :

  1. Appel système noyau : socket(38, 5, 0) invoque sys_enter_socket.
  2. Évaluation eBPF (< 1ms) : Le tracepoint eBPF moderne évalue domain == 38 et soumet l'événement au tampon circulaire.
  3. Distribution dans le pipeline (2ms) : Falco émet une alerte vers le webhook Falcosidekick (:9876).
  4. Distribution NATS (4ms) : Le démon Forwarder diffuse l'événement vers sovereign.security.alert.
  5. Scellement du registre (12ms) : Le démon d'audit ajoute l'enregistrement à la chaîne cryptographique SHA-256.
  6. Validation cryptographique :
    root@kitploit:~
    $ python3 fsm_audit_vault.py --verify
    # Verified 386,213 records. Zero tampering detected.
    

Structure du dépôt et artefacts déployables

Ce dépôt inclut des configurations prêtes pour la production, déployables immédiatement :

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

Points clés pour les SRE et architectes systèmes

  1. Les contrôles compensatoires comblent l'écart de correctif : Lorsque des zero-days actifs du noyau sont armés, déployez immédiatement des contrôles au niveau du chargeur et de l'exécution en attendant la vérification des paquets de la distribution amont.
  2. L'éviction des modules actifs est obligatoire : Les substitutions Modprobe n'affectent que les futures requêtes du chargeur ; vérifiez toujours la mémoire en cours d'exécution via lsmod et évincez explicitement les modules résidents (modprobe -r).
  3. Filtrage en deux phases pour kTLS : Les règles de sécurité pour kTLS doivent évaluer à la fois l'attachement TCP_ULP (SOL_TCP=6, optname=31) et l'initialisation des options (SOL_TLS=282).
  4. Les espaces de noms utilisateur bornent l'escalade de privilèges : Associer les charges de travail Kubernetes aux espaces de noms utilisateur de containerd (hostUsers: false) empêche l'escalade de privilèges au niveau du conteneur de revendiquer trivialement le root ring-0 de l'hôte.
  5. Découpler l'EDR de l'application en ligne : Utilisez l'eBPF asynchrone (Falco) pour une observabilité de cluster à faible surcoût, et le LSM synchrone / SECCOMP lorsque la terminaison en zéro microseconde est obligatoire.

Maintenu par la Sovereign Systems & Security Architecture Team.
Testé en production sur Linux HWE & Kubernetes CRI v1.30 (containerd v2.2+).

Télécharger l’outil