---
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
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-02T13:17:58.780'
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
tags:
  - nvd
  - cve.org
cvssSource: cna
ingestedAt: '2026-10-02T13:19:14.161Z'
---

## 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.
