文章总结: 本文分析ApacheTomcatTribes组件EncryptInterceptor的加密绕过反序列化漏洞CVE-2026-34486。该漏洞因修复CVE-2026-29146时引入缺陷,导致解密失败后仍继续反序列化流程,攻击者可通过向Tribes端口发送恶意序列化数据实现远程代码执行。文档详细描述漏洞成因、影响版本、利用条件及利用方法,并给出修复方案。 综合评分: 85 文章分类: 漏洞分析,WEB安全,应用安全,红队,漏洞预警
Apache Tomcat Tribes EncryptInterceptor 加密绕过反序列化漏洞分析(CVE-2026-34486)
原创
ap0s ap0s
ap0s
2026年5月12日 17:16 江苏
在小说阅读器读本章
去阅读
Apache Tomcat Tribes EncryptInterceptor 加密绕过反序列化漏洞分析(CVE-2026-34486)
简介
Apache Tomcat Tribes 是 Tomcat 内置的集群通信框架,为多台服务器之间提供可靠的消息传递和节点发现,是会话复制等集群功能的底层支撑。
Tomcat:完整的 Java Web 应用服务器(Servlet/JSP 容器)
Tomcat Tribes:Tomcat 内部用于“集群通信”的一个组件/框架
漏洞成因:
Tomcat Tribes是Tomcat推出的集群框架,启用了Tribes的多个Tomcat实例之间会通过Java序列化机制交换消息;当配置了EncryptInterceptor后,这些序列化字节流会被加密传输。正常情况下,接收消息的Tomcat实例只有在解密成功后才会对消息进行反序列化,但官方在修复CVE-2026-29146(Tribes EncryptInterceptor Padding Oracle漏洞)时引入了一个Bug,导致消息解密失败时后续处理流程没有被中止,字节流无论解密是否成功都会被继续转发给下层处理器,进而被反序列化执行。攻击者只需具备Tribes接收端口(默认4000)的网络访问权限,即可向其发送包含Java反序列化payload的未加密消息,完全绕过EncryptInterceptor的加密保护,实现远程代码执行。该漏洞影响Apache Tomcat 9.0.116、10.1.53和11.0.20版本。
满足以下条件的Tomcat才可以被利用:
<Cluster>在server.xml中显式启用<Cluster>的Channel中配置了EncryptInterceptor(未配置此拦截器的Tribes本就直接接受未加密消息,不属于该CVE的利用范畴)- Tribes接收端口对攻击者网络可达(默认监听在4000端口)
- classpath中存在可用的反序列化利用链(如Apache Commons Collections)
[1] Vulhub. Tomcat CVE-2026-34486 漏洞环境说明文档[EB/OL]. (2026)[2026-05-12]. https://github.com/vulhub/vulhub/blob/master/tomcat/CVE-2026-34486/README.zh-cn.md.
Tribes 通信过程
\apache-tomcat-9.0.116\lib\catalina-tribes.jar!\org\apache\catalina\tribes\transport\nio\NioReceiver.class
在bind方法中负责监听
监听对应的服务和端口
动态发现:McastService
静态发现:StaticMembershipService / StaticMembershipInterceptor
对配置好的 staticMembers 发 RPC ping,能回包就认为节点存活,失败就认为节点消失。
参考官方文档:https://tomcat.apache.org/tomcat-9.0-doc/config/cluster-interceptor.html
静态成员通常放在 StaticMembershipInterceptor 里,并配合 TcpFailureDetector 做健康检查。
通信通过sendMessage加密消息,messageReceived解密消息
Tribes 通信协议
参考官方文档
[2] Tomcat Tribes Transfer package. (2026)[2026-05-12]. https://tomcat.apache.org/tomcat-10.1-doc/api/org/apache/catalina/tribes/io/XByteBuffer.html#deserialize(byte%5B%5D).
Transfer package:
- START_DATA– 7 bytes – FLT2002
- SIZE – 4 bytes – size of the data package
- DATA – should be as many bytes as the prev SIZE
- END_DATA – 7 bytes – TLF2003
Tomcat Tribes 的通信协议本身有固定格式:
| Header | Options | Payload | Footer |
FLT2002 | len | data | TLF2003
漏洞分析
apache-tomcat-9.0.116\lib\catalina-tribes.jar!\org\apache\catalina\tribes\group\interceptors\EncryptInterceptor.class#messageReceived
在messageReceived方法中经过catch并没有终止,最终走到uper.messageReceived(msg);,问题就出现在解密失败后仍转发原始字节
跟进此方法
跟进messageReceived
调用了XByteBuffer.deserialize,最终进行反序列化
漏洞利用
伪造一个“像 Tribes 包”的明文数据即可,
- 构造一个 Tribes Message
- 直接放恶意序列化数据
- 不做 AES 加密
- 直接发到 4000/TCP
结合Tribes 包头包尾
最终字节流:
FLT2002 + len + serialized_gadget + TLF2003
[3] CVE-2026-34486-exp.py. (2026)[2026-05-12]. https://github.com/vulhub/vulhub/blob/master/tomcat/CVE-2026-34486/poc.py.
该漏洞利用的核心在于,攻击者通过绕过 EncryptInterceptor,直接向目标 Tomcat 服务器的 Tribes 集群接收端口发送未经加密的 Java 反序列化载荷。由于受影响版本的类路径中默认包含 commons-collections 3.2.1,攻击者可以利用任何 Apache Commons Collections 的 Gadget 链,最终实现远程代码执行(RCE)
java -jar ysoserial.jar CommonsCollections6 "touch /tmp/success" > payload.ser
python3 poc.py -t ip -p 4000 -f payload.ser
Patch
在高版本中,只有当解密成功才会继续执行
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:ap0s ap0s ap0s《Apache Tomcat Tribes EncryptInterceptor 加密绕过反序列化漏洞分析(CVE-2026-34486)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论