Erlang/OTP 内置 SSH 守护进程中的一个严重缺陷允许未认证的远程攻击者通过发送精心构造的 SSH 连接协议消息(在认证完成前)实现完全的远程代码执行。
CVE-2025-32433 是影响 Erlang/OTP SSH 服务器实现的一个关键漏洞(CVSS 10.0)。
攻击者可以在预认证阶段发送消息编号 ≥ 80(根据 RFC 4254,这些编号保留用于认证后的消息)的 SSH 消息来利用此漏洞。服务器未能正确实施状态处理,导致任意代码执行。
| OTP 系列 | 受影响版本 | 已修补版本 |
|---|---|---|
| OTP 27 | ≤ 27.3.2 | 27.3.3 |
| OTP 26 | ≤ 26.2.5.10 | 26.2.5.11 |
| OTP 25 | ≤ 25.3.2.19 | 25.3.2.20 |
| 更旧版本 | 从 17.0 到 24.x 的所有版本 | 建议升级 |
注意:只有 OTP 25、26 和 27 获得官方安全补丁。更旧的版本已经停止维护。
根据 SSH 协议规范,连接协议消息(消息编号 80+)必须在用户认证成功之后才能处理。
易受攻击的 Erlang/OTP SSH 服务器在未认证状态下没有正确断开或忽略此类消息,导致了通向 RCE 的路径。
官方补丁:在消息处理逻辑中增加了严格的状态检查。
升级到已修补的 OTP 版本:
然后重新构建并部署您的 Erlang/Elixir 应用程序。
官方 Erlang/OTP 公告:
https://github.com/erlang/otp/security/advisories/GHSA-37cp-fgq5-7wc2
关键补丁提交:
:ssh.stop() 或移除 ssh 应用程序)公开的 PoC 漏洞利用在披露后不久即发布。利用过程简单,不需要凭据。
该漏洞已被添加到 CISA KEV 目录中,并且已在野外被积极利用(尤其是针对 OT 网络和防火墙)。
任何运行 Erlang/OTP SSH 服务器的系统(ssh.daemon/1、ssh:daemon/2 等)都可能存在漏洞。包括:
不受影响:纯 SSH 客户端使用或未启动内置 SSH 守护进程的应用程序。
最后更新:2026年4月
为安全与 Erlang 社区制作 ❤️
欢迎星标、fork 或贡献改进!