
Framework di staging per container indurito con whitelist delle syscall seccomp e telemetria eBPF per rilevare e bloccare tentativi di fuga dal container e corruzione del kernel ULP.
Un framework di contenimento dei contenitori di livello enterprise, con difesa in profondità e telemetria di sicurezza runtime. Progettato dal punto di vista di un Lead Cybersecurity Architect Cisco, l'Architettura Charantej isola i runtime di staging, restringe le superfici delle system call e strumenta la telemetria del kernel in tempo reale utilizzando l'auditing a livello host per proteggere le moderne implementazioni di contenitori Linux.
L'Architettura Charantej impone isolamento, contenimento a privilegio minimo e monitoraggio out-of-band per garantire che i confini di sicurezza rimangano resilienti contro vettori di compromissione del kernel host.
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, ecc.) per bloccare le manipolazioni di rete a livello di sistema grezze.Il Progetto di Basso Livello definisce la logica operativa di validazione delle system call, i percorsi di filtro e gli endpoint di monitoraggio all'interno del confine del kernel.
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'Architettura Charantej è composta da tre strati di configurazione interconnessi per imporre i confini di sicurezza.
La configurazione dell'orchestrazione implementa i seguenti controlli di sicurezza direttamente tramite flag di runtime:
--cap-drop=ALL: Elimina ogni capacità predefinita del kernel Linux, impedendo al contenitore di ottenere privilegi amministrativi di basso livello.--security-opt no-new-privileges:true: Impedisce ai processi figlio di ottenere più privilegi del loro processo padre tramite binari setuid o setgid.--security-opt seccomp=seccomp-profile.json: Implementa il filtraggio delle system call con whitelist.seccomp-profile.json)Per impostazione predefinita, il filtro seccomp di Docker consente un elenco ampio di system call. L'Architettura Charantej lo restringe al minimo assoluto richiesto per l'esecuzione di base dei processi:
SCMP_ACT_ERRNO): Blocca tutte le system call a meno che non siano esplicitamente nella whitelist del profilo.read, write, exit, exit_group, futex, nanosleep, mmap, munmap, mprotect e close).socket, le modifiche di rete con setsockopt, le unioni di namespace (setns) e i set di capacità (), neutralizzando i tentativi non autorizzati di escalation dei privilegi locali (LPE).Le regole di tracciamento a livello host monitorano concettualmente i confini di processo e system call:
Det_Anomalous_Networking: Verifica le opzioni dei socket e segnala un immediato ALLARME CRITICO se un processo containerizzato tenta di modificare protocolli di livello superiore o proprietà ULP (opzione TCP_ULP).Container_Privilege_Escalation_Attempt: Avvisa su tentativi non autorizzati di unire namespace (setns) o modificare set di capacità (capset).Questo repository include una simulazione live dell'exploit per CVE-2026-46300 per dimostrare praticamente l'efficacia dell'Architettura Charantej. L'exploit tenta due vettori:
setns().setsockopt(TCP_ULP).Viene fornito uno script di supporto per costruire automaticamente l'exploit ed eseguirlo contro un contenitore non mitigato (che rappresenta un sistema vulnerabile) e il contenitore protetto da Charantej.
bash run_exploit.sh
L'exploit eseguirà con successo sia setns() che setsockopt(), riportando uno stato "VULNERABILE".
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'exploit viene intercettato. setns() viene bloccato dalla rimozione delle capacità (EPERM), e socket() / setsockopt() vengono esplicitamente neutralizzati dal confine del filtro delle system call Seccomp (o dalla rimozione delle capacità a seconda del profilo di esecuzione), riportando uno stato "BLOCCATO". Ciò conferma che anche se il payload Fragnesia viene eseguito, l'architettura Charantej isola in modo sicuro l'host dall'exploit.
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