Database/Control plane, storage & DevOps
Grafana Alloy: ServiceMonitor bearerTokenFile reads any file and ships it to an attacker scrape target
Impact
A user who can create or modify ServiceMonitor resources in a namespace Alloy watches can set bearerTokenFile to an arbitrary path on the Alloy pod. Alloy reads that file and sends its contents as a bearer token to the scrape endpoint named in the same resource, which the attacker also controls, so any file readable by the Alloy process becomes exfiltratable. The advisory calls out the projected Kubernetes service account token specifically: on a GPU cluster the metrics agent is normally a DaemonSet with cluster-scoped read across every namespace, so a tenant who only has write access to their own namespace's ServiceMonitors ends up holding the collector's cluster-wide permissions. The CVSS vector's scope change reflects exactly that - the blast radius is the whole cluster, not the namespace the attacker started in.
Who can reach it
Any authenticated principal - human, CI job, or in-cluster controller - with create or update on ServiceMonitor CRs in a namespace Alloy is configured to watch, and outbound network reach from Alloy to an endpoint they control. No node access, no cluster-admin, and by construction the attacker holds fewer privileges than Alloy's own service account.
What to do
Upgrade Alloy to the fixed release named in Grafana's advisory - the NVD record here does not carry a version, so read the linked advisory before scheduling. Rollout is a DaemonSet or Deployment image bump and pod restart; no node drain and no GPU downtime. If you cannot upgrade immediately, remove or restrict ServiceMonitor write access in tenant namespaces, or narrow the namespaces Alloy watches. If you have reason to think this was exploited, rotate Alloy's service account token, since the projected token is the prize here and a leaked one stays valid on its own schedule.
References
Related entries
- GlusterFS (brick, mknod): Mknod can create device nodes that point at real devices on the storage server, so a clientCVE-2018-10923 · GlusterFS (brick, mknod)High
- HashiCorp Vault: GCP secrets engine drops existing IAM Conditions when creating/updating rolesetsCVE-2023-5077 · HashiCorp VaultHigh
- NetApp ONTAP 9 role-based access control: A user holding several remote accounts with different roles performs actionsCVE-2024-21985 · NetApp ONTAP 9 role-based access controlHigh
- HashiCorp Nomad Enterprise: Jobs using the policy-override option bypass mandatory Sentinel policiesCVE-2025-3744 · HashiCorp Nomad EnterpriseHigh
- Grafana: Client path traversal + open redirectCVE-2025-4123 · GrafanaHigh
- OpenZFS (sharenfs export generation): When an NFS share is exported to IPv6 addresses via sharenfs, OpenZFS silentlyCVE-2013-20001 · OpenZFS (sharenfs export generation)High
This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.