CVE-2026-47701
nicheServiceMonitor bearerTokenFile abuse exposes Collector secrets in OpenTelemetry Operator
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.
| OpenTelemetry (CNCF) OpenTelemetry Operator (Target Allocator) | All versions prior to 0.152.0 (< 0.152.0) |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
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 news0 stories
No ingested article mentions this CVE yet.