{"id":"GHSA-hx4v-cxpf-vh8m","revision":null,"records":[{"revision":"c1b5bcb471264e5786f653562e2dad38","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-44936","aliases":[],"title":"Rancher Fleet SSRF in Bundle Reader via Unvalidated Helm Repository URL in fleet.yaml","description":"Missing filtering when the helmRepoURLRegex field isn't set on a GitRepo resource in SUSE Rancher Fleet's bundle reader in 0.15 before 0.15.2, 0.14 before 0.14.6, 0.13 before 0.13.11 and 0.12 before 0.12.15 forwards Helm authentication credentials (BasicAuth) to any URL specified in the helm.repo field of a fleet.yaml file, allowing attackers able to push to fleet monitored git repos to leak helm access credentials.","state":0,"publishedAt":"2026-07-06T09:30:20.688+00:00","modifiedAt":"2026-07-06T12:47:45.102+00:00","affected":[{"ecosystem":"Vendor product","name":"Fleet","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"SUSE\",\n                    \"product\": \"Rancher\",\n                    \"packageName\": \"Fleet\",\n                    \"repo\": \"https://github.com/rancher/fleet\",\n                    \"versions\": [\n                        {\n                            \"status\": \"affected\",\n                            \"version\": \"0.15.0\",\n                            \"lessThan\": \"0.15.2\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"status\": \"affected\",\n                            \"version\": \"0.14.0\",\n                            \"lessThan\": \"0.14.6\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"status\": \"affected\",\n                            \"version\": \"0.13.0\",\n                            \"lessThan\": \"0.13.11\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"status\": \"affected\",\n                            \"version\": \"0.12.0\",\n                            \"lessThan\": \"0.12.15\",\n                            \"versionType\": \"semver\"\n                        }\n                    ],\n                    \"defaultStatus\": \"unaffected\"\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N","score":5,"severity":"MEDIUM"}],"references":["https://github.com/advisories/GHSA-hx4v-cxpf-vh8m"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-44936","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-44936","identifiers":["CVE-2026-44936"]},"retained":false,"historicalAffected":[]},{"revision":"85f5ceb6be8e4343bbd3d9125c1eee23","observedAt":"2026-11-07T10:32:41.203+00:00","statement":{"source":"euvd","id":"EUVD-2026-41863","aliases":["CVE-2026-44936","GHSA-hx4v-cxpf-vh8m"],"title":"Missing filtering when the helmRepoURLRegex field isn't set on a GitRepo resource in SUSE Rancher Fleet's bundle reader in 0.15 before 0.15.2, 0.14 before 0.14.6, 0.13 before 0.13.11 and 0.12 before 0.12.15 forwards Helm authentication cred…","description":"Missing filtering when the helmRepoURLRegex field isn't set on a GitRepo resource in SUSE Rancher Fleet's bundle reader in 0.15 before 0.15.2, 0.14 before 0.14.6, 0.13 before 0.13.11 and 0.12 before 0.12.15 forwards Helm authentication credentials (BasicAuth) to any URL specified in the helm.repo field of a fleet.yaml file, allowing attackers able to push to fleet monitored git repos to leak helm access credentials.","state":0,"publishedAt":null,"modifiedAt":null,"affected":[],"metrics":[{"system":"EUVD CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N","score":5,"severity":null}],"references":["https://github.com/advisories/GHSA-hx4v-cxpf-vh8m"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-41863","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Jul 6, 2026, 9:30:20 AM","dateUpdated":"Jul 6, 2026, 12:47:45 PM"},"relatedAdvisories":[],"note":"EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON."},"key":"euvd:EUVD-2026-41863","identifiers":["EUVD-2026-41863","CVE-2026-44936","GHSA-hx4v-cxpf-vh8m"]},"retained":false,"historicalAffected":[]},{"revision":"628fdedb70b5491c95cef4225cc9bca6","observedAt":"2026-10-27T11:12:17.434+00:00","statement":{"source":"nvd","id":"CVE-2026-44936","aliases":[],"title":"Missing filtering when the helmRepoURLRegex field isn't set on a GitRepo resource in SUSE Rancher Fleet's bundle reader in 0.15 before 0.15.2, 0.14 before 0.14.6, 0.13 before 0.13.11 and 0.12 before 0.12.15 forwards Helm authentication cred…","description":"Missing filtering when the helmRepoURLRegex field isn't set on a GitRepo resource in SUSE Rancher Fleet's bundle reader in 0.15 before 0.15.2, 0.14 before 0.14.6, 0.13 before 0.13.11 and 0.12 before 0.12.15 forwards Helm authentication credentials (BasicAuth) to any URL specified in the helm.repo field of a fleet.yaml file, allowing attackers able to push to fleet monitored git repos to leak helm access credentials.","state":0,"publishedAt":"2026-07-06T11:16:27.61+00:00","modifiedAt":"2026-10-25T15:10:00.147+00:00","affected":[],"metrics":[{"system":"CVSS 3.1 · meissner@suse.de · Secondary","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N","score":5,"severity":"MEDIUM"},{"system":"CVSS 3.1 · nvd@nist.gov · Primary","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N","score":5,"severity":"MEDIUM"}],"references":["https://github.com/advisories/GHSA-hx4v-cxpf-vh8m"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-44936","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Analyzed","weaknesses":["CWE-918"],"productCriteria":["cpe:2.3:a:suse:rancher_fleet:*:*:*:*:*:*:*:*"],"sourceDates":{"published":"2026-07-06T11:16:27.610","lastModified":"2026-10-25T15:10:00.147"},"relatedAdvisories":[],"note":"NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON."},"key":"nvd:CVE-2026-44936","identifiers":["CVE-2026-44936"]},"retained":false,"historicalAffected":[]},{"revision":"61e8d027eb6e4c1385723f38cb0b56b0","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GHSA-hx4v-cxpf-vh8m","aliases":["CVE-2026-44936","GO-2026-5873"],"title":"Rancher Fleet has SSRF in Bundle Reader via Unvalidated Helm Repository URL in fleet.yaml","description":"### Impact\nA vulnerability has been identified in Fleet when the `helmRepoURLRegex` field isn't set on a `GitRepo` resource. Fleet's bundle reader forwards Helm authentication credentials (`BasicAuth`) to any URL specified in the `helm.repo` field of a `fleet.yaml` file.\n\nAn attacker with git push access to a Fleet-monitored repository can exploit this behavior by specifying a malicious URL in `helm.repo`. This causes the Fleet controller to send the configured Helm repository credentials to the attacker’s server. \n\nAs a result, the attacker can capture the username and password that an administrator configured to access a private Helm chart repository. However, the response body from the attacker's server isn't included in the error message (this behavior was fixed in Fleet `v0.13.3` and later), which prevents additional internal data from leaking through the status condition.\n\nThe final severity of this vulnerability depends on the specific permissions of the leaked credentials. \n\nFleet recommends you to:\n1. Review your system for potentially leaked credentials.\n2. Replace any credentials that might be compromised.\n\nPlease consult the associated [MITRE ATT&CK - Technique - Stored Data Manipulation](https://attack.mitre.org/techniques/T1565/001/) and [MITRE ATT&CK - Technique - Steal Application Access Token](https://attack.mitre.org/techniques/T1528/) for further information about this category of attack.\n\n### Patches\nTo resolve this vulnerability, upgrade to a patched version of Fleet. The patched version of Fleet now requires you to set the `helmRepoURLRegex` field on the `GitRepo`. If the `helmRepoURLRegex` is empty or missing, Fleet won’t send credentials, regardless of the URL specified in `fleet.yaml`.\n \nWhen you upgrade, a Helm pre-upgrade job automatically migrates existing `GitRepo` resources that have `helmSecretName` or `helmSecretNameForPaths` configured but lack a `helmRepoURLRegex`. The migration job performs the following actions:\n\nThe job extracts the scheme and host from the Helm repository URLs already stored in the resource's Bundles. For example, a `GitRepo` with Bundles referencing `https://charts.example.com/stable` receives `helmRepoURLRegex: \"^https://charts\\.example\\.com/\"`. This limits credential forwarding to the origins already in use before the upgrade.\nMigrated resources are annotated with `fleet.cattle.io/helm-regex-auto-migrated: \"true\"` so you can easily audit them.\n\nIf no Bundles with Helm repository URLs exist during the migration (for example, if the `GitRepo` has never successfully synced), `helmRepoURLRegex` remains empty and credentials aren't forwarded. You must set this field manually before Fleet will send credentials.\n\nThe migration job runs only once per installation and records its status in a `ConfigMap` named `fleet-helm-url-regex-migrated` in the Fleet system namespace. Any `GitRepo` resources you create after the upgrade require an explicit `helmRepoURLRegex` to forward credentials.\n\nPatched versions of Fleet include releases `v0.15.2`, `v0.14.6`, `0.13.11`, and `v0.12.15`.\n\n### Workarounds\nIf you cannot immediately upgrade to a patched version, use the following methods to mitigate the risk and audit your environment.\nSet `helmRepoURLRegex` on all `GitRepo` resources that use `helmSecretName`. Ensure the regular expression matches only your legitimate Helm repository URL. \n\nExample configuration:\n```yaml\napiVersion: fleet.cattle.io/v1alpha1\nkind: GitRepo\nmetadata:\n  name: my-app\n  namespace: fleet-local\nspec:\n  repo: https://git.example.com/org/my-app.git\n  helmSecretName: helm-creds\n  helmRepoURLRegex: \"^https://charts\\\\.example\\\\.com/.*\"\n```\n\nAfter upgrading to a patched version, review all auto-migrated `GitRepo` resources by running the following command:\n\n``` \nkubectl get gitrepo -A -o json | \\\n  jq -r '.items[] | select(.metadata.annotations[\"fleet.cattle.io/helm-regex-auto-migrated\"] == \"true\") | \"\\(.metadata.namespace)/\\(.metadata.name): \\(.spec.helmRepoURLRegex)\"'\n```\n\nVerify that the auto-derived regular expression matches only your intended Helm repository origins. If a regular expression is broader than necessary, replace it with a more specific pattern.\n\n### Credits\n\nThis security issue was reported by the following collaborators according to our responsible disclosure policy:\n\n- Radisauskas Arnoldas from NATO and the NATO Cyber Security Centre (NCSC).\n- FluentLogic's security team.\n\n### References\nIf you have any questions or comments about this advisory:\n- Reach out to the [SUSE Rancher Security team](https://github.com/rancher/rancher/security/policy) for security related inquiries.\n- Open an issue in the [Rancher](https://github.com/rancher/rancher/issues/new/choose) repository.\n- Verify with our [support matrix](https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/) and [product support lifecycle](https://www.suse.com/lifecycle/).","state":0,"publishedAt":"2026-07-01T20:45:05+00:00","modifiedAt":"2026-07-07T16:11:04.099888+00:00","affected":[{"ecosystem":"Go","name":"github.com/rancher/fleet","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.15.0"},{"kind":"fixed","version":"0.15.2"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/rancher/fleet","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.14.0"},{"kind":"fixed","version":"0.14.6"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/rancher/fleet","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.13.0"},{"kind":"fixed","version":"0.13.11"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/rancher/fleet","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.12.0"},{"kind":"fixed","version":"0.12.15"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"MODERATE"}],"references":["https://github.com/rancher/fleet/security/advisories/GHSA-hx4v-cxpf-vh8m","https://github.com/rancher/fleet"],"sourceUrl":"https://github.com/advisories/GHSA-hx4v-cxpf-vh8m","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-hx4v-cxpf-vh8m","identifiers":["GHSA-hx4v-cxpf-vh8m","CVE-2026-44936","GO-2026-5873"]},"retained":false,"historicalAffected":[]},{"revision":"5d941fb6998941baa01b4e794b1431a4","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GO-2026-5873","aliases":["CVE-2026-44936","GHSA-hx4v-cxpf-vh8m"],"title":"Rancher Fleet has SSRF in Bundle Reader via Unvalidated Helm Repository URL in fleet.yaml in github.com/rancher/fleet","description":"Rancher Fleet has SSRF in Bundle Reader via Unvalidated Helm Repository URL in fleet.yaml in github.com/rancher/fleet","state":0,"publishedAt":"2026-07-07T15:26:37+00:00","modifiedAt":"2026-07-07T16:00:23.2544276+00:00","affected":[{"ecosystem":"Go","name":"github.com/rancher/fleet","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.12.0"},{"kind":"fixed","version":"0.12.15"},{"kind":"introduced","version":"0.13.0"},{"kind":"fixed","version":"0.13.11"},{"kind":"introduced","version":"0.14.0"},{"kind":"fixed","version":"0.14.6"},{"kind":"introduced","version":"0.15.0"},{"kind":"fixed","version":"0.15.2"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[],"references":["https://github.com/rancher/fleet/security/advisories/GHSA-hx4v-cxpf-vh8m"],"sourceUrl":"https://osv.dev/vulnerability/GO-2026-5873","license":"OSV · upstream source license applies","key":"osv:GO-2026-5873","identifiers":["GO-2026-5873","CVE-2026-44936","GHSA-hx4v-cxpf-vh8m"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-07T21:52:16.7895348+00:00","complete":true,"records":1769,"lastAttemptAt":"2026-11-07T21:52:16.7895348+00:00","lastSuccessAt":"2026-11-07T21:52:17.018923+00:00","error":null,"lastVerifiedAt":"2026-11-07T21:52:17.0189237+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-bb5c9d5a08063ef076042e33dd72a7d0ffa4c4487efdcf3106e29ba55ec2ad57-5978693a555a2fac0feee4f8e1cdc5e013b9a91b16046d4e34ae63a3d3db8d19","complete":true,"records":420947,"lastAttemptAt":"2026-11-07T21:52:16.4606105+00:00","lastSuccessAt":"2026-11-07T21:52:16.3995215+00:00","error":null,"lastVerifiedAt":"2026-11-07T21:52:16.4606105+00:00","snapshotPublishedAt":"2026-11-07T21:18:20+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-c91a0736a9624a48aebf081ca5dd86b2","complete":true,"records":13633,"lastAttemptAt":"2026-11-07T22:04:27.1191985+00:00","lastSuccessAt":"2026-11-07T22:04:27.115+00:00","error":null,"lastVerifiedAt":"2026-11-07T22:04:27.115+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13685,"expectedIdentifiers":13685,"failedIdentifiers":0},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-07T21:52:16.7895348+00:00","complete":true,"records":1096,"lastAttemptAt":"2026-11-07T21:52:16.7895348+00:00","lastSuccessAt":"2026-11-07T21:52:17.0199092+00:00","error":null,"lastVerifiedAt":"2026-11-07T21:52:17.0199095+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-2b22c2d15f834007aa54c93f73b8deaf","complete":true,"records":13645,"lastAttemptAt":"2026-11-07T21:52:42.2590883+00:00","lastSuccessAt":"2026-11-07T21:52:42.255+00:00","error":null,"lastVerifiedAt":"2026-11-07T21:52:42.255+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13685,"expectedIdentifiers":13685,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-0eb4d6dde62dffacd040ad992d4fd5a65cd7d0dc5f5f4cfa8b41967fc6f9ca5f","complete":true,"records":9914,"lastAttemptAt":"2026-11-07T21:52:16.7352005+00:00","lastSuccessAt":"2026-11-06T20:10:36.6450506+00:00","error":null,"lastVerifiedAt":"2026-11-07T21:52:16.7352005+00:00","snapshotPublishedAt":"2026-11-06T20:02:57+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-fde804134ecdda0ddd5ff5c26ee1fff5a6fa659311f7ef2e51c6ad54964db0e2","complete":true,"records":1971,"lastAttemptAt":"2026-11-07T21:52:16.5087916+00:00","lastSuccessAt":"2026-11-06T19:03:17.0399903+00:00","error":null,"lastVerifiedAt":"2026-11-07T21:52:16.5087916+00:00","snapshotPublishedAt":"2026-11-06T18:17:57+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-335633e78a15c9cde10a6025895b5617717087fb945489ae7e15d377bacf34a9","complete":true,"records":3055,"lastAttemptAt":"2026-11-07T21:52:16.7531721+00:00","lastSuccessAt":"2026-11-06T16:03:00.7615789+00:00","error":null,"lastVerifiedAt":"2026-11-07T21:52:16.7531721+00:00","snapshotPublishedAt":"2026-11-06T16:02:48+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-40ad6183a951565ace1520a9b4d631e1d0bfb1d4bf7c5574c375032559f3ff53","complete":true,"records":231292,"lastAttemptAt":"2026-11-07T21:52:16.6283313+00:00","lastSuccessAt":"2026-11-07T10:29:00.4821259+00:00","error":null,"lastVerifiedAt":"2026-11-07T21:52:16.6283313+00:00","snapshotPublishedAt":"2026-11-07T09:32:47+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}