CVE-2026-92574: CRI-O Container Checkpoint-Restore Destination Security Context Bypass
HERMES THREAT SCORE & CONTAINER BOUNDARY ESCAPE
Target:CRI-O Container Runtime β Checkpoint/Restore Logic & Pod Security Context Enforcement CVSS v3.1 rates CVE-2026-92574 as 8.8 High due to required low privileges (PR:L). Hermes Threat Score elevates this vulnerability to 91 (CRITICAL). In multi-tenant Kubernetes and OpenShift environments, the container runtime is the ultimate boundary separating untrusted tenant workloads from the shared host operating system. By subverting destination PodSecurityContext enforcement through malicious checkpoint archives, low-privileged cluster tenants can bypass all Kubernetes admission controllers, acquiring raw CAP_SYS_ADMIN capabilities on the underlying cluster node.
HASS AGENTIC SEVERITY & AUTONOMOUS SANDBOX BREAKOUT
Target:Container Sandboxing for Autonomous Agent Execution & Code Interpreters CVE-2026-92574 carries acute consequences for agentic AI architectures. Enterprise AI agents that run arbitrary generated code or execute user-provided tools are routinely deployed inside isolated Kubernetes pods governed by strict 'restricted' Pod Security Standards. If an agent workflow or malicious prompt manipulates checkpoint/restore triggers, the agent can escape its confined runtime pod and compromise the host node, exposing neighboring GPU workloads, vector memory databases, and infrastructure secrets.
CVE-2026-92574: CRI-O Container Checkpoint-Restore Destination Security Context BypassVULNERABILITY
Software platform affected by security vulnerabilities and agentic attack patterns.
π Why is this related? (Evidence & Provenance)
“Confirmed security vulnerability in Check Point Security Management Server & Gaia OS documented in Hermes dossier.”
- [vulnerability_report]
- [government_confirmation]CISA verified active exploitation in the wild and mandated federal remediation deadline in KEV entry. — Source: Cybersecurity & Infrastructure Security Agency (CISA): CISA Adds CVE-2026-59822 to Known Exploited Vulnerabilities Catalog (Reliability: VERY_HIGH)
1. Technical Context & Attack Surface
Section titled β1. Technical Context & Attack SurfaceβContainer checkpointing allows taking a point-in-time snapshot of running container processes and saving their memory state, file descriptors, IPC, and kernel namespaces into a compressed archive (checkpoint-<container>.tar). Later, an operator or automated controller can restore this checkpoint into a newly scheduled pod.
βββββββββββββββββββββββββββββ 1. Create Pod with Checkpoint Ref ββββββββββββββββββββββββββββββββ Low-Privileged Tenant β ββββββββββββββββββββββββββββββββββββββββββ> β Kubernetes API Server ββ (Restricted Namespace) β β (Validates Spec: Restricted)ββββββββββββββββββββββββββββββ ββββββββββββββββ¬βββββββββββββββ β 2. Kubelet Dispatches CRI CallβΌ βββββββββββββββββββββββββββββββ β CRI-O Runtime Daemon (Host) β ββββββββββββββββ¬βββββββββββββββ β 3. Deserializes Checkpoint βΌ βββββββββββββββββββββββββββββββ β CRIU Restore Handler β β [X] Ignores Destination PSC β β [X] Retains Source Caps β ββββββββββββββββ¬βββββββββββββββ β 4. Spawns Restored Container βΌ βββββββββββββββββββββββββββββββ β Container Runs with β β CAP_SYS_ADMIN + Host Root β ββββββββββββββββ¬βββββββββββββββ β 5. Mounts Host /proc or /sys βΌ βββββββββββββββββββββββββββββββ β Full Node Host Compromise β βββββββββββββββββββββββββββββββAttack Vector Requirements
Section titled βAttack Vector Requirementsβ| Requirement | Condition | Exploit Implications |
|---|---|---|
| CRI-O Feature Gate | ContainerCheckpoint enabled | Required to expose the restore API endpoints |
| User Privileges | Pod creation in any namespace (PR:L) | Normal developer or tenant service account |
| Admission Controls | Pod Security Standards / Kyverno | Bypassed: Admission sees a compliant pod spec, but runtime restores privileged state |
| Host Impact | Kernel capabilities retained | CAP_SYS_ADMIN, CAP_DAC_OVERRIDE, unrestricted /proc access |
2. Root Cause Analysis & Exploit Mechanics
Section titled β2. Root Cause Analysis & Exploit MechanicsβThe vulnerability is rooted in a failure of security state reconciliation during container re-creation in CRI-Oβs restore handler.
Vulnerable Logic Deconstruction
Section titled βVulnerable Logic DeconstructionβWhen CRI-O restores a container, it creates a new OCI runtime specification based on the destination podβs configuration, but then hands control over to CRIU using checkpoint configuration data:
// Vulnerable logic pattern in CRI-O server/container_restore.go (versions < 1.34.3)func (s *Server) restoreContainer(ctx context.Context, req *pb.RestoreContainerRequest) (*pb.RestoreContainerResponse, error) { checkpointMeta, err := s.loadCheckpointMetadata(req.CheckpointPath) if err != nil { return nil, err }
// Destination Pod security configuration targetSpec := s.generatePodSpec(req.PodSandboxId)
// FLAW: CRI-O re-applies serialized process capabilities and security flags // from the checkpoint archive, overwriting targetSpec.Process.Capabilities! if checkpointMeta.ProcessConfig != nil { targetSpec.Process.Capabilities = checkpointMeta.ProcessConfig.Capabilities targetSpec.Process.NoNewPrivileges = checkpointMeta.ProcessConfig.NoNewPrivileges targetSpec.Linux.Seccomp = checkpointMeta.ProcessConfig.Seccomp }
// Container is instantiated with the checkpointed (privileged) capabilities! return s.runtime.RestoreContainer(ctx, targetSpec, req.CheckpointPath)}Exploit Sequence
Section titled βExploit Sequenceβ- Checkpoint Crafting: The attacker takes a legitimate checkpoint of a container running in an environment where they have administrative rights, or manually unpacks and edits
checkpoint.tarto inject:Bounding:["CAP_SYS_ADMIN", "CAP_DAC_OVERRIDE", "CAP_NET_ADMIN"]NoNewPrivileges:falseSeccompProfile:unconfined
- Pod Manifest Submission: The attacker submits a Kubernetes Pod manifest targeting a restricted tenant namespace. The manifest specifies a standard unprivileged security context:
securityContext:allowPrivilegeEscalation: falsecapabilities:drop: ["ALL"]runAsNonRoot: true
- Admission Gate Approval: Validating Admission Controllers (Kyverno, Gatekeeper, Pod Security Admission) inspect the manifest, verify full compliance with the
restrictedprofile, and admit the pod. - Runtime Security Inversion: CRI-O loads the checkpoint archive to restore the process. Because of the bug, the checkpointβs raw process capabilities override the pod specification.
- Host Node Takeover: The container begins execution with full
CAP_SYS_ADMIN. The attacker mounts the host root cgroup or usesnsenterto escape to the host nodeβs root shell.
3. Forensic Investigation & Triage Playbook
Section titled β3. Forensic Investigation & Triage PlaybookβDFIR analysts responding to suspected container runtime breakouts must correlate Kubernetes control plane audit records with node-level CRI-O logs and kernel capability usage.
Log Analysis & Forensic Artifacts
Section titled βLog Analysis & Forensic Artifactsβ- Kubernetes API Audit Logs: Look for pod creation requests referencing checkpoint restore volumes or annotation-based restore triggers:
{"verb": "create","resource": "pods","user": { "username": "developer-tenant" },"objectRef": { "namespace": "dev-sandbox", "name": "stateful-worker-0" },"requestObject": {"metadata": {"annotations": {"io.kubernetes.cri-o.restore-path": "/var/lib/kubelet/checkpoints/malicious.tar"}}}}
- CRI-O Systemd Journal: Check
/var/log/messagesorjournalctl -u crio:crio[2310]: time="..." level=info msg="Restoring container 8fa10c... from checkpoint /tmp/checkpoint-payload.tar"crio[2310]: time="..." level=warning msg="Overriding process capabilities from checkpoint metadata" - Linux Auditd (
/var/log/audit/audit.log): Identify unprivileged container processes executing sensitive syscalls requiringCAP_SYS_ADMIN(e.g.,sys_mount,bpf,ptrace):type=SYSCALL msg=audit(1726992000.124:9482): arch=c000003e syscall=165 success=yes exit=0ppid=2310 pid=34892 auid=4294967295 uid=1001 comm="sh" exe="/bin/busybox"cap_effective=000001ffffffffff
4. Detection Engineering (SIEM & Sigma)
Section titled β4. Detection Engineering (SIEM & Sigma)βSIEM Detection (Sigma Rule)
Section titled βSIEM Detection (Sigma Rule)βtitle: CRI-O Container Checkpoint Security Context Overrideid: 9a4f21b8-3d7c-481e-b619-cve20269257401status: experimentaldescription: Detects CRI-O container restorations where the effective process capabilities exceed the granted Kubernetes PodSecurityContext, indicating CVE-2026-92574 exploitation.references: - https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2026-92574 - https://nvd.nist.gov/vuln/detail/CVE-2026-92574author: Hermes Codex Intelligencedate: 2026-09-22logsource: category: process_creation product: linuxdetection: selection_runtime: ParentImage|endswith: - '/crio' - '/crio-runc' - '/conmon' selection_caps: CommandLine|contains: - 'cap_sys_admin' - 'cap_net_admin' - 'cap_dac_override' selection_namespace_mismatch: Environment|contains: 'KUBERNETES_SERVICE_HOST' condition: selection_runtime and selection_caps and selection_namespace_mismatchlevel: criticaltags: - attack.privilege_escalation - attack.t1611 - cve.2026-92574KubeAudit| where TimeGenerated >= ago(24h)| where Verb == "create" and ObjectRef_Resource == "pods"| extend Annotations = tostring(RequestObject.metadata.annotations)| where Annotations has "checkpoint" or Annotations has "restore"| extend DropCaps = tostring(RequestObject.spec.containers[0].securityContext.capabilities.drop)| project TimeGenerated, PodName = ObjectRef_Name, Namespace = ObjectRef_Namespace, User = User_Username, Annotations, DropCaps5. Mitigation & Hardening Roadmap
Section titled β5. Mitigation & Hardening RoadmapβImmediate Patching
Section titled βImmediate Patchingβ- Upgrade CRI-O to
1.34.3or apply Red Hat Security Errata for OpenShift4.17+. - In patched versions, CRI-O enforces an immutable security filter: the destination Podβs
PodSecurityContextacts as an absolute ceiling, discarding any capabilities in the checkpoint archive that exceed the destination manifest.
Operational Workarounds
Section titled βOperational Workaroundsβ- Disable Container Checkpointing: If checkpoint/restore is not required for production state migration, disable the feature in the CRI-O daemon configuration (
/etc/crio/crio.conf):[crio.runtime]enable_pod_container_checkpoint = false - Kubelet Node Restriction: Restrict checkpoint directory permissions on worker nodes so that unprivileged pods cannot read or write arbitrary checkpoint tar archives:
Terminal window chmod 700 /var/lib/kubelet/checkpoints - Runtime Enforcers (eBPF): Deploy Tetragon or Falco with rules blocking container processes in user namespaces from acquiring
CAP_SYS_ADMINor issuingmountsyscalls.