s2
--:--:--UTC

Searching APEX

Starting…

  1. Searching Threats, IOCs & Threat Intelligence locally
  2. Querying external providers
  3. Asking AI Forensic Validator
  4. Creating new entry from validated hit

0s elapsed

CVE-2026-96770

📛 CVE Title

s2s-proxy accepts untrusted client certificates

Description

All published s2s-proxy versions through 0.2.2 are affected. In versions 0.1.16 through 0.2.2, TLS server listeners use Go's RequireAnyClientCert mode when skipCAVerification is false. This mode checks that the client holds the certificate's private key but does not verify the certificate against the configured CA. An attacker can therefore use a self-signed certificate and key to establish a TLS and yamux connection, then invoke RPCs allowed by the proxy's configuration and Temporal credentials. No certificate or private key trusted by the deployment, and no Temporal credential, is required.

Overview

State
PUBLISHED
Assigner (CNA)
Temporal
CVSS severity
CRITICAL
CVSS score
CVSS 9.3 / 10 9.3 9.3 / 10
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:H/SI:H/SA:H
Effective score
9.3 / 10 CRITICAL source: CNA overview
CWE(s)
CWE-296
Reserved
2026-09-23
Published
2026-09-23 18:58 UTC
Last updated
2026-09-23 19:36 UTC
Source
https://raw.githubusercontent.com/CVEProject/cvelistV5/main/cves/2026/96xxx/CVE-2026-96770.json
Linked Threat
CVE-2026-96770 — s2s-proxy accepts untrusted client certificates

NVD triage scoring NVD CVE 2.0

Layer NVD adds on top of the CNA's CVE record — published / last-modified timestamps, exploitability / impact subscores, and the FIRST.org EPSS probability that this CVE will be exploited in the wild in the next 30 days.

NVD published
2026-09-23 19:19:55 UTC
NVD last modified
2026-09-23 20:17:27 UTC

NVD / KEV / EPSS data refreshed 2026-09-24 04:22 UTC. Re-run the 🛰 Backfill from NVD button above to refresh.

Affected products (1)

VendorProductVersionsPlatforms
Temporal Technologies, Inc. s2s-proxy 0.0.1-alpha (affected)

Vendor references (5)

References embedded in the original CVE record by the assigning CNA.

Web references (0)

DuckDuckGo results ranked by threat-intel / vendor advisory domains. Generated by the 🔎 Find references (web) button above — same flow as the Remediations search.

No web references attached yet.

NVD-tagged references (5)

Reference list NVD curates from the CNA record, vendor advisories, and third-party reports. The tag chips below are NVD's analyst-assigned categories.

AI Forensic Analysis

Only Available for Registered Users. Sign in to view.

Raw JSON

The full cvelistV5 record. Download as CVE-2026-96770.json.

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-96770",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "yes"
                  },
                  {
                    "Technical Impact": "total"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-09-23T19:36:07.279659Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-09-23T19:36:12.488Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "collectionURL": "https://pkg.go.dev",
          "defaultStatus": "unaffected",
          "packageName": "github.com/temporalio/s2s-proxy",
          "product": "s2s-proxy",
          "programFiles": [
            "encryption/tls.go"
          ],
          "programRoutines": [
            {
              "name": "GetServerTLSConfig"
            }
          ],
          "repo": "https://github.com/temporalio/s2s-proxy",
          "vendor": "Temporal Technologies, Inc.",
          "versions": [
            {
              "lessThanOrEqual": "0.2.2",
              "status": "affected",
              "version": "0.0.1-alpha",
              "versionType": "semver"
            }
          ]
        }
      ],
      "configurations": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "<p>Exploitation requires network access to an affected TLS server listener configured with skipCAVerification set to false. Available RPCs and namespaces are limited by the proxy's allowlists and the permissions granted to its Temporal credentials.</p>"
            }
          ],
          "value": "Exploitation requires network access to an affected TLS server listener configured with skipCAVerification set to false. Available RPCs and namespaces are limited by the proxy's allowlists and the permissions granted to its Temporal credentials."
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Praetorian, who reported this issue responsibly to Temporal Technologies"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "<p>All published s2s-proxy versions through 0.2.2 are affected. In versions 0.1.16 through 0.2.2, TLS server listeners use Go's RequireAnyClientCert mode when skipCAVerification is false. This mode checks that the client holds the certificate's private key but does not verify the certificate against the configured CA. An attacker can therefore use a self-signed certificate and key to establish a TLS and yamux connection, then invoke RPCs allowed by the proxy's configuration and Temporal credentials. No certificate or private key trusted by the deployment, and no Temporal credential, is required.</p>"
            }
          ],
          "value": "All published s2s-proxy versions through 0.2.2 are affected. In versions 0.1.16 through 0.2.2, TLS server listeners use Go's RequireAnyClientCert mode when skipCAVerification is false. This mode checks that the client holds the certificate's private key but does not verify the certificate against the configured CA. An attacker can therefore use a self-signed certificate and key to establish a TLS and yamux connection, then invoke RPCs allowed by the proxy's configuration and Temporal credentials. No certificate or private key trusted by the deployment, and no Temporal credential, is required."
        }
      ],
      "impacts": [
        {
          "descriptions": [
            {
              "lang": "en",
              "value": "An attacker who can reach the listener can connect as a trusted peer with a self-signed certificate and invoke allowed RPCs through the proxy's Temporal credentials. Impact depends on the RPC and namespace allowlists and the permissions granted to those credentials. A permissive deployment can expose workflow data or allow workflow changes and deletion. Data protected by a Payload Codec remains encrypted unless the attacker can also access the customer's Codec Server or encryption keys."
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "Automatable": "NOT_DEFINED",
            "Recovery": "NOT_DEFINED",
            "Safety": "NOT_DEFINED",
            "attackComplexity": "LOW",
            "attackRequirements": "NONE",
            "attackVector": "NETWORK",
            "baseScore": 9.3,
            "baseSeverity": "CRITICAL",
            "exploitMaturity": "NOT_DEFINED",
            "privilegesRequired": "NONE",
            "providerUrgency": "NOT_DEFINED",
            "subAvailabilityImpact": "HIGH",
            "subConfidentialityImpact": "HIGH",
            "subIntegrityImpact": "HIGH",
            "userInteraction": "NONE",
            "valueDensity": "NOT_DEFINED",
            "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:H/SI:H/SA:H",
            "version": "4.0",
            "vulnAvailabilityImpact": "NONE",
            "vulnConfidentialityImpact": "NONE",
            "vulnIntegrityImpact": "HIGH",
            "vulnerabilityResponseEffort": "NOT_DEFINED"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-296",
              "description": "CWE-296: Improper Following of a Certificate's Chain of Trust",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-23T18:58:46.233Z",
        "orgId": "61241ed8-fa44-4f23-92db-b8c443751968",
        "shortName": "Temporal"
      },
      "references": [
        {
          "name": "Affected TLS server configuration in s2s-proxy 0.2.2",
          "tags": [
            "product"
          ],
          "url": "https://github.com/temporalio/s2s-proxy/blob/v0.2.2/encryption/tls.go#L47-L62"
        },
        {
          "name": "Change that introduced the affected certificate verification mode",
          "tags": [
            "product"
          ],
          "url": "https://github.com/temporalio/s2s-proxy/commit/d100c2258dbc37d7df51298ea045315f36c7eb3b"
        },
        {
          "name": "Fix pull request",
          "tags": [
            "patch"
          ],
          "url": "https://github.com/temporalio/s2s-proxy/pull/296"
        },
        {
          "name": "Fix commit",
          "tags": [
            "patch"
          ],
          "url": "https://github.com/temporalio/s2s-proxy/commit/f1dc6b9a3919d37e82545ab461cbe6bb62618d3c"
        },
        {
          "name": "Temporal Payload Codec and Codec Server documentation",
          "tags": [
            "product"
          ],
          "url": "https://docs.temporal.io/production-deployment/data-encryption#codec-server-setup"
        }
      ],
      "solutions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "<p>The fix is expected in version 0.2.3. Upgrade to version 0.2.3 or later when available.</p>"
            }
          ],
          "value": "The fix is expected in version 0.2.3. Upgrade to version 0.2.3 or later when available."
        }
      ],
      "source": {
        "discovery": "EXTERNAL"
      },
      "title": "s2s-proxy accepts untrusted client certificates",
      "workarounds": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "<p>Restrict the listener to known peer addresses or a private network, or use a TLS terminator that verifies client certificates against the intended CA. These controls reduce exposure but do not fix the proxy defect.</p>"
            }
          ],
          "value": "Restrict the listener to known peer addresses or a private network, or use a TLS terminator that verifies client certificates against the intended CA. These controls reduce exposure but do not fix the proxy defect."
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "61241ed8-fa44-4f23-92db-b8c443751968",
    "assignerShortName": "Temporal",
    "cveId": "CVE-2026-96770",
    "datePublished": "2026-09-23T18:58:46.233Z",
    "dateReserved": "2026-09-23T16:06:36.077Z",
    "dateUpdated": "2026-09-23T19:36:12.488Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}