Apache Tomcat Tribes EncryptInterceptor 加密绕过反序列化漏洞分析(CVE-2026-34486)
d2550自留地
2026年5月25日 09:37
江苏
在小说阅读器读本章
去阅读
以下文章来源于ap0s
,作者ap0s
ap0s
.
安全小白
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\
io\\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
在高版本中,只有当解密成功才会继续执行
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论