{"id":"CVE-2026-18676","state":"PUBLISHED","title":"Kong Mesh: default control plane config leaks the admin token cross-origin via a CORS wildcard and localhost admin","description":"The default kuma-cp configuration in Kong Mesh reveals the admin bootstrap token and signing keys to any webpage the operator visits while the control plane is reachable from their browser. Due to a CORS misconfiguration a cross-origin fetch() from a malicious page returns the admin JWT and signing material.","publishedAt":"2026-08-12T18:42:38.843Z","updatedAt":"2026-08-13T14:50:43.069Z","severity":{"score":5.1,"label":"Medium","version":"4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:L/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":"0","status":"affected","lessThan":"2.7.25","versionType":"semver"},{"version":"2.8.0","status":"affected","lessThan":"2.9.15","versionType":"semver"},{"version":"2.10.0","status":"affected","lessThan":"2.11.13","versionType":"semver"},{"version":"2.12.0","status":"affected","lessThan":"2.12.10","versionType":"semver"},{"version":"2.13.0","status":"affected","lessThan":"2.13.5","versionType":"semver"}],"platforms":["Linux"],"modules":["kuma-cp"]}],"references":["https://github.com/kumahq/kuma/security/advisories/GHSA-3vcp-chfh-f6r2","https://github.com/kumahq/kuma/pull/16416","https://github.com/kumahq/kuma/pull/16423","https://github.com/kumahq/kuma/pull/16424","https://github.com/kumahq/kuma/pull/16425","https://github.com/kumahq/kuma/pull/16426","https://github.com/kumahq/kuma/pull/16427","https://developer.konghq.com/mesh/changelog/"],"weaknesses":["CWE-346","CWE-942"],"ingestedAt":"2026-10-29T20:11:10.572Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/18xxx/CVE-2026-18676.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-18676","state":"PUBLISHED","datePublished":"2026-08-12T18:42:38.843Z","dateUpdated":"2026-08-13T14:50:43.069Z","assignerShortName":"Kong","assignerOrgId":"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb","dateReserved":"2026-08-03T15:20:44.526Z"},"containers":{"cna":{"title":"Kong Mesh: default control plane config leaks the admin token cross-origin via a CORS wildcard and localhost admin","descriptions":[{"lang":"en","value":"The default kuma-cp configuration in Kong Mesh reveals the admin bootstrap token and signing keys to any webpage the operator visits while the control plane is reachable from their browser. Due to a CORS misconfiguration a cross-origin fetch() from a malicious page returns the admin JWT and signing material."}],"affected":[{"vendor":"Kong Inc.","product":"Kong Mesh","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"2.7.25","versionType":"semver"},{"version":"2.8.0","status":"affected","lessThan":"2.9.15","versionType":"semver"},{"version":"2.10.0","status":"affected","lessThan":"2.11.13","versionType":"semver"},{"version":"2.12.0","status":"affected","lessThan":"2.12.10","versionType":"semver"},{"version":"2.13.0","status":"affected","lessThan":"2.13.5","versionType":"semver"}],"platforms":["Linux"],"modules":["kuma-cp"]}],"references":[{"url":"https://github.com/kumahq/kuma/security/advisories/GHSA-3vcp-chfh-f6r2","name":"Upstream advisory GHSA-3vcp-chfh-f6r2","tags":["vendor-advisory"]},{"url":"https://github.com/kumahq/kuma/pull/16416","name":"kumahq/kuma#16416 (master)","tags":["patch"]},{"url":"https://github.com/kumahq/kuma/pull/16423","name":"kumahq/kuma#16423 (backport)","tags":["patch"]},{"url":"https://github.com/kumahq/kuma/pull/16424","name":"kumahq/kuma#16424 (backport)","tags":["patch"]},{"url":"https://github.com/kumahq/kuma/pull/16425","name":"kumahq/kuma#16425 (backport)","tags":["patch"]},{"url":"https://github.com/kumahq/kuma/pull/16426","name":"kumahq/kuma#16426 (backport)","tags":["patch"]},{"url":"https://github.com/kumahq/kuma/pull/16427","name":"kumahq/kuma#16427 (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":"NONE","privilegesRequired":"NONE","userInteraction":"ACTIVE","vulnConfidentialityImpact":"LOW","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":5.1,"vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-346","lang":"en","description":"CWE-346 Origin Validation Error","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-942","lang":"en","description":"CWE-942 Permissive Cross-domain Policy with Untrusted Domain","type":"CWE"}]}],"providerMetadata":{"shortName":"Kong","orgId":"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb","dateUpdated":"2026-08-12T18:43:32.594Z"},"impacts":[{"descriptions":[{"lang":"en","value":"Credential disclosure"}]}],"configurations":[{"lang":"en","value":"You are affected if all of the following hold:\n\n  *  kuma-cp runs with default config (corsAllowedDomains: [\".*\"] and localhostIsAdmin: true).\n  *  The control plane is reachable from a browser on the same machine: kuma-cp run on a developer laptop, Docker with host networking or a published port on a workstation, or kubectl port-forward from a machine that also browses the web.\n  *  The operator visits a page running attacker JavaScript while the control plane is reachable.\n\n\n\n\nYou are not affected if:\n\n  *  The control plane runs on a Kubernetes cluster accessed over ClusterIP, NodePort, or LoadBalancer from a remote client.\n  *  The control plane runs on an SSH-administered VM with no browser on the host.\n  *  KUMA_API_SERVER_AUTHN_LOCALHOST_IS_ADMIN=false is set.\n  *  KUMA_API_SERVER_CORS_ALLOWED_DOMAINS is set to an explicit allowlist that excludes attacker origins.","supportingMedia":[{"type":"text/html","base64":false,"value":"<p>You are affected if all of the following hold:</p><ul><li><code>kuma-cp</code> runs with default config (<code>corsAllowedDomains: [&quot;.*&quot;]</code> and <code>localhostIsAdmin: true</code>).</li><li>The control plane is reachable from a browser on the same machine: <code>kuma-cp run</code> on a developer laptop, Docker with host networking or a published port on a workstation, or <code>kubectl port-forward</code> from a machine that also browses the web.</li><li>The operator visits a page running attacker JavaScript while the control plane is reachable.</li></ul><p>You are not affected if:</p><ul><li>The control plane runs on a Kubernetes cluster accessed over ClusterIP, NodePort, or LoadBalancer from a remote client.</li><li>The control plane runs on an SSH-administered VM with no browser on the host.</li><li><code>KUMA_API_SERVER_AUTHN_LOCALHOST_IS_ADMIN=false</code> is set.</li><li><code>KUMA_API_SERVER_CORS_ALLOWED_DOMAINS</code> is set to an explicit allowlist that excludes attacker origins.</li></ul>"}]}],"workarounds":[{"lang":"en","value":"Set KUMA_API_SERVER_AUTHN_LOCALHOST_IS_ADMIN=false after retrieving the admin token, set KUMA_API_SERVER_CORS_ALLOWED_DOMAINS to an explicit allowlist such as http://localhost:5681,http://127.0.0.1:5681, and do not run kuma-cp on a machine used to browse untrusted sites.","supportingMedia":[{"type":"text/html","base64":false,"value":"<p>Set <code>KUMA_API_SERVER_AUTHN_LOCALHOST_IS_ADMIN=false</code> after retrieving the admin token, set <code>KUMA_API_SERVER_CORS_ALLOWED_DOMAINS</code> to an explicit allowlist such as <code>http://localhost:5681,http://127.0.0.1:5681</code>, and do not run <code>kuma-cp</code> on a machine used to browse untrusted sites.</p>"}]}],"solutions":[{"lang":"en","value":"Upgrade to Kong Mesh 2.7.25, 2.9.15, 2.11.13, 2.12.10 or 2.13.5, whichever matches your release line. In patched versions the corsAllowedDomains default changed from [\".*\"] to [], making CORS opt-in, and localhostIsAdmin was hardened to require a direct loopback RemoteAddr and Host and to reject requests carrying proxy-hop headers (X-Forwarded-For), cross-site fetch metadata (Sec-Fetch-Site), or a non-localhost Origin. The 2.14 line shipped after the fix and was never affected.","supportingMedia":[{"type":"text/html","base64":false,"value":"<p>Upgrade to Kong Mesh 2.7.25, 2.9.15, 2.11.13, 2.12.10 or 2.13.5, whichever matches your release line. In patched versions the <code>corsAllowedDomains</code> default changed from <code>[&quot;.*&quot;]</code> to <code>[]</code>, making CORS opt-in, and <code>localhostIsAdmin</code> was hardened to require a direct loopback <code>RemoteAddr</code> and <code>Host</code> and to reject requests carrying proxy-hop headers (<code>X-Forwarded-For</code>), cross-site fetch metadata (<code>Sec-Fetch-Site</code>), or a non-localhost <code>Origin</code>. The 2.14 line shipped after the fix and was never affected.</p>"}]}],"timeline":[{"time":"2026-05-01T07:01:00.000Z","lang":"en","value":"Kong Mesh patched releases published"},{"time":"2026-05-09T06:15:00.000Z","lang":"en","value":"Upstream advisory GHSA-3vcp-chfh-f6r2 published"}],"credits":[{"lang":"en","value":"eldudareeno","type":"finder"}],"source":{"discovery":"EXTERNAL"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-08-13T14:50:34.609630Z","id":"CVE-2026-18676","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:50:43.069Z"}}]}}}