Advisory Database
  • Advisories
  • Dependency Scanning
  1. golang
  2. ›
  3. github.com/projectcapsule/capsule
  4. ›
  5. CVE-2026-61672

CVE-2026-61672: Capsule: Tenant owner bypasses Capsule's forbidden namespace/service/node label and annotation enforcement

September 18, 2026

Capsule lets a cluster administrator forbid specific metadata keys that tenant owners must not place on their own resources: Tenant.spec.namespaceOptions.forbiddenLabels / forbiddenAnnotations (namespaces), Tenant.spec.serviceOptions.forbiddenLabels / forbiddenAnnotations (Services), and the cluster-wide forbidden worker-node labels/annotations. These lists are an isolation control — they exist to stop a tenant owner from setting metadata that other controllers or admission plugins key on (Pod Security Admission labels, kubernetes.io/metadata.name, LoadBalancer/externalIP service annotations, scheduler annotations, vendor labels that grant network reach, etc.). The validating webhooks enforce them through api.ValidateForbidden, which calls ForbiddenListSpec.ExactMatch(key) for every key the tenant submits.

ExactMatch is broken. It sorts the denied list case-insensitively (sort.SliceStable with a strings.ToLower comparator) and then performs a byte-order binary search (sort.SearchStrings) over the result. sort.SearchStrings is only correct on a slice sorted in plain byte-ascending order. Whenever the denied list contains an entry whose case-insensitive position differs from its byte position — which happens any time the list mixes a capitalised key with lowercase keys, because ASCII uppercase letters (0x41–0x5A) sort before lowercase (0x61–0x7A) by byte but are interleaved by ToLower — the binary search lands on the wrong index and ExactMatch returns false for a key that is literally present in the denied list. The webhook then allows the forbidden metadata.

A tenant owner (who legitimately holds patch/create rights on their own tenant-owned namespaces and Services) can therefore set a metadata key the administrator explicitly forbade, defeating the control and reaching metadata-driven cross-tenant / system effects of exactly the kind Capsule’s forbidden lists are meant to prevent. The bug is deterministic, requires no race, and is present unchanged on main HEAD.

References

  • github.com/advisories/GHSA-gjw4-3v3v-rqxg
  • github.com/projectcapsule/capsule/commit/755cef54bf4a1bc56d6692130132bc70755bef46
  • github.com/projectcapsule/capsule/pull/1982
  • github.com/projectcapsule/capsule/releases/tag/v0.13.7
  • github.com/projectcapsule/capsule/security/advisories/GHSA-gjw4-3v3v-rqxg
  • nvd.nist.gov/vuln/detail/CVE-2026-61672

Code Behaviors & Features

Detect and mitigate CVE-2026-61672 with GitLab Dependency Scanning

Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →

Affected versions

All versions before 0.13.7

Fixed versions

  • 0.13.7

Solution

Upgrade to version 0.13.7 or above.

Impact 7.1 HIGH

CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:H/A:N

Learn more about CVSS

Weakness

  • CWE-697: Incorrect Comparison
  • CWE-863: Incorrect Authorization

Source file

go/github.com/projectcapsule/capsule/CVE-2026-61672.yml

Spotted a mistake? Edit the file on GitLab.

  • Site Repo
  • About GitLab
  • Terms
  • Privacy Statement
  • Contact

Page generated Tue, 22 Sep 2026 12:21:07 +0000.