Detect Podman Sandbox Disabled via Malicious Image Annotation (CVE-2026-94603) in Sumo Logic CSE
Detects exploitation of CVE-2026-94603, a critical (CVSS 10.0, CWE-693 Protection Mechanism Failure) vulnerability in Podman where a crafted container image annotation can instruct `podman run` to disable nearly all sandboxing controls. Affected versions: Podman >= 4.4.0 < 5.8.8 and >= 6.0.0 < 6.1.3. A malicious image can embed annotations (e.g. run.oci.* / seccomp / apparmor / selinux keys) that cause Podman to drop seccomp profiles, AppArmor/SELinux confinement, capability bounding sets, and namespace isolation at container launch — yielding an effectively unconfined, near-host-privileged container. Detection focuses on Podman invocations pulling or running externally-sourced images followed by container processes exhibiting unconfined security context (no seccomp, unconfined AppArmor/SELinux, full capability sets, host namespace access).
MITRE ATT&CK
Sumo Detection Query
_sourceCategory=*linux* (podman)
| where _raw matches /podman\s+run/
| parse regex "podman\s+run\s+(?<podman_args>.*)" nodrop
| if(podman_args matches /(docker\.io|quay\.io|ghcr\.io|oci-archive|docker-archive|\.tar)/, 1, 0) as ext_image
| if(podman_args matches /(seccomp=unconfined|apparmor=unconfined|label=disable|--privileged|--cap-add=ALL|no-new-privileges=false)/, 1, 0) as unconfined
| where ext_image = 1 or unconfined = 1
| count by _sourceHost, podman_args, unconfined, ext_image
| sort by _count Sumo Logic search detecting podman run of external images launched with sandboxing disabled, matching CVE-2026-94603 exploitation behavior.
Data Sources
Required Tables
False Positives & Tuning
- Privileged CI/CD container builds
- Developer debugging with unconfined containers
- Container image scanning tools
Other platforms for CVE-2026-94603
Testing Methodology
Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1 Podman run external image with seccomp disabled
Expected signal: ProcessRollup/DeviceProcessEvents record for podman with command line containing 'run', 'docker.io' and 'seccomp=unconfined'; child crun/conmon process launched.
- Test 2 Podman run privileged container from archive
Expected signal: Process event for podman run referencing oci-archive and --privileged; container launched with full capability set.
- Test 3 Podman run with AppArmor and SELinux label disabled plus all capabilities
Expected signal: Process event showing apparmor=unconfined, label=disable and --cap-add=ALL in the podman run command line with an external quay.io image.
References (6)
- https://github.com/podman-container-tools/podman/security/advisories/GHSA-2cvf-wqm6-wr9g
- https://nvd.nist.gov/vuln/detail/CVE-2026-94603
- https://github.com/advisories/GHSA-2cvf-wqm6-wr9g
- https://github.com/podman-container-tools/podman/releases/tag/v5.8.8
- https://github.com/podman-container-tools/podman/releases/tag/v6.1.3
- https://github.com/podman-container-tools/podman/commit/24706290d5c974f078d8ca284026802515f28e92
Response Playbook
Triage
- Confirm the Podman version on the host: run `podman version` and compare against affected ranges (>= 4.4.0 < 5.8.8 and >= 6.0.0 < 6.1.3). If affected, treat any flagged run as high-priority until proven benign.
- Pull the full `podman run` command line and the source image reference from the alert. Determine whether the image came from an external/untrusted registry or an imported archive (oci-archive/docker-archive/.tar).
- Inspect the running or recently-run container's effective security context: `podman inspect <ctr> --format '{{.HostConfig.Privileged}} {{.AppArmorProfile}} {{json .HostConfig.SecurityOpt}} {{json .EffectiveCaps}}'` and confirm whether seccomp/AppArmor/SELinux were actually disabled versus explicitly requested by the operator.
- Extract and review the image's annotations: `podman inspect <image> --format '{{json .Annotations}}'` and `skopeo inspect` the manifest — look for annotations that reference seccomp, apparmor, selinux, capabilities, or OCI runtime options that would relax confinement.
Containment
- Immediately stop and remove any container launched from the suspect image: `podman stop <ctr> && podman rm -f <ctr>`, and remove the image `podman rmi -f <image>`.
- Isolate the host from the network if the unconfined container executed and host compromise is plausible, pending forensic review.
- Block the source registry/image reference at the egress proxy and quarantine the pulled image layers to prevent re-execution.
Evidence Collection
- Preserve the full image manifest and annotations (`skopeo copy docker://<image> oci:/evidence/<image>`) and the `podman inspect` output for both image and container before deletion.
- Collect auditd/journald records for the conmon/crun/runc process tree, the container's root filesystem diff (`podman diff <ctr>`), and any files written to host mounts.
- Capture the Podman store state and events log: `podman events --since <time>` and copy `~/.local/share/containers` or `/var/lib/containers` metadata for the affected container.
Escalation Criteria
- !Escalate to incident response if the unconfined container executed processes that accessed host namespaces, host mounts, or made outbound C2-like connections.
- !Escalate to platform/engineering owners if the affected Podman version is widespread across the fleet, since the fix requires upgrading to 5.8.8 or 6.1.3 across all hosts.
- !Escalate if the malicious image was sourced from an internal registry, indicating possible supply-chain compromise of the image build pipeline.
Investigation Guide
Related Techniques
Forensic Artifacts
- >
Image annotations in the OCI manifest (JSON) referencing seccomp/apparmor/selinux/capabilities - >
podman inspect security context (Privileged, SecurityOpt, AppArmorProfile, EffectiveCaps) for the container - >
conmon/crun/runc process command lines and auditd syscall records showing missing seccomp filter - >
podman events log and the container store metadata under /var/lib/containers or ~/.local/share/containers
Tuning Guidance
Baseline the hosts and users that legitimately run privileged or unconfined Podman containers (CI/CD runners, image scanners) and exclude those identities/hosts from alerting, or raise confidence only when the image originates from an untrusted external registry. Prioritize alerts where the effective security context was disabled WITHOUT a corresponding explicit operator flag (seccomp/apparmor dropped despite no --security-opt), since that discrepancy is the true signature of CVE-2026-94603 (annotation overriding defaults) rather than intentional operator action. Once hosts are patched to 5.8.8 / 6.1.3, downgrade severity for those hosts.
Hunting Queries
Hunts across 30 days for any Podman run invocation that launched a container with relaxed or disabled confinement, which could indicate annotation-driven sandbox disablement.
DeviceProcessEvents | where Timestamp > ago(30d) | where FileName in~ ("podman","podman-remote") and ProcessCommandLine has "run" | where ProcessCommandLine has_any ("seccomp=unconfined","apparmor=unconfined","--privileged","label=disable","--cap-add=ALL") | summarize count() by DeviceName, AccountName, ProcessCommandLine index=linux (process_name=podman OR process="*podman run*") ("*seccomp=unconfined*" OR "*apparmor=unconfined*" OR "*--privileged*" OR "*label=disable*" OR "*--cap-add=ALL*") | stats count by host, user, process Atomic Red Team Tests
Simulates launching an externally-sourced image with seccomp confinement disabled, mirroring the unconfined outcome of CVE-2026-94603.
Command
podman run --rm --security-opt seccomp=unconfined docker.io/library/alpine:latest sh -c 'echo CVE-2026-94603-test; grep Seccomp /proc/self/status' Cleanup
podman rmi -f docker.io/library/alpine:latest 2>/dev/null || true Expected Telemetry
ProcessRollup/DeviceProcessEvents record for podman with command line containing 'run', 'docker.io' and 'seccomp=unconfined'; child crun/conmon process launched.
Expected Detection
KQL/SPL/EQL rules match on external image reference plus seccomp=unconfined in the podman run command line.
Imports and runs a local OCI archive with --privileged, exercising the full-capability, host-namespace unconfined path.
Command
podman save -o /tmp/test-img.tar docker.io/library/busybox:latest 2>/dev/null; podman run --rm --privileged oci-archive:/tmp/test-img.tar echo CVE-2026-94603-privileged-test Cleanup
rm -f /tmp/test-img.tar; podman rmi -f docker.io/library/busybox:latest 2>/dev/null || true Expected Telemetry
Process event for podman run referencing oci-archive and --privileged; container launched with full capability set.
Expected Detection
Detection rules fire on --privileged combined with an archive-sourced image.
Launches a container with AppArmor set to unconfined, SELinux labeling disabled, and all capabilities added — the maximal sandbox-disabled state produced by the vulnerability.
Command
podman run --rm --security-opt apparmor=unconfined --security-opt label=disable --cap-add=ALL quay.io/podman/hello:latest /bin/sh -c 'echo CVE-2026-94603-unconfined' Cleanup
podman rmi -f quay.io/podman/hello:latest 2>/dev/null || true Expected Telemetry
Process event showing apparmor=unconfined, label=disable and --cap-add=ALL in the podman run command line with an external quay.io image.
Expected Detection
All seven SIEM rules match on the combination of external image and unconfined security options.