# CVE-2026-81029: OpenMetadata before 2.0.0 JWT Disclosure via Unvalidated SAML and OIDC Redirect URI

Status: published. Published: 2026-08-26. Updated: 2026-11-08.

OpenMetadata accepts a caller-supplied post-authentication redirect target and appends the issued token to it. SamlLoginServlet reads the callback request parameter and stores it in the HTTP session without comparing it against any configured or registered destination, and the assertion consumer servlet later formats that stored value into a URL carrying the freshly issued JWT together with the account's email and name before sending the redirect. The OIDC and OAuth2 handler follows the same pattern with its own redirect parameter and the issued identity token. A request naming a destination the attacker controls therefore causes the server to deliver a valid token for whoever completes the login to that destination. Because the token authenticates API calls as that account, a user who follows such a link and authenticates hands over control of their account. Version 2.0.0 removes the caller-supplied callback parameter; no 1.x release validates it.

## Remediation

No remediation reported in collected sources

## Affected products and versions

- open-metadata / OpenMetadata (open-metadata/OpenMetadata): ≥ 0; < 2.0.0 (affected, semver). Source: CNA: VulnCheck

## Severity and prioritization

- CVSS 4.0: 8.5 (high); CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N; source: CNA: VulnCheck

- CVSS 3.1: 8.1 (high); CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N; source: CNA: VulnCheck

- CISA KEV: No listing in collected sources

- EPSS: 0.55% as of 2026-11-08; percentile 46.43%

- SSVC: exploitation poc; automatable no; technical impact total; source ADP: CISA-ADP

- Weaknesses: CWE-601

## Exploit evidence

- exploit: https://github.com/open-metadata/OpenMetadata/issues/29662 (ADP: CISA-ADP)

## References

- https://github.com/open-metadata/OpenMetadata (CNA: VulnCheck; product)

- https://github.com/open-metadata/OpenMetadata/issues/29662 (CNA: VulnCheck; issue-tracking)

- https://github.com/open-metadata/OpenMetadata/blob/1.12.1/openmetadata-service/src/main/java/org/openmetadata/service/security/saml/SamlLoginServlet.java (CNA: VulnCheck; technical-description)

- https://github.com/open-metadata/OpenMetadata/security/advisories/GHSA-3f34-r7gw-5f28 (CNA: VulnCheck; third-party-advisory, vendor-advisory)

- https://www.vulncheck.com/advisories/openmetadata-before-2.0.0-jwt-disclosure-via-unvalidated-saml-and-oidc-redirect-uri (CNA: VulnCheck; third-party-advisory)

- https://github.com/open-metadata/OpenMetadata/issues/29662 (ADP: CISA-ADP; exploit)

## Provenance

- CNA: VulnCheck: https://www.cve.org/CVERecord?id=CVE-2026-81029; retrieved 2026-11-08; source updated 2026-11-08

- FIRST EPSS: https://api.first.org/data/v1/epss?cve=CVE-2026-81029; retrieved 2026-11-08; source updated Not reported

Revision: 5de226f7ebe87788c6e7457f902e7b85f7c0deca2c6c9ee24635fd60e39940ad

Canonical: https://y2.dev/cve/CVE-2026-81029

## Agent and API access

Public CVE pages, Markdown, and JSON are free to read without an account or API key.

- Public catalog: https://y2.dev/cve/index.json. Follow nextCursor with the same search, filters, sort, and limit (1–100). A null cursor marks the end.

- WebMCP: search_cve_disclosures, get_cve_disclosure, get_cve_page_markdown, get_y2_cve_access. Available in compatible browsers.

- Cyber API: https://api.y2.dev/api/v2/cyber/cves and https://api.y2.dev/api/v2/cyber/cves/{cveId}.

- Y2 Pro or Elite: create a workspace API key with the intel:cyber scope and send Authorization: Bearer <Y2_API_KEY>. Setup: https://y2.dev/docs/api/create-key.

- x402: Pay per request without an account or API key. Omit Authorization, read the HTTP 402 PAYMENT-REQUIRED challenge, validate its current requirements, and retry with PAYMENT-SIGNATURE through an authorized payment client. These browser tools never make payments. Guide: https://y2.dev/docs/api/x402.

- OpenAPI: https://y2.dev/api/openapi.yaml. Agent access metadata: https://y2.dev/cve/agent.json.

Collected public records only. Check source status for coverage and freshness.