ZeroHour

CVE-2026-47701

niche

ServiceMonitor bearerTokenFile abuse exposes Collector secrets in OpenTelemetry Operator

CVSS 3.1
7.7 high
EPSS
Published
()
Modified
AI analysis

In the OpenTelemetry Operator's Target Allocator, versions prior to 0.152.0 with targetAllocator.prometheusCR.enabled set to true preserve a selected ServiceMonitor endpoint's bearerTokenFile value as the Collector scrape client's Authorization CredentialsFile. A tenant who can create or update a ServiceMonitor matched by serviceMonitorSelector and serviceMonitorNamespaceSelector can point bearerTokenFile at any file readable in the Collector pod — including /var/run/secrets/kubernetes.io/serviceaccount/token — and direct scraping at an endpoint they control, causing the Collector to send that file's contents as a bearer token on every scrape interval. Successful exploitation discloses the Collector's service-account JWT or other mounted files, and the resulting Kubernetes API impact is bounded by the Collector service account's permissions; the missing DenyFSAccessThroughSMs control allowed this behavior. Deployments running the Target Allocator with Prometheus CR discovery on Operator versions before 0.152.0 are affected, and the issue is fixed in 0.152.0. No public proof of concept exists, the flaw is not in the CISA KEV catalog, and no active exploitation is known.

What to do: Upgrade the OpenTelemetry Operator (and its Target Allocator) to 0.152.0 or later, which introduces the DenyFSAccessThroughSMs control that blocks this behavior. Restrict RBAC so untrusted tenants cannot create or update ServiceMonitors matched by your serviceMonitorSelector/serviceMonitorNamespaceSelector, and audit existing ServiceMonitors for bearerTokenFile values pointing at sensitive pod paths. Reduce blast radius by scoping down the Collector service account's permissions and disabling automountServiceAccountToken where unnecessary, and rotate the Collector service-account token if any suspicious tenant-directed scrape targets are found.

Affected
OpenTelemetry (CNCF) OpenTelemetry Operator (Target Allocator)All versions prior to 0.152.0 (< 0.152.0)
Estimated exposure
nicheLikely on the order of hundreds to a few thousands of Kubernetes clusters (only Operator deployments with targetAllocator.prometheusCR.enabled=true) — OpenTelemetry is widely adopted, but only the subset of clusters running the Operator's Target Allocator with Prometheus CR discovery — and where tenants can write matching ServiceMonitors — is exposed, and no public install counts or…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

The OpenTelemetry Operator is a Kubernetes Operator for the OpenTelemetry Collector. Prior to 0.152.0, cmd/otel-allocator TargetAllocator instances with targetAllocator.prometheusCR.enabled set to true preserve a selected ServiceMonitor endpoint's bearerTokenFile value as HTTPClientConfig.Authorization.CredentialsFile. A tenant who can create or update a ServiceMonitor matched by serviceMonitorSelector and serviceMonitorNamespaceSelector can point bearerTokenFile at a file in the Collector pod, including /var/run/secrets/kubernetes.io/serviceaccount/token, and direct scraping to a tenant-controlled endpoint. The Collector reads that file at scrape time and sends its contents as bearer authorization on every scrape interval. Exploitation also requires the Collector service-account token or another sensitive file to be mounted and the Collector to reach the chosen target. The DenyFSAccessThroughSMs control was absent, allowing disclosure of the Collector's service-account JWT or other mounted files, and resulting Kubernetes API impact is limited by the Collector service account's permissions. This issue is fixed in version 0.152.0.

Weakness
CWE-200
Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N

In the news

No ingested article mentions this CVE yet.