Ejabberd DoS via malformed stanza · CVE-2011-4320
摘要
Ejabberd是一款流行的开源即时通讯服务器,使用Erlang/OTP语言编写。CVE-2011-4320是一个存在于ejabberd mod_pubsub模块中的拒绝服务漏洞。远程认证攻击者可以通过发送一个格式畸形(缺乏node属性)的publish标签XMPP消息节(stanza),触发服务器进入无限循环,从而耗尽系统资源,导致服务不可用。
受影响版本
- erlang / ejabberd (Erlang) 包
- 受影响版本:
<= 2.1.8>= 3.0.0-alpha-1, <= 3.0.0-alpha-3
- 已修复版本:
2.1.93.0.0-alpha-4
漏洞详情
漏洞根源于mod_pubsub.erl模块的代码逻辑缺陷。当模块处理一个包含publish标签但缺少必需的node属性的XMPP消息节时,其解析逻辑会进入一个无法退出的循环状态。这导致Erlang虚拟机中处理该请求的进程(或整个服务器,取决于具体情况)持续占用CPU资源,无法处理其他请求,从而实现拒绝服务攻击。
漏洞利用
攻击者需要拥有一个有效的认证账户。通过向存在漏洞的ejabberd服务器发送特制的XMPP消息节(即一个<publish/>元素,其内部缺少或具有格式错误的node属性),即可触发此漏洞。
修复与缓解
- 官方修复: 建议所有用户升级到已修复的版本(2.1.9 或 3.0.0-alpha-4)。修复代码提交可见于ejabberd的Git仓库提交
d3c4eab和d5b4d67。 - 临时缓解: 在网络层面限制或监控异常的XMPP流量模式,或通过防火墙策略限制对发布-订阅服务的访问。
相关链接
- NVD详情页: https://nvd.nist.gov/vuln/detail/CVE-2011-4320
- 官方问题追踪: https://support.process-one.net/browse/EJAB-1498
- 安全邮件列表讨论:
- ejabberd 2.1.9 发行说明: http://www.process-one.net/en/ejabberd/release_notes/release_note_ejabberd_2.1.9
- GitHub Advisory: GHSA-2h3q-v47h-f4rc
- 源代码仓库: processone/ejabberd
安全分类
- 严重等级: Moderate(中危)
- CWE 弱点: CWE-400 - 不受控制的资源消耗
- EPSS 分数: 1.178% (第78百分位数,估计未来30天内被利用的概率)