Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-104795— Insights-runtime-extractor: insights-runtime-extractor: container escape via privileged binary execution

Quick assessment

Affected
Red Hat Red Hat OpenShift Container Platform 4
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

以下是对该漏洞描述信息的中文翻译: insights-runtime-extractor 以特权 DaemonSet( )的身份运行,用于通过运行时指纹识别来扫描容器进程。在扫描容器时,协调程序(coordinator)执行以下操作: 1. 创建一个子进程 2. 使用 进入目标容器的 PID 和挂载命名空间 3. 使用 将工作目录切换回一个指向 extractor 自身根文件系统(其中 以 hostPath 方式挂载)的孤立文件描述符 4. 仅调用 —— 仅更改有效用户 ID(Effective UID),但保留真

CVSS 8.8 · High EPSS 0.17% · P5

Affected Version Matrix 1

VendorProduct Version RangeStatus
Red Hat Red Hat OpenShift Container Platform 4 any affected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-104795

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
Insights-runtime-extractor: insights-runtime-extractor: container escape via privileged binary execution
Source: CVE Program / CVE List V5
Vulnerability Description
The insights-runtime-extractor runs as a privileged DaemonSet (`hostPID: true`) that scans container processes for runtime fingerprinting. When scanning a container, the coordinator: 1. **fork()s** a child process 2. **setns()** into the target container's PID and mount namespaces 3. **fchdir()** back to an orphaned FD pointing at the extractor's own root filesystem (where `/crio.sock` is hostPath-mounted) 4. Calls **only `seteuid(target_uid)`** — changing the effective UID but leaving the **real UID and saved-set-UID at 0** and **retaining the permitted capability set** 5. The `check_no_privileged_perms()` guard inspects only the Effective capability set (so it passes), and is **skipped entirely when the target runs as uid 0** 6. The `VersionExecutable` fingerprint invokes `fpr_kind_executable` with `process.command_line[0]` — the target's argv[0], read from `/proc/<pid>/cmdline` and **fully controlled by the workload** 7. `fpr_kind_executable` calls `exec.Command(executable, "--version").Output()` — executing the **workload's own binary** inside the workload's mount namespace while **ruid=0 in the host user namespace** The executed process can call `setuid(0)` to restore full root with `CAP_SYS_ADMIN`, and inherits the orphaned cwd which resolves into the extractor container's filesystem containing the host CRI-O socket. ## Affected Code ### 1. Insufficient privilege drop (Rust — extractor coordinator) **File:** `extractor/src/insights_runtime_extractor.rs` ```rust // Lines 139-146 — seteuid-only drop, guard skipped for root containers join_process_namespaces(process.pid)?; change_dir(current_dir); switch_user(*process.uid)?; if *process.uid != 0 { perms::check_no_privileged_perms() .expect("Must not have privileged permissions to run fingerprints"); } fingerprint::run_fingerprints(&config, out_dir, &process); ``` ```rust // Lines 182-185 — only effective UID changed; ruid/suid stay 0 fn switch_user(uid: u32) -> Result<(), ScannerError> { debug!("... Becoming user: {uid}"); seteuid(uid.into()).map_err(|e| ScannerError::Errno(e)) } ``` ### 2. Execution of untrusted binary (Go — fingerprint) **File:** `fingerprints/pkg/utils/file.go` ```go // Lines 75-80 — executes a path taken verbatim from workload's argv[0] func GetExecutableVersionOutput(executable string) (string, error) { out, err := exec.Command(executable, "--version").Output() if err != nil { return "", err } return string(out), nil } ``` ### 3. Workload-controlled path forwarded (Rust — version_executable) **File:** `version_executable.rs` ```rust // Lines 29-34 — workload-controlled command_line[0] forwarded to fingerprint return Some(vec![ fpr_kind_executable, out_dir.to_string(), String::from(&process.command_line[0]), String::from(&version_executable.runtime_kind_name), ]); ``` ## Attack Pattern **Attacker:** Any tenant able to schedule a pod (unprivileged, any namespace) **Victim:** The node running the insights-runtime-extractor DaemonSet **Trigger:** Automatic — the DaemonSet scans all container processes on the node **Attack sequence:** 1. Attacker creates a pod whose process name matches a configured versioned-executable pattern (`node`, `python`, `python3`, `MainThread`, or contains `java`) 2. The pod's main binary (at the path matching argv[0]) is a malicious executable that calls `setuid(0)` to restore root 3. When the insights operator triggers a scan, the DaemonSet forks, enters the attacker's mount namespace, and executes the attacker's binary with ruid=0 4. The attacker's code regains full root with `CAP_SYS_ADMIN` in the host user namespace 5. The inherited cwd contains the host CRI-O socket → full node compromise
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
带着不必要的权限执行
Source: CVE Program / CVE List V5

Affected Products

Vendor Product Affected Versions CPE Subscribe
Red Hat Red Hat OpenShift Container Platform 4 - cpe:/a:redhat:openshift:4

II. Public POCs for CVE-2026-104795

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-104795

请登录查看更多情报信息。

Vendor Advisories for CVE-2026-104795 (2)

Same Patch Batch · Red Hat · 2026-10-14 · 25 CVEs total

CVE-2026-86848 8.8 HIGH Dpdk: dpdk: time-of-check/time-of-use vulnerability allowing guest-triggered out-of-bounds
CVE-2026-86567 8.8 HIGH Dpdk: dpdk: vduse handler fails to invalidate vring pointers when iotlb is invalidated, le
CVE-2026-100236 8.6 HIGH Dpdk: dpdk: heap out-of-bounds read/write in gso header copy
CVE-2026-86476 8.4 HIGH Gstreamer1-plugins-base: gst-plugins-base: heap buffer overflow via unvalidated gstvideome
CVE-2026-86565 8.2 HIGH Dpdk: dpdk: guest can desynchronize virtqueue size from inflight descriptor table size, ca
CVE-2026-90954 7.8 HIGH Busybox: busybox: dpkg-deb extraction-root escape via per-ar-member deferred symlink flush
CVE-2026-86563 7.8 HIGH Dpdk: dpdk: double offset bug in vhost log mapping calculation
CVE-2026-86562 7.8 HIGH Dpdk: dpdk: control-queue descriptor double-fetch overflows host heap in dpdk vhost (vduse
CVE-2026-88829 7.2 HIGH Busybox: busybox: http request smuggling via pipelined requests in httpd reverse proxy
CVE-2026-86561 6.5 MEDIUM Dpdk: dpdk: missing memory size validation before mmap in vhost memory region setup
CVE-2026-100229 6.5 MEDIUM Gstreamer1-plugins-bad-free: gstreamer1-plugins-bad-free: out-of-bounds write in gst_h266_
CVE-2026-86849 6.5 MEDIUM Dpdk: dpdk: integer overflow combined with missing validation leads to host buffer overflo
CVE-2026-86566 6.5 MEDIUM Dpdk: dpdk: guest with runt rx descriptors underflows copy length in vhost enqueue (split
CVE-2026-86845 6.5 MEDIUM Dpdk: dpdk: guest-triggered use-after-free and type confusion in vhost-crypto session clea
CVE-2026-86846 6.5 MEDIUM Dpdk: dpdk: guest can trigger out-of-bounds write by controlling avail ring index in vhost
CVE-2026-86847 6.5 MEDIUM Dpdk: dpdk: guest can trigger infinite loop in vhost-crypto writeback chain cleanup
CVE-2026-86856 6.5 MEDIUM Dpdk: dpdk: stack and heap buffer overflow in nfp vdpa driver
CVE-2026-93683 6.4 MEDIUM Dpdk: dpdk: guest-triggered out-of-bounds walk via vhost indirect descriptor length toctou
CVE-2026-100231 6.1 MEDIUM Gstreamer1-plugins-bad-free: gstreamer1-plugins-bad-free: heap out-of-bounds write in asfm
CVE-2026-109968 5.5 MEDIUM Clevis: clevis: pkcs#11 luks passphrase logged in plaintext to world-readable file

Showing top 20 of 25 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2026-104795

No comments yet


Leave a comment