CVE-2026-55971 (CVSS 9.8) - Heap-based Buffer Overflow vulnerability in Apache Thrift C++ bindings. This is
CVE-2026-55971:Apache Thrift C++绑定堆缓冲区溢出漏洞,CVSS 9.8,远程未认证攻击者可利用特制消息触发远程代码执行。影响Thrift < 0.24.0。本文提供详细技术分析、攻击场景及修复建议。
CVE-2026-55971 (CVSS 9.8) - Heap-based Buffer Overflow vulnerability in Apache Thrift C++ bindings. This is
📋 漏洞概述
Apache Thrift C++绑定存在堆缓冲区溢出漏洞(CVE-2026-55971),远程未认证攻击者可利用特制消息触发RCE。
📋 基础信息
| 受影响版本 | Apache Thrift C++ bindings before 0.24.0 |
| 漏洞类型 | 堆溢出 |
| CVSS | 9.8 · Critical |
| CVE | CVE-2026-55971 |
🔬 漏洞根因
在Thrift C++绑定的反序列化过程中,处理可变长度字段(如字符串或二进制数据)时未正确校验用户提供的长度值。攻击者可以构造一个超长的长度字段,导致在堆上分配过小缓冲区后进行memcpy或类似操作,从而发生堆缓冲区溢出。这通常源于对TLV(类型-长度-值)格式中长度字段的信任,缺乏边界检查。
🎯 攻击场景
1. 攻击者构造一个恶意的Thrift协议消息,在消息头或数据结构中填入远大于实际数据长度的数值(例如,长度字段设为0xFFFFFFFF)。 2. 攻击者通过TCP或HTTP向目标服务发送该消息(前提是服务监听并接受Thrift连接)。 3. 目标服务使用受影响版本的C++绑定接收并解析该消息,根据虚假长度分配一块远小于攻击者期望的堆缓冲区。 4. 在后续的数据拷贝过程中(如readString或readBinary),服务将攻击者提供的完整payload写入过小的堆缓冲区,导致溢出覆盖相邻的堆元数据或函数指针。 5. 攻击者通过精心构造溢出数据实现代码执行(如覆盖vtable指针或返回地址),从而获得远程代码执行权限。成功标志:攻击者在目标服务器上执行任意命令。
💥 漏洞影响
远程未认证攻击者可利用该漏洞实现远程代码执行(RCE),完全控制受影响服务器。由于Apache Thrift广泛应用于微服务通信、分布式系统(如Hadoop、Cassandra、Finagle等),影响范围广泛,可能导致数据泄露、服务中断或横向移动。
🛡️ 修复建议
立即升级Apache Thrift至版本0.24.0或更高版本。对于无法立即升级的系统,可采取临时缓解措施:在服务前端部署WAF,过滤异常大的长度字段;使用非C++的Thrift绑定(如Java或Python)作为过渡;限制Thrift服务的网络访问权限(如仅允许内网通信);启用ASLR和DEP/NX等系统级防护。
📎 参考链接
- https://nvd.nist.gov/vuln/detail/CVE-2026-55971
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-55971
🚨 威胁评估
| 📈 EPSS 利用概率 | 暂无数据 |
| 🚨 CISA KEV | 未被已知利用 |
| 🔧 公开 PoC | 暂无公开 PoC |
⚠️ 本文由漏洞情报系统自动生成,仅供安全研究与防御参考。生成时间: 2026-07-29 01:00 | 来源: NVD-Latest
🤖 常见问题解答(FAQ)
❓ 如何检测是否受该漏洞影响?
检查Thrift版本:运行`thrift --version`或查看依赖文件,若版本低于0.24.0且使用了C++绑定,则受影响。也可通过扫描暴露端口的Thrift服务,发送特制payload观察崩溃行为(需谨慎)。
❓ 临时缓解措施有哪些?
在入口处限制Thrift消息大小(如设置maxReadBufferBytes),或使用反向代理过滤异常长度字段;关闭不必要的Thrift服务;或切换至其他语言绑定(如Java、Go)直至升级。
❓ 该漏洞影响哪些业务场景?
所有使用Apache Thrift C++绑定进行RPC通信的服务,常见于大数据组件(Hive、HBase、Cassandra)、分布式追踪(Jaeger)、以及Facebook、Twitter等内部框架。