{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","favicon":"https://feed.craftedsignal.io/favicon-32x32.png","feed_url":"https://feed.craftedsignal.io/cpes/cpe2.3akubernetesinsights-runtime-extractor/feed.json","home_page_url":"https://feed.craftedsignal.io/","icon":"https://feed.craftedsignal.io/apple-touch-icon.png","items":[{"_cs_actors":[],"_cs_cpes":["cpe:2.3:a:kubernetes:insights-runtime-extractor:*:*:*:*:*:*:*:*"],"_cs_cves":[{"cvss":8.8,"id":"CVE-2026-104795"}],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["insights-runtime-extractor"],"_cs_severities":["high"],"_cs_tags":[],"_cs_type":"advisory","_cs_vendors":["Kubernetes"],"content_html":"\u003cp\u003eCVE-2026-104795 describes a critical privilege escalation vulnerability within the \u003ccode\u003einsights-runtime-extractor\u003c/code\u003e DaemonSet. The extractor, which runs with \u003ccode\u003ehostPID: true\u003c/code\u003e and elevated privileges to perform runtime fingerprinting of container processes, fails to perform a complete privilege drop when interacting with untrusted container namespaces. Specifically, the Rust-based coordinator uses \u003ccode\u003eseteuid()\u003c/code\u003e to change the effective user ID while retaining the real UID and saved-set-UID as 0, and fails to drop permitted capabilities.\u003c/p\u003e\n\u003cp\u003eWhen the extractor identifies a process binary matching a fingerprinting pattern (e.g., node, python, or java), it invokes a Go-based utility that executes the binary from the container's namespace to retrieve version information. Because the extractor is still effectively root in the host user namespace and retains elevated capabilities, the malicious binary can restore full root access, inherit an orphaned directory file descriptor pointing to the extractor's root filesystem, and access the host CRI-O socket. This results in full node compromise for any tenant capable of scheduling a pod on the affected cluster.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAn attacker schedules a malicious pod with an unprivileged service account on a node running the \u003ccode\u003einsights-runtime-extractor\u003c/code\u003e DaemonSet.\u003c/li\u003e\n\u003cli\u003eThe attacker defines the pod's main binary to match common runtime names targeted by the extractor (e.g., \u003ccode\u003enode\u003c/code\u003e, \u003ccode\u003epython\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003einsights-runtime-extractor\u003c/code\u003e coordinator detects the pod process and forks a child process to perform fingerprinting.\u003c/li\u003e\n\u003cli\u003eThe extractor joins the target pod's PID and mount namespaces but fails to drop root privileges (ruid=0) or permitted capabilities.\u003c/li\u003e\n\u003cli\u003eThe extractor calls \u003ccode\u003eexec.Command\u003c/code\u003e on the malicious binary located within the pod's mount namespace.\u003c/li\u003e\n\u003cli\u003eThe malicious binary executes with root privileges in the host user namespace.\u003c/li\u003e\n\u003cli\u003eThe binary calls \u003ccode\u003esetuid(0)\u003c/code\u003e to escalate privileges and uses the inherited file descriptor to access \u003ccode\u003e/crio.sock\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe attacker interacts with the CRI-O socket to achieve full node compromise and container breakout.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eSuccessful exploitation leads to full compromise of the Kubernetes node hosting the vulnerable \u003ccode\u003einsights-runtime-extractor\u003c/code\u003e DaemonSet. An attacker can transition from an unprivileged pod to host-level root, enabling credential theft, lateral movement within the cluster, and potential access to persistent volumes or sensitive secrets stored on the node.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAudit existing \u003ccode\u003einsights-runtime-extractor\u003c/code\u003e deployments for the \u003ccode\u003ehostPID: true\u003c/code\u003e security context and restrict access to clusters where untrusted tenants are present.\u003c/li\u003e\n\u003cli\u003eImplement Kubernetes Admission Controllers to prevent the deployment of pods containing binaries that match the vulnerable fingerprinting patterns until a vendor patch is applied.\u003c/li\u003e\n\u003cli\u003eMonitor for unusual \u003ccode\u003eexec\u003c/code\u003e calls originating from the \u003ccode\u003einsights-runtime-extractor\u003c/code\u003e container process targeting binary paths within \u003ccode\u003e/proc/\u0026lt;pid\u0026gt;/root\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eApply patches provided by the vendor for the \u003ccode\u003einsights-runtime-extractor\u003c/code\u003e once available to ensure \u003ccode\u003esetresuid()\u003c/code\u003e and proper capability dropping are implemented.\u003c/li\u003e\n\u003c/ol\u003e\n","date_modified":"2026-10-14T12:23:41Z","date_published":"2026-10-14T12:23:41Z","id":"https://feed.craftedsignal.io/briefs/2026-10-cve-2026-104795/","summary":"The insights-runtime-extractor DaemonSet fails to correctly drop privileges when scanning containers, allowing malicious workloads to execute code as root in the host user namespace.","title":"Privilege Escalation in insights-runtime-extractor via Improper Capability Dropping","url":"https://feed.craftedsignal.io/briefs/2026-10-cve-2026-104795/"}],"language":"en","title":"CraftedSignal Threat Feed - Cpe:2.3:a:kubernetes:insights-Runtime-Extractor:*:*:*:*:*:*:*:*","version":"https://jsonfeed.org/version/1.1"}