---
id: CVE-2026-83663
title: "Uncontrolled Recursion vulnerability in Apache Thrift go bindings.\n\n\n\nBoth Go transports satisfy a read out of a buffered frame and, when that frame\_yields no payload bytes, read the next frame and call `Read` again instead of\_looping"
summary: "Uncontrolled Recursion vulnerability in Apache Thrift go bindings.\n\n\n\nBoth Go transports satisfy a read out of a buffered frame and, when that frame\_yields no payload bytes, read the next frame and call `Read` again instead of\_looping. A…"
severity: high
cvss: 8.7
cvssVector: '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'
cwe:
  - CWE-674
  - CWE-770
vendor: Apache Software Foundation
product: github.com/apache/thrift
affected:
  - github.com/apache/thrift < 0.25.0
published: '2026-10-02'
updated: '2026-10-02'
sourceUpdated: '2026-10-02T18:17:05.747'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-83663'
references:
  - url: 'https://lists.apache.org/thread/33otcgbqd27wf6qq810q56znzbomnhg1'
    label: security@apache.org
  - url: 'https://lists.apache.org/thread/yjz317wq7h86q9k8ws6ton0ojgl8hjct'
    label: security@apache.org
  - url: >-
      https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-83663.json
  - url: 'https://access.redhat.com/security/cve/CVE-2026-83663'
  - url: 'https://bugzilla.redhat.com/show_bug.cgi?id=2545170'
  - url: 'https://www.cve.org/CVERecord?id=CVE-2026-83663'
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-83663'
  - url: 'https://access.redhat.com/errata/RHSA-2026:79368'
tags:
  - nvd
  - cve.org
  - csaf
  - vex
  - red-hat
ssvc:
  exploitation: none
  automatable: 'yes'
  technicalImpact: partial
  timestamp: '2026-10-02T17:15:08.471242Z'
cvssSource: cna
ingestedAt: '2026-10-02T13:19:14.161Z'
scores:
  cna: 8.7
  vendor: 7.5
epss: 0.00277
epssPercentile: 0.20052
patched:
  - openshift_distributed_tracing 3.11.2
---

## Overview

Uncontrolled Recursion vulnerability in Apache Thrift go bindings.



Both Go transports satisfy a read out of a buffered frame and, when that frame yields no payload bytes, read the next frame and call `Read` again instead of looping. A peer produces such a frame for 4 bytes in `TFramedTransport` (a declared size of zero) or 18 bytes in `THeaderTransport` (a header block that fills the frame), so nothing bounds the depth. The Go stack limit is reached as a `fatal error`, which `recover()` cannot catch, so the whole process dies.



This issue affects Apache Thrift: before 0.25.0.



Users are recommended to upgrade to version 0.25.0, which fixes the issue.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Vendor advisories

- **Red Hat VEX** · Important · affected: Ansible Automation Orchestrator 2026, Cryostat 4, Logging Subsystem for Red Hat OpenShift, Multicluster Global Hub, Red Hat AI Inference Server, Red Hat Ceph Storage 5, … · no fix planned: Red Hat AI Inference Server, Red Hat OpenShift Container Platform 4, Red Hat Ceph Storage 5, Red Hat Ceph Storage 6, … · updated 2026-10-23 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-83663.json)
- **RHSA-2026:79368** · Red Hat · fixed in: Red Hat OpenShift distributed tracing 3.11.2 · released 2026-10-08 · [advisory](https://access.redhat.com/errata/RHSA-2026:79368)
