GoAhead TLS 缺陷允许已吊销的客户端证书并使会话可被解密
- 浏览次数 86
- 喜欢 0
GoAhead 嵌入式 Web 服务器将证书吊销列表加载到其默认 TLS 后端中,但从未开启吊销检查,因此在受影响的配置上,已吊销的客户端证书仍可通过登录。
该缺陷存在于使用 OpenSSL 后端并启用双向 TLS(mutual-TLS)的构建中——即服务器检查客户端证书、客户端也验证服务器证书,且配置了吊销列表以阻止已吊销证书的场景。
这是操作者主动开启的配置;默认构建没有。2026 年 8 月 2 日发布给设备制造商、并于 10 月 12 日公开发布的 GoAhead 6.1.1 修复了该问题。
GoAhead 是一个小型 Web 服务器,设备制造商将其内置到固件中,用于在路由器、打印机、网关和工业控制器上运行管理页面。其制造商 EmbedThis 表示,它运行在数亿台设备中。
该缺陷由 FoxIO 的 Sébastien Féry 发现,他在 10 月 26 日的一篇文章中描述了该问题及另外两个 TLS 问题。
在受影响的构建上,服务器在启动时加载吊销列表文件且不报告任何错误,因此配置了它的操作者完全有理由认为吊销检查正在生效。但实际上并没有。证书已被吊销的客户端(例如被盗或退役的设备)会像证书仍然有效一样完成握手,并获得该身份所允许的任何访问权限。
在 FoxIO 针对 GoAhead 6.1.0 与 OpenSSL 3.6.2 的测试中,在开启颁发者检查的情况下,已吊销的证书被接受。
OpenSSL 公告将已吊销客户端证书描述为被静默接受。要被利用,构建必须使用 OpenSSL 后端并要求客户端证书、配置受信任的证书颁发机构包且开启颁发者检查,并配置了吊销列表;攻击者必须持有一张由受信任颁发机构签名且已被列为吊销的证书。使用 Mbed TLS 后端的构建不受影响;该后端通过单独的代码路径检查吊销。
公告中的标识符为 CVE-2026-115881,EmbedThis 将其评为 9.1。截至 10 月 27 日,该标识符及下文其他标识符尚未在公开的 CVE 和 NVD 数据库中生效;EmbedThis 表示已申请。严重性评级为厂商自评。
研究人员还涵盖了另外两个问题,每个都与特定的 TLS 构建相关。版本和修复不同,因此下表按后端进行了映射:
| TLS 构建 | 问题 | 受影响版本 | 修复或临时选项 |
|---|---|---|---|
| OpenSSL(默认) | 吊销列表已加载但从未执行;已吊销的客户端证书被接受。CVE-2026-115881,评级 9.1。 | 3.4.5 至 6.1.0 | 升级到 6.1.1。公告中没有临时选项。 |
| LibreSSL 旧版验证器(3.2.x、3.3.2–3.3.6) | 在要求客户端证书但关闭颁发者检查时,接受超过长度限制的客户端证书链。CVE-2026-115884,评级 7.4。 | 在上述 LibreSSL 版本上的 6.1.0 及更早版本 | 升级到 6.1.1,或通过受信任 CA 包开启颁发者检查,或使用 OpenSSL 或 LibreSSL 4.x。 |
| Mbed TLS | 一个长度拼写错误发送了 1 字节的 Diffie-Hellman 值而非完整的 2048 位值,因此被动观察者可以解密会话。评级 5.9。未分配 CVE。 | 4.0.2 至 6.1.0 | 升级到 6.1.1,关闭有限域 DHE 套件,或使用 OpenSSL 后端。 |
Mbed TLS 问题仅在客户端接受该损坏配置时才会影响会话。OpenSSL、当前版本的 Go、当前版本的 Java 和主流浏览器会拒绝如此小的值并回退到更强的密钥交换,因此会话永远不会完成。
没有最小长度检查的客户端(例如某些嵌入式或自定义客户端)会接受它,随后任何记录了流量的人都可以计算出密钥并读取会话。TLS 1.3 和 ECDHE 会话不受影响,且 Mbed TLS 4.x 已移除它们所依赖的密钥交换。
LibreSSL 问题允许攻击者提交超过 GoAhead 10 张证书限制的证书链,并仍以已认证客户端身份完成握手,且不需要任何受信任密钥。
它仅出现在链接到上述较旧 LibreSSL 版本的构建上,且仅在要求客户端证书并关闭颁发者检查的情况下。OpenSSL、BoringSSL、AWS-LC 和 LibreSSL 4.x 会拒绝超长证书链。
构建使用哪个后端和设置是在固件编译时决定的,因此设备所有者无法从外部判断哪些适用。这也是修复进展缓慢的原因:GoAhead 6.1.1 是一个可直接替换的版本,需要设备制造商重新构建并作为固件更新发布,而所有者只有在制造商这样做时才能获得。是否有任何制造商已经发布尚不清楚。
截至 10 月 27 日,没有任何来源报告这些问题被用于攻击。EmbedThis 的政策是,如果漏洞正被利用或被他人披露,则结束披露禁令并提前发布,因此 10 月 12 日的协调发布与无已知攻击的情况一致。
然而,这并不能证明没有攻击。EmbedThis 通过其 Builder 门户通知客户安全更新。FoxIO 已发布概念验证代码,并通过其 JA4Scan 工具提供指纹以按后端识别 GoAhead 服务器。该工具免费,但其源代码仅应请求提供,且指纹只能识别构建版本,而非确认易受攻击的服务器。
EmbedThis 列出的 GoAhead 用户(包括 HP、Oracle、Siemens、Canon、Rockwell、D-Link 和 Comcast)中,没有任何设备制造商被证实运行受影响的后端和设置。受影响的范围尚未确定。
同一个 6.1.1 版本共关闭了 11 项公告,其中三项被评为严重。其中之一是登录绕过:在使用 HTTP Basic 或表单登录的构建上,知道有效用户名的攻击者可以用任意密码登录,前提是该用户存储的密码采用 GoAhead 在 6.1.0 版本中新增的较新 Blowfish 格式。EmbedThis 表示,表单登录是其内置管理页面的默认方式。
升级后,EmbedThis 建议终止活动会话、重启服务器并更改以 Blowfish 存储的密码。