{"id":"CVE-2026-18677","state":"PUBLISHED","title":"Kong Mesh: a dataplane token without a workload binding can claim any workload's SPIFFE identity","description":"In Kong Mesh running in universal mode with a MeshIdentity whose SPIFFE ID path template derives from the dataplane's kuma.io/workload label, the XDS authenticator in kuma-cp validates that label only when the dataplane token is bound to a workload. Workload binding is optional, so a dataplane presenting a tags-bound token can register with kuma.io/workload set to any value and obtain another workload's SPIFFE identity.","publishedAt":"2026-08-12T18:47:06.710Z","updatedAt":"2026-08-13T14:49:27.614Z","severity":{"score":6,"label":"Medium","version":"4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N","source":"Kong"},"assigner":"Kong","products":["Kong Inc. Kong Mesh"],"affected":[{"vendor":"Kong Inc.","product":"Kong Mesh","defaultStatus":"unaffected","versions":[{"version":"2.13.0","status":"affected","lessThan":"2.13.10","versionType":"semver"},{"version":"2.14.0","status":"affected","lessThan":"2.14.2","versionType":"semver"}],"platforms":["Linux"],"modules":["kuma-cp"]}],"references":["https://github.com/kumahq/kuma/security/advisories/GHSA-744g-c785-x65q","https://github.com/kumahq/kuma/pull/17474","https://github.com/kumahq/kuma/pull/17503","https://github.com/kumahq/kuma/pull/17502","https://developer.konghq.com/mesh/changelog/"],"weaknesses":["CWE-290"],"ingestedAt":"2026-10-29T20:11:10.572Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/18xxx/CVE-2026-18677.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-18677","state":"PUBLISHED","datePublished":"2026-08-12T18:47:06.710Z","dateUpdated":"2026-08-13T14:49:27.614Z","assignerShortName":"Kong","assignerOrgId":"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb","dateReserved":"2026-08-03T15:20:45.630Z"},"containers":{"cna":{"title":"Kong Mesh: a dataplane token without a workload binding can claim any workload's SPIFFE identity","descriptions":[{"lang":"en","value":"In Kong Mesh running in universal mode with a MeshIdentity whose SPIFFE ID path template derives from the dataplane's kuma.io/workload label, the XDS authenticator in kuma-cp validates that label only when the dataplane token is bound to a workload. Workload binding is optional, so a dataplane presenting a tags-bound token can register with kuma.io/workload set to any value and obtain another workload's SPIFFE identity."}],"affected":[{"vendor":"Kong Inc.","product":"Kong Mesh","defaultStatus":"unaffected","versions":[{"version":"2.13.0","status":"affected","lessThan":"2.13.10","versionType":"semver"},{"version":"2.14.0","status":"affected","lessThan":"2.14.2","versionType":"semver"}],"platforms":["Linux"],"modules":["kuma-cp"]}],"references":[{"url":"https://github.com/kumahq/kuma/security/advisories/GHSA-744g-c785-x65q","name":"Upstream advisory GHSA-744g-c785-x65q","tags":["vendor-advisory"]},{"url":"https://github.com/kumahq/kuma/pull/17474","name":"kumahq/kuma#17474 (master)","tags":["patch"]},{"url":"https://github.com/kumahq/kuma/pull/17503","name":"kumahq/kuma#17503 (release-2.13 backport)","tags":["patch"]},{"url":"https://github.com/kumahq/kuma/pull/17502","name":"kumahq/kuma#17502 (release-2.14 backport)","tags":["patch"]},{"url":"https://developer.konghq.com/mesh/changelog/","name":"Kong MESH Changelog","tags":["release-notes"]}],"metrics":[{"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}],"cvssV4_0":{"attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"PRESENT","privilegesRequired":"LOW","userInteraction":"NONE","vulnConfidentialityImpact":"HIGH","subConfidentialityImpact":"NONE","vulnIntegrityImpact":"LOW","subIntegrityImpact":"NONE","vulnAvailabilityImpact":"NONE","subAvailabilityImpact":"NONE","exploitMaturity":"NOT_DEFINED","Safety":"NOT_DEFINED","Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","valueDensity":"NOT_DEFINED","vulnerabilityResponseEffort":"NOT_DEFINED","providerUrgency":"NOT_DEFINED","version":"4.0","baseSeverity":"MEDIUM","baseScore":6,"vectorString":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-290","lang":"en","description":"CWE-290 Authentication Bypass by Spoofing","type":"CWE"}]}],"providerMetadata":{"shortName":"Kong","orgId":"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb","dateUpdated":"2026-08-12T18:47:06.710Z"},"impacts":[{"descriptions":[{"lang":"en","value":"Workload identity spoofing"}]}],"configurations":[{"lang":"en","value":"You are affected if all of the following hold:\n\n  *  The control plane runs in universal mode.\n  *  A MeshIdentity is configured whose SPIFFE ID path template derives from the workload label, including the default universal template /workload/{{ .Workload }}.\n  *  Dataplanes authenticate with tokens that are not bound to a workload (tags-bound tokens, the common case, since workload binding is newer and optional).\n\n\n\n\nYou are not affected if:\n\n  *  The control plane runs in Kubernetes mode. Its identity template is /ns/{{ .Namespace }}/sa/{{ .ServiceAccount }}, and the control plane derives those values from the pod's real identity rather than from a label the workload sets.\n  *  Your MeshIdentity uses a SPIFFE template that does not reference the workload label.\n  *  Every dataplane whose identity derives from the workload label already uses a workload-bound token.","supportingMedia":[{"type":"text/html","base64":false,"value":"<p>You are affected if all of the following hold:</p><ul><li>The control plane runs in universal mode.</li><li>A <code>MeshIdentity</code> is configured whose SPIFFE ID path template derives from the workload label, including the default universal template <code>/workload/{{ .Workload }}</code>.</li><li>Dataplanes authenticate with tokens that are not bound to a workload (tags-bound tokens, the common case, since workload binding is newer and optional).</li></ul><p>You are not affected if:</p><ul><li>The control plane runs in Kubernetes mode. Its identity template is <code>/ns/{{ .Namespace }}/sa/{{ .ServiceAccount }}</code>, and the control plane derives those values from the pod's real identity rather than from a label the workload sets.</li><li>Your <code>MeshIdentity</code> uses a SPIFFE template that does not reference the workload label.</li><li>Every dataplane whose identity derives from the workload label already uses a workload-bound token.</li></ul>"}]}],"workarounds":[{"lang":"en","value":"Issue workload-bound dataplane tokens for every dataplane whose identity derives from the kuma.io/workload label. A workload-bound token constrains that label to the bound value, so a mismatched label is rejected at authentication.","supportingMedia":[{"type":"text/html","base64":false,"value":"<p>Issue workload-bound dataplane tokens for every dataplane whose identity derives from the <code>kuma.io/workload</code> label. A workload-bound token constrains that label to the bound value, so a mismatched label is rejected at authentication.</p>"}]}],"solutions":[{"lang":"en","value":"Upgrade to Kong Mesh 2.13.10 or 2.14.2, whichever matches your release line. In patched versions a dataplane whose identity derives from the kuma.io/workload label requires a workload-bound token; an unbound tags-only token is rejected at XDS authentication. Kubernetes mode and universal templates that do not reference the workload label keep working with unbound tokens.","supportingMedia":[{"type":"text/html","base64":false,"value":"<p>Upgrade to Kong Mesh 2.13.10 or 2.14.2, whichever matches your release line. In patched versions a dataplane whose identity derives from the <code>kuma.io/workload</code> label requires a workload-bound token; an unbound tags-only token is rejected at XDS authentication. Kubernetes mode and universal templates that do not reference the workload label keep working with unbound tokens.</p>"}]}],"timeline":[{"time":"2026-08-01T16:58:00.000Z","lang":"en","value":"Kong Mesh 2.13.10 and 2.14.2 published"}],"credits":[{"lang":"en","value":"kanywst","type":"finder"}],"source":{"discovery":"EXTERNAL"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-08-13T14:49:14.103209Z","id":"CVE-2026-18677","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-08-13T14:49:27.614Z"}}]}}}