文章总结: 腾讯云鼎实验室CodeBuddySecurity发现Suricata8.x首个RCE漏洞CVE-2026-94083,CVSS9.4严重级别,源于协议切换类型混淆导致远程代码执行,影响8.0.0至8.0.6版本。建议升级至8.0.7,临时缓解可关闭DoH2解析。该发现展示AI代码审计在深度漏洞挖掘中的价值。
综合评分: 100
文章分类: 漏洞分析,应急响应,漏洞预警,安全工具
腾讯CodeBuddy Security发现Suricata史上首个RCE漏洞
云鼎实验室
2026年9月24日 16:48
广东
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
以下文章来源于腾讯安全
,作者腾讯云鼎实验室
腾讯安全
.
致力于成为产业数字化升级的安全战略官,守护政府及企业的数据、系统、业务安全,为产业数字化升级保驾护航
2026年8月,腾讯云鼎实验室已上线的商业化AI代码审计产品 CodeBuddy Security在 Suricata 8.x 中发现一例远程命令执行漏洞。整个审计过程中,全自动化执行漏洞发现、对抗验证、PoC构造,全程零人工干预。
Suricata 是 OISF 主导维护的开源高性能网络威胁检测与防护引擎。作为同时覆盖IDS(入侵检测)、IPS(在线阻断)与NSM(网络安全监控)的全能引擎,Suricata 已被全球企业、云服务商、运营商广泛采用,成为现代威胁检测体系中事实上的标准底层组件。
目前该漏洞已被公开授予 CVE-2026-94083 编号,并获得官方致谢 CodeBuddy Security。
这是Suricata首次在GHSA安全公告里承认并写明的攻击者任意代码执行:”execute arbitrary code from an attacker”,也是该项目流量引擎侧历史上首个被证明的RCE漏洞,极具典型意义。
协议切换问题中,官方使用 OSS-Fuzz 曾发现的 CVE-2026-45764 只触及到单次协议切换上的崩溃,属于这条状态机上较浅的一层,Fuzz未能触及连续两次合法协议切换过程中再次强制切换的复杂状态机问题。
这类跨协议多状态切换的路径极深,Fuzz手段难以覆盖,而这正是 CodeBuddy Security 的优势。
CodeBuddy Security 会把漏洞发现做成一次有约束的全自动化流程。本漏洞中,产品通过历史修复、公开公告和攻击面分析,把范围收束到协议解析器,系统沿调用链继续排查潜在类型混淆路径,追踪连续切换和强制切换会不会在旧状态释放前改写协议类型。系统从该模块切入,跨文件跟随数据流,提出漏洞假设,再由独立上下文复核这条路径是否真实可达。通过复核的候选进入隔离环境,由系统自动构造真实环境和流量并执行 PoC,直到错误的状态释放被复现出来,至此确信漏洞真实有效、可被利用。
CodeBuddy Security 由腾讯云鼎实验室、腾讯科恩实验室与腾讯云代码分析(TCA)团队联合研发,现已支持 SaaS、VPC、私有化部署与 CI/CD 等多种接入方式。更多详情可见产品介绍:https://www.codebuddy.cn/security
漏洞风险
未经过身份验证的攻击者可远程利用该漏洞,只要让流量引擎正在解析的明文流量先完成 h2c 升级,再发起一条 DoH2 请求,不依赖任何检测规则就能触发类型混淆释放,默认配置下导致引擎进程崩溃。
在同根因的其他协议路径上,配合特定常用配置选项,触发相同的协议切换窗口,通过流量构造特定内存布局,可实现任意命令执行。
漏洞详情
背景介绍:协议升级的状态切换。 Suricata的应用层解析器会为每条网络流维护协议状态对象。当客户端通过 HTTP/1.1 的 Upgrade 机制升级到 HTTP/2,并在同一条流上进入 DoH2(基于HTTP/2的DNS-over-HTTPS)时,内部需要执行一次协议状态切换,释放 HTTP/1 阶段的状态结构,初始化 HTTP/2 阶段的状态结构。这个切换的正确性,依赖一个前提,”当前该释放哪一类状态”的信息在切换瞬间仍然有效。
缺陷成因:切换顺序与状态标记。 问题出在客户端于同一个数据包内完成HTTP/1.1向HTTP/2、进而向DoH2升级的场景。协议切换逻辑在旧的 HTTP/1 状态尚未释放之前,SCAppLayerForceProtocolChange 不判断这次切换是否还挂着,就先行把保存下来的旧类型改写成当前类型。随后负责清理的环节,依据已经改写的协议类型调用 http2_state_free,实际释放的却是仍属于 HTTP/1、与当前协议类型不匹配的内存,形成类型混淆(type confusion)并导致非法释放,默认配置下进程崩溃。
命令执行:在同根因的其他特定协议路径上,配合特定常用配置选项,攻击者可通过协议状态重叠,将特定可控数据覆盖到 HTTP/2 HeaderBlock Vec 的指针与长度字段。此时旧协议对象与 HTTP/2 动态头表叠层在一起,而攻击者写入的指针和长度被析构函数当成头表遍历,依靠这块内存叠层,以及Rust Rc引用计数的原子递减特性,多层遍历逐步将特定函数 GOT 改写为 system 函数。最终通过原协议功能触发system执行攻击者数据,完成远程命令执行。
RCE 已在官方 8.0.6/8.0.5 镜像容器的实时模式中验证并提交官方,RCE完成后流量引擎保持运行、且可多次命令执行。
| 字段 | 内容 |
| — | — |
| 漏洞名称 | Suricata远程命令执行漏洞 |
| 漏洞编号 | CVE-2026-94083 |
| 危害等级 | 严重(Critical,MITRE CVSS 9.4) |
| 漏洞类型 | 类型混淆(CWE-843)/ 远程代码执行 |
| 影响范围 | Suricata 8.0.0 ~ 8.0.6(8.x 默认开启 DoH2) |
| 参考链接 | https://github.com/OISF/suricata/security/advisories/GHSA-729c-fcmm-j57w |
#
受影响版本
8.0.0 <= Suricata < 8.0.7
触发前提是开启 app-layer.protocols.doh2,该配置在 8.x 中为默认开启。
#
官方修复方案(推荐)
升级至8.0.7:
https://github.com/OISF/suricata/releases/tag/suricata-8.0.7
升级前建议做好配置与规则备份,避免意外数据丢失。
| 当前版本范围 | 升级至 |
| — | — |
| 8.0.0 ~ 8.0.6 | Suricata 8.0.7 |
#
缓解措施(如暂时无法升级)
在配置中关闭 DoH2 解析(app-layer.protocols.doh2.enabled: no),作为升级前的临时措施。
漏洞参考
官方公告:
https://github.com/OISF/suricata/security/advisories/GHSA-729c-fcmm-j57w
NVD公告:
https://nvd.nist.gov/vuln/detail/CVE-2026-94083
8.0.7发布说明:
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:云鼎实验室 《腾讯CodeBuddy Security发现Suricata史上首个RCE漏洞》