{"api_version":"1","generated_at":"2026-08-12T00:08:00+00:00","cve":"CVE-2026-65655","urls":{"html":"https://cve.report/CVE-2026-65655","api":"https://cve.report/api/cve/CVE-2026-65655.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-65655","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-65655"},"summary":{"title":"Temporal UI Server may set OAuth credential cookies without Secure behind a TLS-terminating reverse proxy","description":"When OAuth authentication is enabled and browser-facing TLS terminates at a reverse proxy that forwards the callback to Temporal UI Server over HTTP, affected versions derive authentication-cookie Secure attributes from the proxy-to-server connection. Temporal UI Server can therefore issue access-token cookies, and refresh-token cookies when provided by the identity provider, without Secure even though the browser completed login over HTTPS.\n\n\n\nA victim who visits attacker-controlled content while a credential remains live may expose that credential only if the attacker can also steer traffic for the UI hostname, prevent the browser's HTTPS connection from succeeding, serve the hostname over HTTP, and read a later same-site plaintext request. A malicious website alone cannot read the cookie, and passive observation of a successful TLS connection is insufficient. Effective HSTS, a blocking HTTPS-only warning, or TLS re-encryption between the proxy and Temporal UI Server prevents the demonstrated disclosure path.\n\n\n\nA recovered credential may be replayed within the victim's assigned permissions. Refresh-token replay additionally depends on the identity provider's issuance, expiry, rotation, and reuse-detection behavior.","state":"PUBLISHED","assigner":"Temporal","published_at":"2026-08-11 20:18:31","updated_at":"2026-08-11 21:17:45"},"problem_types":["CWE-614","CWE-614 CWE-614: Sensitive Cookie in HTTPS Session Without 'Secure' Attribute"],"metrics":[{"version":"4.0","source":"security@temporal.io","type":"Secondary","score":"2.3","severity":"LOW","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/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","data":{"version":"4.0","vectorString":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/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":2.3,"baseSeverity":"LOW","attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"PRESENT","privilegesRequired":"NONE","userInteraction":"PASSIVE","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"}},{"version":"4.0","source":"CNA","type":"CVSS","score":"2.3","severity":"LOW","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N","data":{"Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","Safety":"NOT_DEFINED","attackComplexity":"LOW","attackRequirements":"PRESENT","attackVector":"NETWORK","baseScore":2.3,"baseSeverity":"LOW","exploitMaturity":"NOT_DEFINED","privilegesRequired":"NONE","providerUrgency":"NOT_DEFINED","subAvailabilityImpact":"NONE","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","userInteraction":"PASSIVE","valueDensity":"NOT_DEFINED","vectorString":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N","version":"4.0","vulnAvailabilityImpact":"NONE","vulnConfidentialityImpact":"LOW","vulnIntegrityImpact":"LOW","vulnerabilityResponseEffort":"NOT_DEFINED"}}],"references":[{"url":"https://github.com/temporalio/ui-server/releases/tag/v2.53.1","name":"https://github.com/temporalio/ui-server/releases/tag/v2.53.1","refsource":"security@temporal.io","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/temporalio/ui-server/commit/821cf598371353f1b579dfe1e87aeb3638b041d6","name":"https://github.com/temporalio/ui-server/commit/821cf598371353f1b579dfe1e87aeb3638b041d6","refsource":"security@temporal.io","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/temporalio/ui-server/commit/8876b80b63003688ab736f45ef28885695a4f6db","name":"https://github.com/temporalio/ui-server/commit/8876b80b63003688ab736f45ef28885695a4f6db","refsource":"security@temporal.io","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/temporalio/ui-server/blob/v2.53.1/server/auth/auth.go#L87-L153","name":"https://github.com/temporalio/ui-server/blob/v2.53.1/server/auth/auth.go#L87-L153","refsource":"security@temporal.io","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/temporalio/ui-server/releases/tag/v2.53.2","name":"https://github.com/temporalio/ui-server/releases/tag/v2.53.2","refsource":"security@temporal.io","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/temporalio/ui-server/blob/v2.53.1/server/route/auth.go#L281-L316","name":"https://github.com/temporalio/ui-server/blob/v2.53.1/server/route/auth.go#L281-L316","refsource":"security@temporal.io","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/temporalio/ui/pull/3806","name":"https://github.com/temporalio/ui/pull/3806","refsource":"security@temporal.io","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/temporalio/ui-server/commit/7b9ff533fb51beba75497c0a192c66775c08f279","name":"https://github.com/temporalio/ui-server/commit/7b9ff533fb51beba75497c0a192c66775c08f279","refsource":"security@temporal.io","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-65655","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-65655","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Temporal Technologies, Inc.","product":"Temporal UI Server","version":"affected 2.7.0 2.53.2 semver","platforms":[]}],"timeline":[],"solutions":[{"source":"CNA","title":"","value":"Upgrade to Temporal UI Server v2.53.2 or later. The fix derives the authentication-cookie Secure attribute from the configured browser-facing OAuth callback URL instead of the proxy-to-server connection and applies that decision consistently to all authentication cookies.","time":"","lang":"en"}],"workarounds":[{"source":"CNA","title":"","value":"Configure TLS between the reverse proxy and Temporal UI Server, enforce HSTS for the public UI hostname, and block plaintext HTTP. These controls prevent the demonstrated disclosure path but do not correct the configuration-dependent cookie attribute.","time":"","lang":"en"}],"exploits":[],"credits":[{"source":"CNA","value":"An external security researcher who reported this issue responsibly to Temporal Technologies","lang":"en"}],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"metrics":[{"other":{"content":{"id":"CVE-2026-65655","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","timestamp":"2026-08-11T20:15:46.742171Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2026-08-11T20:15:56.858Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"collectionURL":"https://pkg.go.dev","defaultStatus":"unaffected","modules":["OIDC authentication cookies"],"packageName":"github.com/temporalio/ui-server/v2","product":"Temporal UI Server","programFiles":["server/auth/auth.go","server/route/auth.go"],"repo":"https://github.com/temporalio/ui-server","vendor":"Temporal Technologies, Inc.","versions":[{"lessThan":"2.53.2","status":"affected","version":"2.7.0","versionType":"semver"}]}],"configurations":[{"lang":"en","supportingMedia":[{"base64":false,"type":"text/html","value":"<p>The affected configuration enables OAuth authentication, exposes Temporal UI Server to browsers over HTTPS through a TLS-terminating reverse proxy, and forwards requests from that proxy to Temporal UI Server over HTTP. Credential disclosure additionally requires a later plaintext HTTP request for the same UI hostname while a credential remains live, no effective HSTS or blocking HTTPS-only warning, and an attacker able to steer and read that traffic.</p>"}],"value":"The affected configuration enables OAuth authentication, exposes Temporal UI Server to browsers over HTTPS through a TLS-terminating reverse proxy, and forwards requests from that proxy to Temporal UI Server over HTTP. Credential disclosure additionally requires a later plaintext HTTP request for the same UI hostname while a credential remains live, no effective HSTS or blocking HTTPS-only warning, and an attacker able to steer and read that traffic."}],"credits":[{"lang":"en","type":"finder","value":"An external security researcher who reported this issue responsibly to Temporal Technologies"}],"descriptions":[{"lang":"en","supportingMedia":[{"base64":false,"type":"text/html","value":"<p>When OAuth authentication is enabled and browser-facing TLS terminates at a reverse proxy that forwards the callback to Temporal UI Server over HTTP, affected versions derive authentication-cookie Secure attributes from the proxy-to-server connection. Temporal UI Server can therefore issue access-token cookies, and refresh-token cookies when provided by the identity provider, without Secure even though the browser completed login over HTTPS.</p><p>A victim who visits attacker-controlled content while a credential remains live may expose that credential only if the attacker can also steer traffic for the UI hostname, prevent the browser's HTTPS connection from succeeding, serve the hostname over HTTP, and read a later same-site plaintext request. A malicious website alone cannot read the cookie, and passive observation of a successful TLS connection is insufficient. Effective HSTS, a blocking HTTPS-only warning, or TLS re-encryption between the proxy and Temporal UI Server prevents the demonstrated disclosure path.</p><p>A recovered credential may be replayed within the victim's assigned permissions. Refresh-token replay additionally depends on the identity provider's issuance, expiry, rotation, and reuse-detection behavior.</p>"}],"value":"When OAuth authentication is enabled and browser-facing TLS terminates at a reverse proxy that forwards the callback to Temporal UI Server over HTTP, affected versions derive authentication-cookie Secure attributes from the proxy-to-server connection. Temporal UI Server can therefore issue access-token cookies, and refresh-token cookies when provided by the identity provider, without Secure even though the browser completed login over HTTPS.\n\n\n\nA victim who visits attacker-controlled content while a credential remains live may expose that credential only if the attacker can also steer traffic for the UI hostname, prevent the browser's HTTPS connection from succeeding, serve the hostname over HTTP, and read a later same-site plaintext request. A malicious website alone cannot read the cookie, and passive observation of a successful TLS connection is insufficient. Effective HSTS, a blocking HTTPS-only warning, or TLS re-encryption between the proxy and Temporal UI Server prevents the demonstrated disclosure path.\n\n\n\nA recovered credential may be replayed within the victim's assigned permissions. Refresh-token replay additionally depends on the identity provider's issuance, expiry, rotation, and reuse-detection behavior."}],"impacts":[{"descriptions":[{"lang":"en","value":"Disclosure and possible replay of one victim's live, permission-scoped access or refresh credential. Confidentiality and integrity impact are limited to that credential's permissions. No direct availability impact was established."}]}],"metrics":[{"cvssV4_0":{"Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","Safety":"NOT_DEFINED","attackComplexity":"LOW","attackRequirements":"PRESENT","attackVector":"NETWORK","baseScore":2.3,"baseSeverity":"LOW","exploitMaturity":"NOT_DEFINED","privilegesRequired":"NONE","providerUrgency":"NOT_DEFINED","subAvailabilityImpact":"NONE","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","userInteraction":"PASSIVE","valueDensity":"NOT_DEFINED","vectorString":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/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-614","description":"CWE-614: Sensitive Cookie in HTTPS Session Without 'Secure' Attribute","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-08-11T19:29:39.620Z","orgId":"61241ed8-fa44-4f23-92db-b8c443751968","shortName":"Temporal"},"references":[{"name":"Access-token cookie implementation introduced in v2.7.0","url":"https://github.com/temporalio/ui-server/commit/821cf598371353f1b579dfe1e87aeb3638b041d6"},{"name":"Refresh-token cookie implementation introduced in v2.45.2","url":"https://github.com/temporalio/ui-server/commit/7b9ff533fb51beba75497c0a192c66775c08f279"},{"name":"Affected OAuth credential-cookie implementation in v2.53.1","url":"https://github.com/temporalio/ui-server/blob/v2.53.1/server/auth/auth.go#L87-L153"},{"name":"Affected route-cookie implementation in v2.53.1","url":"https://github.com/temporalio/ui-server/blob/v2.53.1/server/route/auth.go#L281-L316"},{"name":"Latest confirmed affected release","tags":["release-notes"],"url":"https://github.com/temporalio/ui-server/releases/tag/v2.53.1"},{"name":"Fix pull request","tags":["patch"],"url":"https://github.com/temporalio/ui/pull/3806"},{"name":"Fix mirrored to Temporal UI Server","tags":["patch"],"url":"https://github.com/temporalio/ui-server/commit/8876b80b63003688ab736f45ef28885695a4f6db"},{"name":"First fixed release","tags":["release-notes"],"url":"https://github.com/temporalio/ui-server/releases/tag/v2.53.2"}],"solutions":[{"lang":"en","supportingMedia":[{"base64":false,"type":"text/html","value":"<p>Upgrade to Temporal UI Server v2.53.2 or later. The fix derives the authentication-cookie Secure attribute from the configured browser-facing OAuth callback URL instead of the proxy-to-server connection and applies that decision consistently to all authentication cookies.</p>"}],"value":"Upgrade to Temporal UI Server v2.53.2 or later. The fix derives the authentication-cookie Secure attribute from the configured browser-facing OAuth callback URL instead of the proxy-to-server connection and applies that decision consistently to all authentication cookies."}],"source":{"discovery":"EXTERNAL"},"title":"Temporal UI Server may set OAuth credential cookies without Secure behind a TLS-terminating reverse proxy","workarounds":[{"lang":"en","supportingMedia":[{"base64":false,"type":"text/html","value":"<p>Configure TLS between the reverse proxy and Temporal UI Server, enforce HSTS for the public UI hostname, and block plaintext HTTP. These controls prevent the demonstrated disclosure path but do not correct the configuration-dependent cookie attribute.</p>"}],"value":"Configure TLS between the reverse proxy and Temporal UI Server, enforce HSTS for the public UI hostname, and block plaintext HTTP. These controls prevent the demonstrated disclosure path but do not correct the configuration-dependent cookie attribute."}]}},"cveMetadata":{"assignerOrgId":"61241ed8-fa44-4f23-92db-b8c443751968","assignerShortName":"Temporal","cveId":"CVE-2026-65655","datePublished":"2026-08-11T19:29:39.620Z","dateReserved":"2026-07-22T18:08:48.925Z","dateUpdated":"2026-08-11T20:15:56.858Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-11 20:18:31","lastModifiedDate":"2026-08-11 21:17:45","problem_types":["CWE-614","CWE-614 CWE-614: Sensitive Cookie in HTTPS Session Without 'Secure' Attribute"],"metrics":{"cvssMetricV40":[{"source":"security@temporal.io","type":"Secondary","cvssData":{"version":"4.0","vectorString":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/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":2.3,"baseSeverity":"LOW","attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"PRESENT","privilegesRequired":"NONE","userInteraction":"PASSIVE","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"}}],"ssvcV203":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","ssvcData":{"timestamp":"2026-08-11T20:15:46.742171Z","id":"CVE-2026-65655","options":[{"exploitation":"none"},{"automatable":"no"},{"technicalImpact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"65655","Ordinal":"1","Title":"Temporal UI Server may set OAuth credential cookies without Secu","CVE":"CVE-2026-65655","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"65655","Ordinal":"1","NoteData":"When OAuth authentication is enabled and browser-facing TLS terminates at a reverse proxy that forwards the callback to Temporal UI Server over HTTP, affected versions derive authentication-cookie Secure attributes from the proxy-to-server connection. Temporal UI Server can therefore issue access-token cookies, and refresh-token cookies when provided by the identity provider, without Secure even though the browser completed login over HTTPS.\n\n\n\nA victim who visits attacker-controlled content while a credential remains live may expose that credential only if the attacker can also steer traffic for the UI hostname, prevent the browser's HTTPS connection from succeeding, serve the hostname over HTTP, and read a later same-site plaintext request. A malicious website alone cannot read the cookie, and passive observation of a successful TLS connection is insufficient. Effective HSTS, a blocking HTTPS-only warning, or TLS re-encryption between the proxy and Temporal UI Server prevents the demonstrated disclosure path.\n\n\n\nA recovered credential may be replayed within the victim's assigned permissions. Refresh-token replay additionally depends on the identity provider's issuance, expiry, rotation, and reuse-detection behavior.","Type":"Description","Title":"Temporal UI Server may set OAuth credential cookies without Secu"}]}}}