Description
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.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| Apache Software Foundation | Apache Thrift | < 0.25.0 | 0.25.0 |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | thrift | No fix yet | — |
| Debian 13 | thrift | No fix yet | — |
| Debian 12 | thrift | No fix yet | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 26.10 | thrift | No fix yet | — |
| Ubuntu 26.04 LTS | thrift | No fix yet | — |
| Ubuntu 24.04 LTS | thrift | No fix yet | — |
| Ubuntu 22.04 LTS | thrift | No fix yet | — |
| Ubuntu 20.04 LTS | thrift | No fix yet | — |
Azure Linux
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Azure Linux 3 | telegraf | 1.31.0-35 | — |
| Azure Linux 3 | thrift +4 | No fix yet | — |
Wolfi
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Wolfi rolling | opentelemetry-collector-contrib | 0.163.0-r0 | — |
References
- https://lists.apache.org/thread/33otcgbqd27wf6qq810q56znzbomnhg1 vendor-advisory
- https://lists.apache.org/thread/yjz317wq7h86q9k8ws6ton0ojgl8hjct vendor-advisory