CVE-2026-5724 (GCVE-0-2026-5724)

Vulnerability from cvelistv5 – Published: 2026-04-10 21:06 – Updated: 2026-04-10 21:22
VLAI?
Title
Missing Authentication on Streaming gRPC Replication Endpoint
Summary
The frontend gRPC server's streaming interceptor chain did not include the authorization interceptor. When a ClaimMapper and Authorizer are configured, unary RPCs enforce authentication and authorization, but the streaming AdminService/StreamWorkflowReplicationMessages endpoint accepted requests without credentials. This endpoint is registered on the same port as WorkflowService and cannot be disabled independently. An attacker with network access to the frontend port could open the replication stream without authentication. Data exfiltration is possible, but  only when a configured replication target is correctly configured and the attacker has knowledge of the cluster configuration, as the history service validates cluster IDs and peer membership before returning replication data. Temporal Cloud is not affected.
CWE
  • CWE-306 - Missing authentication for critical function
Assigner
Impacted products
Vendor Product Version
Temporal Technologies, Inc. temporal Affected: 1.24.0 , ≤ 1.30.3 (semver)
Affected: 1.24.0 , ≤ 1.29.5 (semver)
Affected: 1.24.0 , ≤ 1.28.3 (semver)
Create a notification for this product.
Credits
Tiberiu Baron of UiPath's security team
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "collectionURL": "https://github.com",
          "defaultStatus": "affected",
          "packageName": "temporal",
          "product": "temporal",
          "repo": "https://github.com/temporalio/temporal",
          "vendor": "Temporal Technologies, Inc.",
          "versions": [
            {
              "lessThanOrEqual": "1.30.3",
              "status": "affected",
              "version": "1.24.0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "1.29.5",
              "status": "affected",
              "version": "1.24.0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "1.28.3",
              "status": "affected",
              "version": "1.24.0",
              "versionType": "semver"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Tiberiu Baron of UiPath\u0027s security team"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cdiv\u003eThe frontend gRPC server\u0027s streaming interceptor chain did not include the authorization interceptor. When a\u0026nbsp;\u003ccode\u003eClaimMapper\u003c/code\u003e\u0026nbsp;and\u0026nbsp;\u003ccode\u003eAuthorizer\u003c/code\u003e\u0026nbsp;are configured, unary RPCs enforce authentication and authorization, but the streaming\u0026nbsp;\u003ccode\u003eAdminService/StreamWorkflowReplicationMessages\u003c/code\u003e\u0026nbsp;endpoint accepted requests without credentials. This endpoint is registered on the same port as\u0026nbsp;\u003ccode\u003eWorkflowService\u003c/code\u003e\u0026nbsp;and cannot be disabled independently. An attacker with network access to the frontend port could open the replication stream without authentication. Data exfiltration is possible, but\u0026nbsp; only when a configured replication target is correctly configured and the attacker has knowledge of the cluster configuration, as the history service validates cluster IDs and peer membership before returning replication data.\u003c/div\u003e\u003cdiv\u003e\u003cbr\u003e\u003c/div\u003e\u003cdiv\u003eTemporal Cloud is not affected.\u003cspan\u003e\u003c/span\u003e\u003c/div\u003e"
            }
          ],
          "value": "The frontend gRPC server\u0027s streaming interceptor chain did not include the authorization interceptor. When a\u00a0ClaimMapper\u00a0and\u00a0Authorizer\u00a0are configured, unary RPCs enforce authentication and authorization, but the streaming\u00a0AdminService/StreamWorkflowReplicationMessages\u00a0endpoint accepted requests without credentials. This endpoint is registered on the same port as\u00a0WorkflowService\u00a0and cannot be disabled independently. An attacker with network access to the frontend port could open the replication stream without authentication. Data exfiltration is possible, but\u00a0 only when a configured replication target is correctly configured and the attacker has knowledge of the cluster configuration, as the history service validates cluster IDs and peer membership before returning replication data.\n\n\n\n\nTemporal Cloud is not affected."
        }
      ],
      "impacts": [
        {
          "capecId": "CAPEC-115",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-115 Authentication Bypass"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "Automatable": "NO",
            "Recovery": "USER",
            "Safety": "NEGLIGIBLE",
            "attackComplexity": "LOW",
            "attackRequirements": "PRESENT",
            "attackVector": "NETWORK",
            "baseScore": 6.3,
            "baseSeverity": "MEDIUM",
            "exploitMaturity": "NOT_DEFINED",
            "privilegesRequired": "NONE",
            "providerUrgency": "NOT_DEFINED",
            "subAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "LOW",
            "subIntegrityImpact": "NONE",
            "userInteraction": "NONE",
            "valueDensity": "NOT_DEFINED",
            "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:L/SC:L/SI:N/SA:N/S:N/AU:N/R:U/RE:L",
            "version": "4.0",
            "vulnAvailabilityImpact": "LOW",
            "vulnConfidentialityImpact": "LOW",
            "vulnIntegrityImpact": "NONE",
            "vulnerabilityResponseEffort": "LOW"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-306",
              "description": "CWE-306 Missing authentication for critical function",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-04-10T21:22:30.134Z",
        "orgId": "61241ed8-fa44-4f23-92db-b8c443751968",
        "shortName": "Temporal"
      },
      "references": [
        {
          "tags": [
            "patch"
          ],
          "url": "https://github.com/temporalio/temporal/releases/tag/v1.29.6"
        },
        {
          "tags": [
            "patch"
          ],
          "url": "https://github.com/temporalio/temporal/releases/tag/v1.30.4"
        },
        {
          "tags": [
            "patch"
          ],
          "url": "https://github.com/temporalio/temporal/releases/tag/v1.28.4"
        }
      ],
      "source": {
        "discovery": "EXTERNAL"
      },
      "title": "Missing Authentication on Streaming gRPC Replication Endpoint",
      "x_generator": {
        "engine": "Vulnogram 1.0.1"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "61241ed8-fa44-4f23-92db-b8c443751968",
    "assignerShortName": "Temporal",
    "cveId": "CVE-2026-5724",
    "datePublished": "2026-04-10T21:06:31.788Z",
    "dateReserved": "2026-04-06T21:59:05.129Z",
    "dateUpdated": "2026-04-10T21:22:30.134Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-5724\",\"sourceIdentifier\":\"security@temporal.io\",\"published\":\"2026-04-10T21:16:28.497\",\"lastModified\":\"2026-04-10T21:16:28.497\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"The frontend gRPC server\u0027s streaming interceptor chain did not include the authorization interceptor. When a\u00a0ClaimMapper\u00a0and\u00a0Authorizer\u00a0are configured, unary RPCs enforce authentication and authorization, but the streaming\u00a0AdminService/StreamWorkflowReplicationMessages\u00a0endpoint accepted requests without credentials. This endpoint is registered on the same port as\u00a0WorkflowService\u00a0and cannot be disabled independently. An attacker with network access to the frontend port could open the replication stream without authentication. Data exfiltration is possible, but\u00a0 only when a configured replication target is correctly configured and the attacker has knowledge of the cluster configuration, as the history service validates cluster IDs and peer membership before returning replication data.\\n\\n\\n\\n\\nTemporal Cloud is not affected.\"}],\"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:N/VC:L/VI:N/VA:L/SC:L/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:N/AU:N/R:U/V:X/RE:L/U:X\",\"baseScore\":6.3,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"attackRequirements\":\"PRESENT\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"vulnConfidentialityImpact\":\"LOW\",\"vulnIntegrityImpact\":\"NONE\",\"vulnAvailabilityImpact\":\"LOW\",\"subConfidentialityImpact\":\"LOW\",\"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\":\"NEGLIGIBLE\",\"Automatable\":\"NO\",\"Recovery\":\"USER\",\"valueDensity\":\"NOT_DEFINED\",\"vulnerabilityResponseEffort\":\"LOW\",\"providerUrgency\":\"NOT_DEFINED\"}}]},\"weaknesses\":[{\"source\":\"security@temporal.io\",\"type\":\"Secondary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-306\"}]}],\"references\":[{\"url\":\"https://github.com/temporalio/temporal/releases/tag/v1.28.4\",\"source\":\"security@temporal.io\"},{\"url\":\"https://github.com/temporalio/temporal/releases/tag/v1.29.6\",\"source\":\"security@temporal.io\"},{\"url\":\"https://github.com/temporalio/temporal/releases/tag/v1.30.4\",\"source\":\"security@temporal.io\"}]}}"
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

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…