{"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"],"slug":"CVE-2026-83663","body":"## Overview\n\nUncontrolled 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 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.\n\n\n\nThis issue affects Apache Thrift: before 0.25.0.\n\n\n\nUsers are recommended to upgrade to version 0.25.0, which fixes the issue.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n## Vendor advisories\n\n- **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)\n- **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)","depth":"twilight","depthScore":48,"depthScoreParts":{"impact":47.8,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}