{"id":"CVE-2023-46254","summary":"Service accounts can see namespaces of other tenants in capsule-proxy","details":"capsule-proxy is a reverse proxy for Capsule kubernetes multi-tenancy framework. A bug in the RoleBinding reflector used by `capsule-proxy` gives ServiceAccount tenant owners the right to list Namespaces of other tenants backed by the same owner kind and name. For example consider two tenants `solar` and `wind`. Tenant `solar`, owned by a ServiceAccount named `tenant-owner` in the Namespace `solar`. Tenant `wind`, owned by a ServiceAccount named `tenant-owner` in the Namespace `wind`. The Tenant owner `solar` would be able to list the namespaces of the Tenant `wind` and vice-versa, although this is not correct. The bug introduces an exfiltration vulnerability since allows the listing of Namespace resources of other Tenants, although just in some specific conditions: 1. `capsule-proxy` runs with the `--disable-caching=false` (default value: `false`) and 2. Tenant owners are ServiceAccount, with the same resource name, but in different Namespaces. This vulnerability doesn't allow any privilege escalation on the outer tenant Namespace-scoped resources, since the Kubernetes RBAC is enforcing this. This issue has been addressed in version 0.4.5. Users are advised to upgrade. There are no known workarounds for this vulnerability.","aliases":["GHSA-6758-979h-249x"],"modified":"2026-08-12T03:51:42.535092188Z","published":"2023-11-06T18:34:13.555Z","database_specific":{"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/46xxx/CVE-2023-46254.json","cna_assigner":"GitHub_M","cwe_ids":["CWE-200"]},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/46xxx/CVE-2023-46254.json"},{"type":"ADVISORY","url":"https://github.com/projectcapsule/capsule-proxy/security/advisories/GHSA-6758-979h-249x"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2023-46254"},{"type":"FIX","url":"https://github.com/projectcapsule/capsule-proxy/commit/615202f7b02eaec7681336bd63daed1f39ae00c5"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/projectcapsule/capsule","events":[{"introduced":"0"},{"fixed":"87e5d9b9c7911afbfe4981bb2eed36e06a540b89"}],"database_specific":{"cpe":"cpe:2.3:a:clastix:capsule:*:*:*:*:*:*:*:*","extracted_events":[{"introduced":"0"},{"fixed":"0.4.5"}],"source":"CPE_RANGE"}},{"type":"GIT","repo":"https://github.com/projectcapsule/capsule-proxy","events":[{"introduced":"0"},{"fixed":"f7bf2ca6221fac08663fe602129bf2c136f3c57d"},{"fixed":"615202f7b02eaec7681336bd63daed1f39ae00c5"}],"database_specific":{"cpe":["cpe:2.3:a:clastix:capsule:*:*:*:*:*:*:*:*","cpe:2.3:a:clastix:capsule-proxy:*:*:*:*:*:*:*:*"],"extracted_events":[{"introduced":"0"},{"fixed":"0.4.5"}],"source":["CPE_RANGE","REFERENCES"]}}],"versions":["helm-v0.4.4","v0.3.2","helm-v0.4.3","helm-v0.4.2","v0.3.1","helm-v0.4.1","v0.3.0","helm-v0.4.0","helm-v0.3.6","helm-v0.3.5","v0.2.1","helm-v0.3.1","helm-v0.3.4","helm-v0.3.3","helm-v0.3.2","v0.2.0","helm-v0.3.0","helm-v0.2.0","v0.1.3","helm-v0.1.12","v0.1.2","helm-v0.1.11","helm-v0.1.10","v0.1.2-rc1","v0.1.2-rc0","helm-v0.1.8","helm-v0.1.7","helm-v0.1.6","v0.1.1","helm-v0.1.4","v0.1.1-rc1","helm-v0.1.3","helm-v0.1.2","helm-v0.1.1","v0.1.1-rc0","v0.1.0","helm-v0.1.0","v0.1.0-rc6","v0.1.0-rc5","v0.1.0-rc4","v0.1.0-rc3","v0.1.0-rc2","v0.1.0-rc1","v0.0.5","v0.0.5-rc2","v0.0.5-rc1","v0.0.4","v0.0.3","v0.0.2","0.2.0-rc1","v0.0.1","0.0.1","helm-v0.4.9","v0.4.4","v0.4.3","v0.4.2","v0.4.1","v0.4.0","helm-v0.3.7","v0.3.3","v0.3.1-rc0","v0.3.0-rc2","v0.3.0-rc1"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-46254.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N"}]}