CVE-2026-18676 (GCVE-0-2026-18676)

Vulnerability from cvelistv5 – Published: 2026-08-12 18:42 – Updated: 2026-08-12 18:43
VLAI
Title
Kong Mesh: default control plane config leaks the admin token cross-origin via a CORS wildcard and localhost admin
Summary
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.
CWE
  • CWE-346 - Origin Validation Error
  • CWE-942 - Permissive Cross-domain Policy with Untrusted Domain
Assigner
Impacted products
Vendor Product Version
Kong Inc. Kong Mesh Affected: 0 , < 2.7.25 (semver)
Affected: 2.8.0 , < 2.9.15 (semver)
Affected: 2.10.0 , < 2.11.13 (semver)
Affected: 2.12.0 , < 2.12.10 (semver)
Affected: 2.13.0 , < 2.13.5 (semver)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "modules": [
            "kuma-cp"
          ],
          "platforms": [
            "Linux"
          ],
          "product": "Kong Mesh",
          "vendor": "Kong Inc.",
          "versions": [
            {
              "lessThan": "2.7.25",
              "status": "affected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThan": "2.9.15",
              "status": "affected",
              "version": "2.8.0",
              "versionType": "semver"
            },
            {
              "lessThan": "2.11.13",
              "status": "affected",
              "version": "2.10.0",
              "versionType": "semver"
            },
            {
              "lessThan": "2.12.10",
              "status": "affected",
              "version": "2.12.0",
              "versionType": "semver"
            },
            {
              "lessThan": "2.13.5",
              "status": "affected",
              "version": "2.13.0",
              "versionType": "semver"
            }
          ]
        }
      ],
      "configurations": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eYou are affected if all of the following hold:\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003ccode\u003ekuma-cp\u003c/code\u003e runs with default config (\u003ccode\u003ecorsAllowedDomains: [\u0026quot;.*\u0026quot;]\u003c/code\u003e and \u003ccode\u003elocalhostIsAdmin: true\u003c/code\u003e).\u003c/li\u003e\u003cli\u003eThe control plane is reachable from a browser on the same machine: \u003ccode\u003ekuma-cp run\u003c/code\u003e on a developer laptop, Docker with host networking or a published port on a workstation, or \u003ccode\u003ekubectl port-forward\u003c/code\u003e from a machine that also browses the web.\u003c/li\u003e\u003cli\u003eThe operator visits a page running attacker JavaScript while the control plane is reachable.\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eYou are not affected if:\u003c/p\u003e\u003cul\u003e\u003cli\u003eThe control plane runs on a Kubernetes cluster accessed over ClusterIP, NodePort, or LoadBalancer from a remote client.\u003c/li\u003e\u003cli\u003eThe control plane runs on an SSH-administered VM with no browser on the host.\u003c/li\u003e\u003cli\u003e\u003ccode\u003eKUMA_API_SERVER_AUTHN_LOCALHOST_IS_ADMIN=false\u003c/code\u003e is set.\u003c/li\u003e\u003cli\u003e\u003ccode\u003eKUMA_API_SERVER_CORS_ALLOWED_DOMAINS\u003c/code\u003e is set to an explicit allowlist that excludes attacker origins.\u003c/li\u003e\u003c/ul\u003e"
            }
          ],
          "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."
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "eldudareeno"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eThe default \u003ccode\u003ekuma-cp\u003c/code\u003e 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.\u0026nbsp;Due to a CORS misconfiguration a cross-origin \u003ccode\u003efetch()\u003c/code\u003e from a malicious page returns the admin JWT and signing material.\u003c/p\u003e"
            }
          ],
          "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.\u00a0Due to a CORS misconfiguration a cross-origin fetch() from a malicious page returns the admin JWT and signing material."
        }
      ],
      "impacts": [
        {
          "descriptions": [
            {
              "lang": "en",
              "value": "Credential disclosure"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "Automatable": "NOT_DEFINED",
            "Recovery": "NOT_DEFINED",
            "Safety": "NOT_DEFINED",
            "attackComplexity": "LOW",
            "attackRequirements": "NONE",
            "attackVector": "NETWORK",
            "baseScore": 5.1,
            "baseSeverity": "MEDIUM",
            "exploitMaturity": "NOT_DEFINED",
            "privilegesRequired": "NONE",
            "providerUrgency": "NOT_DEFINED",
            "subAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "NONE",
            "subIntegrityImpact": "NONE",
            "userInteraction": "ACTIVE",
            "valueDensity": "NOT_DEFINED",
            "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",
            "version": "4.0",
            "vulnAvailabilityImpact": "NONE",
            "vulnConfidentialityImpact": "LOW",
            "vulnIntegrityImpact": "LOW",
            "vulnerabilityResponseEffort": "NOT_DEFINED"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-346",
              "description": "CWE-346 Origin Validation Error",
              "lang": "en",
              "type": "CWE"
            }
          ]
        },
        {
          "descriptions": [
            {
              "cweId": "CWE-942",
              "description": "CWE-942 Permissive Cross-domain Policy with Untrusted Domain",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-12T18:43:32.594Z",
        "orgId": "02762ae7-200e-4b20-9b2b-a77d5b8fc4cb",
        "shortName": "Kong"
      },
      "references": [
        {
          "name": "Upstream advisory GHSA-3vcp-chfh-f6r2",
          "tags": [
            "vendor-advisory"
          ],
          "url": "https://github.com/kumahq/kuma/security/advisories/GHSA-3vcp-chfh-f6r2"
        },
        {
          "name": "kumahq/kuma#16416 (master)",
          "tags": [
            "patch"
          ],
          "url": "https://github.com/kumahq/kuma/pull/16416"
        },
        {
          "name": "kumahq/kuma#16423 (backport)",
          "tags": [
            "patch"
          ],
          "url": "https://github.com/kumahq/kuma/pull/16423"
        },
        {
          "name": "kumahq/kuma#16424 (backport)",
          "tags": [
            "patch"
          ],
          "url": "https://github.com/kumahq/kuma/pull/16424"
        },
        {
          "name": "kumahq/kuma#16425 (backport)",
          "tags": [
            "patch"
          ],
          "url": "https://github.com/kumahq/kuma/pull/16425"
        },
        {
          "name": "kumahq/kuma#16426 (backport)",
          "tags": [
            "patch"
          ],
          "url": "https://github.com/kumahq/kuma/pull/16426"
        },
        {
          "name": "kumahq/kuma#16427 (backport)",
          "tags": [
            "patch"
          ],
          "url": "https://github.com/kumahq/kuma/pull/16427"
        },
        {
          "name": "Kong MESH Changelog",
          "tags": [
            "release-notes"
          ],
          "url": "https://developer.konghq.com/mesh/changelog/"
        }
      ],
      "solutions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eUpgrade 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 \u003ccode\u003ecorsAllowedDomains\u003c/code\u003e default changed from \u003ccode\u003e[\u0026quot;.*\u0026quot;]\u003c/code\u003e to \u003ccode\u003e[]\u003c/code\u003e, making CORS opt-in, and \u003ccode\u003elocalhostIsAdmin\u003c/code\u003e was hardened to require a direct loopback \u003ccode\u003eRemoteAddr\u003c/code\u003e and \u003ccode\u003eHost\u003c/code\u003e and to reject requests carrying proxy-hop headers (\u003ccode\u003eX-Forwarded-For\u003c/code\u003e), cross-site fetch metadata (\u003ccode\u003eSec-Fetch-Site\u003c/code\u003e), or a non-localhost \u003ccode\u003eOrigin\u003c/code\u003e. The 2.14 line shipped after the fix and was never affected.\u003c/p\u003e"
            }
          ],
          "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."
        }
      ],
      "source": {
        "discovery": "EXTERNAL"
      },
      "timeline": [
        {
          "lang": "en",
          "time": "2026-05-01T07:01:00.000Z",
          "value": "Kong Mesh patched releases published"
        },
        {
          "lang": "en",
          "time": "2026-05-09T06:15:00.000Z",
          "value": "Upstream advisory GHSA-3vcp-chfh-f6r2 published"
        }
      ],
      "title": "Kong Mesh: default control plane config leaks the admin token cross-origin via a CORS wildcard and localhost admin",
      "workarounds": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eSet \u003ccode\u003eKUMA_API_SERVER_AUTHN_LOCALHOST_IS_ADMIN=false\u003c/code\u003e after retrieving the admin token, set \u003ccode\u003eKUMA_API_SERVER_CORS_ALLOWED_DOMAINS\u003c/code\u003e to an explicit allowlist such as \u003ccode\u003ehttp://localhost:5681,http://127.0.0.1:5681\u003c/code\u003e, and do not run \u003ccode\u003ekuma-cp\u003c/code\u003e on a machine used to browse untrusted sites.\u003c/p\u003e"
            }
          ],
          "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."
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "02762ae7-200e-4b20-9b2b-a77d5b8fc4cb",
    "assignerShortName": "Kong",
    "cveId": "CVE-2026-18676",
    "datePublished": "2026-08-12T18:42:38.843Z",
    "dateReserved": "2026-08-03T15:20:44.526Z",
    "dateUpdated": "2026-08-12T18:43:32.594Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-18676\",\"sourceIdentifier\":\"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb\",\"published\":\"2026-08-12T19:17:30.813\",\"lastModified\":\"2026-08-12T19:17:30.813\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"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.\u00a0Due to a CORS misconfiguration a cross-origin fetch() from a malicious page returns the admin JWT and signing material.\"}],\"affected\":[{\"source\":\"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb\",\"affectedData\":[{\"vendor\":\"Kong Inc.\",\"product\":\"Kong Mesh\",\"defaultStatus\":\"unaffected\",\"modules\":[\"kuma-cp\"],\"platforms\":[\"Linux\"],\"versions\":[{\"version\":\"0\",\"lessThan\":\"2.7.25\",\"versionType\":\"semver\",\"status\":\"affected\"},{\"version\":\"2.8.0\",\"lessThan\":\"2.9.15\",\"versionType\":\"semver\",\"status\":\"affected\"},{\"version\":\"2.10.0\",\"lessThan\":\"2.11.13\",\"versionType\":\"semver\",\"status\":\"affected\"},{\"version\":\"2.12.0\",\"lessThan\":\"2.12.10\",\"versionType\":\"semver\",\"status\":\"affected\"},{\"version\":\"2.13.0\",\"lessThan\":\"2.13.5\",\"versionType\":\"semver\",\"status\":\"affected\"}]}]}],\"metrics\":{\"cvssMetricV40\":[{\"source\":\"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"4.0\",\"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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X\",\"baseScore\":5.1,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"attackRequirements\":\"NONE\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"ACTIVE\",\"vulnConfidentialityImpact\":\"LOW\",\"vulnIntegrityImpact\":\"LOW\",\"vulnAvailabilityImpact\":\"NONE\",\"subConfidentialityImpact\":\"NONE\",\"subIntegrityImpact\":\"NONE\",\"subAvailabilityImpact\":\"NONE\",\"exploitMaturity\":\"NOT_DEFINED\",\"confidentialityRequirement\":\"NOT_DEFINED\",\"integrityRequirement\":\"NOT_DEFINED\",\"availabilityRequirement\":\"NOT_DEFINED\",\"modifiedAttackVector\":\"NOT_DEFINED\",\"modifiedAttackComplexity\":\"NOT_DEFINED\",\"modifiedAttackRequirements\":\"NOT_DEFINED\",\"modifiedPrivilegesRequired\":\"NOT_DEFINED\",\"modifiedUserInteraction\":\"NOT_DEFINED\",\"modifiedVulnConfidentialityImpact\":\"NOT_DEFINED\",\"modifiedVulnIntegrityImpact\":\"NOT_DEFINED\",\"modifiedVulnAvailabilityImpact\":\"NOT_DEFINED\",\"modifiedSubConfidentialityImpact\":\"NOT_DEFINED\",\"modifiedSubIntegrityImpact\":\"NOT_DEFINED\",\"modifiedSubAvailabilityImpact\":\"NOT_DEFINED\",\"Safety\":\"NOT_DEFINED\",\"Automatable\":\"NOT_DEFINED\",\"Recovery\":\"NOT_DEFINED\",\"valueDensity\":\"NOT_DEFINED\",\"vulnerabilityResponseEffort\":\"NOT_DEFINED\",\"providerUrgency\":\"NOT_DEFINED\"}}]},\"weaknesses\":[{\"source\":\"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb\",\"type\":\"Secondary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-346\"},{\"lang\":\"en\",\"value\":\"CWE-942\"}]}],\"references\":[{\"url\":\"https://developer.konghq.com/mesh/changelog/\",\"source\":\"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb\"},{\"url\":\"https://github.com/kumahq/kuma/pull/16416\",\"source\":\"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb\"},{\"url\":\"https://github.com/kumahq/kuma/pull/16423\",\"source\":\"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb\"},{\"url\":\"https://github.com/kumahq/kuma/pull/16424\",\"source\":\"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb\"},{\"url\":\"https://github.com/kumahq/kuma/pull/16425\",\"source\":\"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb\"},{\"url\":\"https://github.com/kumahq/kuma/pull/16426\",\"source\":\"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb\"},{\"url\":\"https://github.com/kumahq/kuma/pull/16427\",\"source\":\"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb\"},{\"url\":\"https://github.com/kumahq/kuma/security/advisories/GHSA-3vcp-chfh-f6r2\",\"source\":\"02762ae7-200e-4b20-9b2b-a77d5b8fc4cb\"}]}}"
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…