Bug 2522945 (CVE-2026-87114) - CVE-2026-87114 kube-compare: container:// reference extraction runs the image entrypoint and silently escalates to sudo
Summary: CVE-2026-87114 kube-compare: container:// reference extraction runs the image...
Keywords:
Status: NEW
Alias: CVE-2026-87114
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-08-24 19:19 UTC by OSIDB Bzimport
Modified: 2026-09-28 16:17 UTC (History)
21 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description OSIDB Bzimport 2026-08-24 19:19:48 UTC
## container:// reference extraction executes the untrusted image instead of extracting from a stopped container

**CWEs:** CWE-829, CWE-250
**CVSS:** 7.3 (CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N)
**Component:** openshift-platform/kube-compare

### Description
When the -r reference path uses the container:// scheme, getReferencesFromContainer pulls the image and starts it with 'podman/docker run -d <image>' solely so that 'cp' can copy the reference directory out. Running (rather than 'create'-ing) the container executes the image's entrypoint/cmd on the operator's workstation. If only docker is available and the daemon socket requires elevation, runEngineCommand wraps the invocation in sudo, so the untrusted entrypoint executes with root-mediated daemon privileges. A reference image name is frequently copy-pasted from documentation or support instructions, making a look-alike malicious image a realistic vector.

### Affected Locations
- `:`
- `:`

### Evidence
**pkg/compare/container.go:88-90 — image is executed, not just mounted**
```go
// run because copy requires a running or stopped container
// -d to output container ID
out, err := engine.runEngineCommand("run", "-d", image)
```

**pkg/compare/container.go:61-63 — docker path may run the untrusted image under sudo**
```go
if engine.requiresSudo {
    args = append([]string{engine.name}, args...)
    out, err = execCommand("sudo", args...).CombinedOutput()
```

### Attack Pattern
A malicious or typo-squatted reference image gains arbitrary code execution on the machine running kube-compare (root-equivalent via the docker daemon on the sudo path).

---
*Source: Ex-Wing security assessment, finding FIND-001*


Note You need to log in before you can comment on or make changes to this bug.