XQUIC库XRING漏洞:远程未认证客户端可轻松崩溃HTTP/3服务器
阿里云XQUIC库曝XRING漏洞,远程未认证客户端利用合法QPACK流量即可触发整数下溢,导致HTTP/3服务器崩溃。影响v1.9.4及之前所有版本,PoC公开,官方暂未修复。建议临时禁用QPACK动态表或关闭HTTP/3。
🔓 Critical 漏洞利用
阿里云开源的XQUIC库(HTTP/3实现)存在一个未修复的整数下溢漏洞(XRING),攻击者仅需发送约260字节的合法QPACK流量即可触发内存越界复制,导致服务器进程崩溃。该漏洞影响XQUIC v1.9.4及之前所有版本,以及基于它的Tengine Web服务器,目前尚无补丁和CVE编号。
来源:The Hacker News | 2026-07-10 | 原文链接
🔍 关键发现
- 漏洞存在于XQUIC的QPACK动态表环形缓冲区(ring buffer)扩容逻辑中,一种边界情况下使用错误的大小值计算剩余数据长度,导致size_t无符号整数下溢,拷贝长度接近最大值。
- 攻击无需认证、无需畸形报文,仅通过QPACK控制流请求将动态表从64字节扩容至65字节,即可触发特定分支。若编译时未启用_FORTIFY_SOURCE,则越界写入可能进一步被利用。
- 该漏洞自XQUIC 2022年1月首次公开发布以来一直存在,PoC已公开。FoxIO研究员于4月7日按照项目安全策略联系阿里云,多次跟进无回应后于7月8日公开披露。
⚔️ 攻击链分析
1. 攻击者与目标HTTP/3服务器建立QUIC连接。 2. 通过QPACK编码流发送SETTINGS帧,将动态表容量设置为64字节,并填充数据使写指针靠近环形缓冲区尾部。 3. 再次发送SETTINGS帧请求将容量调整为65字节,触发XQUIC的缓冲区扩容代码,进入存在整数下溢的特定分支。 4. 错误计算的拷贝长度导致memcpy越界读取旧缓冲区并写入新缓冲区之外,引发段错误或崩溃。
🚩 失陷指标 (IOC)
受影响组件:XQUIC <= v1.9.4受影响服务:Tengine(阿里云Nginx衍生版)及任何嵌入XQUIC的HTTP/3服务器
🛡️ 缓解建议
- ✅ 临时缓解:在服务器配置中将SETTINGS_QPACK_MAX_TABLE_CAPACITY设置为0,禁用QPACK动态表(仅使用静态表压缩)。
- ✅ 若业务允许,可暂时关闭HTTP/3支持,回退至HTTP/2或HTTP/1.1。
- ✅ 关注阿里云安全公告及XQUIC仓库,等待官方补丁发布后立即升级。
涉及漏洞:[]
⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。
🤖 常见问题解答(FAQ)
❓ 该漏洞是否需要认证?
不需要。任何远程客户端均可通过发送完全合法的QPACK流量触发,无需登录或颁发证书。
❓ 目前是否有在野利用报告?
FoxIO仅演示了崩溃,未证实能实现代码执行,且截至公开日未发现实际利用案例。
❓ 临时缓解措施中设置容量为0会影响哪些功能?
禁用QPACK动态表后,HTTP/3头部压缩效率降低,但仍可正常工作。所有发送的头部都将使用静态表或逐字传输,不会影响协议兼容性。