CVE-2026-65653 PUBLISHED

temporalio/tchannel-go zero-chunk call fragment causes process termination

Assigner: Temporal
Reserved: 22.07.2026 Published: 21.09.2026 Updated: 21.09.2026

github.com/temporalio/tchannel-go did not reject TChannel call fragments containing checksum metadata but no length-prefixed argument chunks. The fragment reader left its chunk slice empty and then unconditionally selected the first element. A network peer can supply such a malformed call fragment, including as a direct initial call request after completing the standard initialization handshake. On that inbound path, the resulting unrecovered Go slice-bounds panic occurs on a library-created dispatch goroutine and terminates the hosting process. This allows remote denial of service against applications that expose the listener to untrusted peers. The impact is limited to availability; no confidentiality or integrity impact was identified.

Metrics

CVSS Vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
CVSS Score: 8.7

temporalio/tchannel-go reasonable worst-case network service embedding

Product Status

Vendor Temporal Technologies, Inc.
Product temporalio/tchannel-go
Versions Default: unaffected
  • affected from 0.0.0-20150531204735-8d8ca17342b3 to 1.22.1-0.20260720194454-0cb017f6870a (excl.)

Affected Configurations

The CVSS Base score reflects an application that exposes a tchannel-go listener to untrusted network peers without an authenticated transport. The library accepts caller-supplied listeners and dialers, so an embedding application can require mutually authenticated TLS. When client certificates are required and verified, unauthenticated peers are rejected before TChannel frame parsing and the deployment should be assessed using appropriate Environmental metrics.

Workarounds

Restrict TChannel listener access to trusted peers. Where supported by the embedding application, require mutually authenticated TLS so peers without a trusted client certificate are rejected before TChannel frame parsing. External panic-recovery middleware is not a reliable mitigation because the confirmed inbound panic occurs on a library-created dispatch goroutine.

Solutions

Upgrade github.com/temporalio/tchannel-go to v1.22.1 or later. The fix rejects fragments containing no argument chunks before indexing the chunk slice.

Credits

  • An external security researcher who reported this issue responsibly to Temporal Technologies finder

References

Problem Types

  • CWE-129: Improper Validation of Array Index CWE

Impacts

  • Denial of service: one malformed TChannel call fragment can cause an unrecovered panic and terminate the process hosting the connection. No confidentiality or integrity impact was identified.