【已复现】CVE-2026-102489 Zammad 会话劫持到远程代码执行
易富贤
易富贤
源影安全团队
2026年10月8日 08:43
北京
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
Zammad 是一个开源的客服与工单(helpdesk/ticketing)系统,由德国团队基于 Ruby on Rails 框架开发,在 GitHub 上开源,同时提供社区版与商业版。它把邮件、网页表单、电话、在线聊天以及社交媒体等多种客户沟通渠道统一汇入一套工单流水线,支持自动分派、SLA 管理、知识库、统计报表与细粒度的角色权限,典型使用者是企业客服部门、内部 IT 服务台,以及各类安全应急响应组织——荷兰漏洞披露研究所 DIVD 正是它的用户之一。Zammad 的部署形态包括 DEB/RPM 软件包与官方 Docker 编排,生产环境通常由 nginx、Rails 应用服务、独立的 WebSocket 服务和后台任务进程,搭配 PostgreSQL、Redis、Memcached、Elasticsearch 等组件构成。为了让浏览器实时收发通知,前端会与服务器保持一条 WebSocket 长连接,而这条连接,正是本次漏洞的入口。
2026 年 9 月 24 日,DIVD 公开披露了一起针对自身的安全事件,并依据取证痕迹判断这是一次“由智能体 AI 驱动的攻击”。他们将入侵起点归结于自建的 Zammad 系统,并确认攻击者先后利用了两个零日漏洞:CVE-2026-102489 用于会话劫持,并最终以 zammad 系统用户身份执行代码;CVE-2026-102490 则用于将权限继续提升到 root。随后安全公司 Horizon3 在十月初发布了前者的技术分析与公开利用代码,指出触发泄漏只需向 WebSocket 端点发送一条极短的消息。我们结合上游源码、修复提交与本地实验环境,独立复现了从匿名请求到远程代码执行的完整链条,并确认受影响范围为所有使用传统 WebSocket 服务的版本,即 7.1.x 及更早,官方修复随 7.2.0 发布。
漏洞出在 WebSocket 服务的事件分发机制上,是四个小缺陷叠加的结果。服务端为每个连接保存握手时的完整 HTTP 头——其中包含浏览器的会话 Cookie——集中存放在一个全局连接注册表里;任何客户端事件到来时,这个装着所有在线用户凭据的注册表会被原封不动地整体传给事件处理器;而处理器的基类在初始化时对传入参数来者不拒,逐一设置成实例变量。攻击者只要发送一条内容为 {\"event\":\"base\"} 的消息,服务端就会按名字解析出基类并实例化,随后调用其并不存在的 run 方法,抛出 NoMethodError。Ruby 生成这条错误时会把对象的完整自我描述嵌入消息,也就是包括连接注册表在内的全部实例变量;更糟的是,异常消息被原样回传给发起请求的客户端。于是,匿名攻击者用一条消息,就换回了所有在线用户的会话 Cookie。
拿到管理员会话只是中点。Zammad 允许管理员安装扩展包,安装接口会按包内清单将文件写入应用目录,而路径校验仅禁止包含两个点号的目录回溯,并不限制可写的目标范围,这构成了任意文件写。攻击者据此构造一个恶意包,覆盖密码重置邮件的 ERB 模板,在模板中嵌入反引号包裹的 shell 命令;随后向无需认证的密码重置接口发送一个请求,Zammad 渲染邮件时便会以 zammad 用户的身份执行这条命令。我们在实验环境中端到端验证了这条链:从一条匿名 WebSocket 消息出发,依次完成会话泄漏、管理员劫持、恶意包安装与模板渲染,最终在应用容器内看到了命令执行的结果。
已关注
关注
重播 分享 赞
关闭
观看更多
更多
退出全屏
切换到竖屏全屏退出全屏
源影安全团队已关注
分享视频
,时长00:27
0/0
00:00/00:27
切换到横屏模式
继续播放
[ ]
进度条,百分之0
播放
00:00
/
00:27
00:27
倍速
全屏
倍速播放中
0.5倍0.75倍1.0倍1.5倍2.0倍
超清流畅
继续观看
【已复现】CVE-2026-102489 Zammad 会话劫持到远程代码执行
观看更多
原创
,
【已复现】CVE-2026-102489 Zammad 会话劫持到远程代码执行
源影安全团队已关注
分享点赞在看
已同步到看一看写下你的评论
视频详情
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论