CVE-2026-5724 (GCVE-0-2026-5724)
Vulnerability from cvelistv5
Published
2026-04-10 21:06
Modified
2026-04-13 16:10
CWE
  • CWE-306 - Missing authentication for critical function
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.
Impacted products
Vendor Product Version
Temporal Technologies, Inc. temporal Version: 1.24.0    1.30.3
Version: 1.24.0    1.29.5
Version: 1.24.0    1.28.3
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-5724",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-04-13T16:10:36.242097Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-04-13T16:10:49.014Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "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-13T16:10:49.014Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-5724\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-04-13T16:10:36.242097Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-04-13T16:10:42.117Z\"}}], \"cna\": {\"title\": \"Missing Authentication on Streaming gRPC Replication Endpoint\", \"source\": {\"discovery\": \"EXTERNAL\"}, \"credits\": [{\"lang\": \"en\", \"type\": \"finder\", \"value\": \"Tiberiu Baron of UiPath\u0027s security team\"}], \"impacts\": [{\"capecId\": \"CAPEC-115\", \"descriptions\": [{\"lang\": \"en\", \"value\": \"CAPEC-115 Authentication Bypass\"}]}], \"metrics\": [{\"format\": \"CVSS\", \"cvssV4_0\": {\"Safety\": \"NEGLIGIBLE\", \"version\": \"4.0\", \"Recovery\": \"USER\", \"baseScore\": 6.3, \"Automatable\": \"NO\", \"attackVector\": \"NETWORK\", \"baseSeverity\": \"MEDIUM\", \"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\", \"exploitMaturity\": \"NOT_DEFINED\", \"providerUrgency\": \"NOT_DEFINED\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"attackRequirements\": \"PRESENT\", \"privilegesRequired\": \"NONE\", \"subIntegrityImpact\": \"NONE\", \"vulnIntegrityImpact\": \"NONE\", \"subAvailabilityImpact\": \"NONE\", \"vulnAvailabilityImpact\": \"LOW\", \"subConfidentialityImpact\": \"LOW\", \"vulnConfidentialityImpact\": \"LOW\", \"vulnerabilityResponseEffort\": \"LOW\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"GENERAL\"}]}], \"affected\": [{\"repo\": \"https://github.com/temporalio/temporal\", \"vendor\": \"Temporal Technologies, Inc.\", \"product\": \"temporal\", \"versions\": [{\"status\": \"affected\", \"version\": \"1.24.0\", \"versionType\": \"semver\", \"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\"}], \"packageName\": \"temporal\", \"collectionURL\": \"https://github.com\", \"defaultStatus\": \"affected\"}], \"references\": [{\"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\", \"tags\": [\"patch\"]}], \"x_generator\": {\"engine\": \"Vulnogram 1.0.1\"}, \"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.\", \"supportingMedia\": [{\"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\", \"base64\": false}]}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-306\", \"description\": \"CWE-306 Missing authentication for critical function\"}]}], \"providerMetadata\": {\"orgId\": \"61241ed8-fa44-4f23-92db-b8c443751968\", \"shortName\": \"Temporal\", \"dateUpdated\": \"2026-04-10T21:22:30.134Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2026-5724\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-04-13T16:10:49.014Z\", \"dateReserved\": \"2026-04-06T21:59:05.129Z\", \"assignerOrgId\": \"61241ed8-fa44-4f23-92db-b8c443751968\", \"datePublished\": \"2026-04-10T21:06:31.788Z\", \"assignerShortName\": \"Temporal\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


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 seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…