
Cadre de déploiement de conteneurs durci avec liste blanche d'appels système seccomp et télémétrie eBPF pour détecter et bloquer les tentatives d'évasion de conteneur et de corruption ULP du noyau.
Un cadre de confinement de conteneurs et de télémétrie de sécurité d'exécution de niveau entreprise, appliquant une défense en profondeur. Conçu du point de vue d'un architecte de cybersécurité principal chez Cisco, l'architecture Charantej isole les environnements de staging, restreint les surfaces d'appels système et instrumente la télémétrie temps réel du noyau à l'aide d'audits au niveau hôte pour sécuriser les déploiements de conteneurs Linux modernes.
L'architecture Charantej impose l'isolation, le confinement à moindre privilège et une surveillance hors bande pour garantir que les limites de sécurité restent résistantes aux vecteurs de compromission du noyau hôte.
flowchart TD
subgraph HostOS ["Host OS (Secured Linux Node)"]
subgraph Docker ["Docker Container Runtime"]
App["Audited App Namespace"]
end
subgraph Auditor ["Host Auditor (Falco Engine)"]
eBPF["eBPF Probes"]
end
Kernel["Host Linux Kernel"]
end
SIEM["SIEM / Log Repository"]
App -->|System Calls| Kernel
Kernel -->|Trace Events| eBPF
eBPF --> Auditor
Auditor -->|Telemetry Logs| SIEM
style HostOS fill:#1e1e1e,stroke:#333,stroke-width:2px
style Docker fill:#2a2a2a,stroke:#007bff,stroke-width:2px
style Auditor fill:#2a2a2a,stroke:#dc3545,stroke-width:2px
style Kernel fill:#333,stroke:#ffc107,stroke-width:2px
style SIEM fill:#1e1e1e,stroke:#28a745,stroke-width:2px,stroke-dasharray: 5 5CAP_SYS_ADMIN, CAP_NET_ADMIN, CAP_NET_RAW, etc.) pour bloquer les manipulations réseau brutes au niveau système.La conception de bas niveau définit la logique opérationnelle de validation des appels système, les chemins de filtrage et les points de terminaison de surveillance dans la limite du noyau.
flowchart TD
subgraph ContainerSpace ["Container Namespace (User Space)"]
App["Audited Process"]
end
subgraph SeccompBoundary ["Seccomp Syscall Filter Boundary"]
Syscall["Syscall Invocation"]
Filter{"Syscall in Whitelist?"}
Block["SCMP_ACT_ERRNO (Block & Fail)"]
Allow["Allow & Pass"]
end
subgraph KernelSpace ["Linux Host Kernel Space"]
Handler["System Call Handler"]
Subsystem["Target Subsystem (e.g., Network/Memory)"]
end
subgraph TelemetryLayer ["Host Auditing Layer"]
eBPF["eBPF Probe Instrumentation"]
Falco{"Event Matches Rule?"}
Alert["Log syslog / SIEM Alarm"]
end
App -->|1. Invokes Syscall| Syscall
Syscall --> Filter
Filter -->|No: e.g., setsockopt/socket| Block
Filter -->|Yes: e.g., read/write| Allow
Allow --> Handler
Handler --> Subsystem
Handler -->|2. Traces Execution| eBPF
eBPF --> Falco
Falco -->|Yes| AlertL'architecture Charantej est composée de trois couches de configuration interconnectées pour imposer les limites de sécurité.
La configuration d'orchestration implémente les contrôles de sécurité suivants directement via des indicateurs d'exécution :
--cap-drop=ALL : Supprime toutes les capacités Linux par défaut, empêchant le conteneur d'obtenir des privilèges d'administration de bas niveau.--security-opt no-new-privileges:true : Empêche les processus enfants d'obtenir plus de privilèges que leur processus parent via les binaires setuid ou setgid.--security-opt seccomp=seccomp-profile.json : Implémente le filtrage des appels système sur liste blanche.seccomp-profile.json)Par défaut, le filtre seccomp de Docker autorise une large liste d'appels système. L'architecture Charantej restreint cette liste au minimum absolu nécessaire à l'exécution de base des processus :
SCMP_ACT_ERRNO) : Bloque tous les appels système sauf s'ils sont explicitement autorisés dans le profil.read, write, exit, exit_group, futex, nanosleep, mmap, munmap, mprotect et close).socket, les modifications réseau via setsockopt, les jonctions d'espaces de noms (setns) et les jeux de capacités (), neutralisant ainsi les tentatives non autorisées d'escalade de privilèges locaux (LPE).Les règles de traçage au niveau hôte surveillent conceptuellement les limites de processus et d'appels système :
Det_Anomalous_Networking : Audite les options de socket et déclenche une ALERTE CRITIQUE immédiate si un processus conteneurisé tente de modifier des protocoles de couche supérieure ou des propriétés ULP (optname TCP_ULP).Container_Privilege_Escalation_Attempt : Alerte sur les tentatives non autorisées de jonction d'espaces de noms (setns) ou de modification de jeux de capacités (capset).Ce référentiel inclut une simulation d'exploitation en direct pour CVE-2026-46300 afin de démontrer pratiquement l'efficacité de l'architecture Charantej. L'exploitation tente deux vecteurs :
setns().setsockopt(TCP_ULP).Un script d'assistance est fourni pour construire automatiquement l'exploitation et l'exécuter contre un conteneur non atténué (représentant un système vulnérable) et le conteneur sécurisé par Charantej.
bash run_exploit.sh
L'exploitation exécutera avec succès setns() et setsockopt(), signalant un statut « VULNÉRABLE ».
sequenceDiagram
participant App as Unprivileged App (Fragnesia Payload)
participant Cap as Capability Check (Kernel)
participant NS as /proc/self/ns/mnt (Host Namespace)
participant Sys as Syscall Interface
participant ULP as Kernel ULP Memory
Note over App,ULP: STAGE 1: Namespace Hijacking
App->>Cap: 1. setns(FD, 0)
Cap-->>App: Allowed (No cap_drop)
App->>NS: Hijack Host Namespace
NS-->>App: SUCCESS: Container Isolation Bypassed
Note over App,ULP: STAGE 2: ULP Memory Corruption (CVE-2026-46300)
App->>Sys: 2. socket(AF_INET, SOCK_STREAM, 0)
Sys-->>App: FD allocated
App->>ULP: 3. setsockopt(FD, IPPROTO_TCP, TCP_ULP, "tls")
Note right of ULP: Attempts unauthorized memory modification
ULP-->>App: SUCCESS: Malicious payload injected
Note over App,ULP: IMPACT: Host Kernel Memory Compromised!L'exploitation est interceptée. setns() est bloqué par les suppressions de capacités (EPERM), et socket() / setsockopt() sont explicitement neutralisés par la limite du filtre seccomp (ou les suppressions de capacités selon le profil d'exécution), signalant un statut « BLOQUÉ ». Cela confirme que même si la charge utile Fragnesia est exécutée, l'architecture Charantej isole de manière sécurisée l'hôte de l'exploitation.
sequenceDiagram
participant App as Unprivileged App (Fragnesia Payload)
participant Cap as Capability Drop (ALL)
participant NS as /proc/self/ns/mnt (Host Namespace)
participant Sec as Seccomp Filter Boundary
participant ULP as Kernel ULP Memory
Note over App,ULP: STAGE 1: Namespace Hijacking Attempt
App->>Cap: 1. setns(FD, 0)
Cap-->>App: BLOCKED (EPERM - Operation not permitted)
Note left of Cap: Defense Triggered: Namespace escape neutralized
Cap-xNS: Cannot reach Host Namespace
Note over App,ULP: STAGE 2: ULP Memory Corruption Attempt
App->>Sec: 2. socket() / setsockopt(TCP_ULP)
Sec-->>App: BLOCKED (EPERM - Operation not permitted)
Note left of Sec: Defense Triggered: Socket operations neutralized
Sec-xULP: Cannot reach Kernel ULP Context
Note over App,ULP: IMPACT: Exploit completely contained. Host is Safe!capset