CVE-2026-44938 — fleet
HIGHCVE-2026-44938 is a high-severity (CVSS 8.8) CWE-522 vulnerability in github.com/rancher/fleet. A fix is available for github.com/rancher/fleet — see the affected versions and patch details below.
Fleet has PSS Bypass through addLabelsFromOptions in Fleet Agent
Exploitation Status
No confirmed exploitation observed yet
- A successful exploit gives an attacker total control of the affected component, not partial access.
- CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.
Exploitation and automatability from CISA’s SSVC triage for CVE-2026-44938.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
CVE-2026-44938 by exploitation likelihood (EPSS) against impact (CVSS). Outside the shaded patch-first corner.
Where this sits among everything scored
Of 384,189 CVEs with a current EPSS score, this one falls in the < 10% band (highlighted). Counts from FIRST.org, log-scaled.
Real-World Exposure
github.com/rancher/fleet🐹github.com/rancher/fleet🐹github.com/rancher/fleet🐹github.com/rancher/fleetReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.
Description
Impact
A vulnerability has been identified in Fleet's agent-side deployer, which did not filter security-sensitive keys from namespaceLabels in fleet.yaml (or BundleDeployment.spec.options.namespaceLabels) when applying them to the target namespace.
An attacker with git push access to a Fleet-monitored repository could overwrite Pod Security Standards (PSS) enforcement labels on a target namespace. This allows the attacker to weaken admission controls and deploy workloads that PSS policies would otherwise block.
Important: The final impact on confidentiality, integrity, and availability depends on the specific permissions of the leaked credentials.
Fleet team recommends you:
- Review your system for potentially leaked credentials.
- Replace any credentials that may be compromised.
Please consult the associated MITRE ATT&CK - Technique - Disable or Modify Tools for further information about this category of attack.
Patches
To fix this issue, upgrade to a patched version. The updated Fleet deployer filters out labels with the pod-security.kubernetes.io/ prefix when applying namespaceLabels to a namespace. This change preserves the PSS labels set by cluster administrators and prevents them from being overwritten through fleet.yaml or BundleDeployment options.
Patched versions of Fleet include releases v0.15.2, v0.14.6, v0.13.11, and v0.12.15.
Workarounds
If you can’t immediately upgrade to a patched version, use one of the following workarounds:
1 - Deploy NeuVector(primary workaround)
Deploy NeuVector (SUSE Security) and configure an admission control Deny rule for "Run as privileged" in Protect mode.
- NeuVector evaluates pod specs independently of Kubernetes PSS namespace labels. It blocks privileged containers even if the labels are downgraded.
- Although the namespace labels are still overwritten, the attack cannot exploit confidentiality, integrity, or availability without a privileged pod.
2 - Restrict repository access (secondary workaround)
Note: The following measure reduces the attack surface but does not close the vulnerability:
- In a multi-tenant setup, this restriction removes the primary attack vector. However, this measure only reduces the attack surface and doesn't completely close the vulnerability. It may also not be operationally viable for all organizations. ´
Credits
This security issue was reported by the following collaborators according to our responsible disclosure policy:
- Radisauskas Arnoldas from NATO and the NATO Cyber Security Centre (NCSC).
References
- Reach out to the SUSE Rancher Security team for security related inquiries.
- Open an issue in the Rancher repository.
- Verify with our support matrix and product support lifecycle.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | github.com/rancher/fleet | ≥ 0.15.0&&< 0.15.2 | 0.15.2go get github.com/rancher/fleet@v0.15.2 |
| 🐹Go | github.com/rancher/fleet | ≥ 0.14.0&&< 0.14.6 | 0.14.6go get github.com/rancher/fleet@v0.14.6 |
| 🐹Go | github.com/rancher/fleet | ≥ 0.13.0&&< 0.13.11 | 0.13.11go get github.com/rancher/fleet@v0.13.11 |
| 🐹Go | github.com/rancher/fleet | ≥ 0.12.0&&< 0.12.15 | 0.12.15go get github.com/rancher/fleet@v0.12.15 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/rancher/fleet, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update github.com/rancher/fleet to 0.15.2 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2026-44938 is resolved across your whole dependency graph.
Workarounds
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
Frequently Asked Questions
Is CVE-2026-44938 in your dependencies?
Find it across Go, including transitive dependencies.