HackerNews

HackerNews
HollowByte DDoS 漏洞:仅需 11 字节 payload 即可膨胀 OpenSSL 服务器内存

HollowByte DDoS 漏洞:仅需 11 字节 payload 即可膨胀 OpenSSL 服务器内存

给文章评分:

一个名为 HollowByte 的漏洞允许未经身份验证的攻击者仅通过 11 字节的恶意 payload 就在 OpenSSL 服务器上触发拒绝服务(DoS)状况。
OpenSSL 团队已静默修复了该漏洞(未分配标识符),并将补丁向后移植到旧版本。
由于 OpenSSL 软件是安全互联网通信的基础支柱,组织应优先切换到该库的修复版本。
HollowByte 详情
在本周早些时候的一份安全公告中,Okta 的红队描述了 HollowByte DoS 漏洞的工作原理及其在真实场景中的影响。
研究人员解释说,在 TLS 握手过程中,每条消息都有一个 4 字节的头部,用于声明即将到来的消息大小。然而,存在漏洞的 OpenSSL 版本会在接收 payload 并检查其大小之前,就分配所声明的长度。
每个 TLS 握手消息都以一个 4 字节的握手头部开始,其中包含一个三字节的长度字段,用于说明后续应跟进的握手数据的大小。
服务器在未验证 payload 的情况下,信任了数据包的声明,并分配了所指示的内存。"然后 worker 线程阻塞,无限期等待永远不会到达的数据,"Okta 解释道。
未经身份验证的攻击者可以通过打开一个 TLS 连接,并发送一个 11 字节的恶意输入来触发 HollowByte,该输入的头部声明将会有更大的消息体紧随其后。
攻击者在多个连接上重复相同的过程,导致服务器通过相对少量的传输数据分配大量内存。
Okta 研究人员指出,虽然 OpenSSL 会在连接断开时释放缓冲区,但 GNU C 库(glibc)处理内存的方式不同,"不会立即将中小型分配归还给操作系统;它会保留这些内存以备潜在重用。"
"通过发起一系列具有随机声明大小的连接,攻击者阻止了分配器重用那些已释放的内存块,"Okta 表示。
"堆被严重碎片化,导致服务器的常驻内存大小(RSS)持续攀升。即使在攻击者断开连接后,服务器的内存仍然永久性膨胀。"
完全回收空间的唯一方法是重启进程。
影响与修复
开源 OpenSSL 库嵌入在许多流行的软件项目中,如 NGINX 和 Apache Web 服务器、语言运行时(例如 Node.js、Python、Ruby、PHP)以及数据库(MySQL、PostgreSQL)。它预装在大多数 Linux 发行版中,用于 TLS 加密和证书处理。
在 Okta 对 NGINX 的测试中,低容量环境使用 HollowByte 很容易耗尽内存,而更高规格的服务器可能会损失高达 25% 的内存,同时攻击带宽仍低于安全警报阈值。
尽管 DoS 漏洞被认为比导致数据窃取或代码执行的漏洞严重性更低,但它们可能导致运营中断和声誉损害。
HollowByte DoS 问题已在 OpenSSL 4.0.1 中修复,并向后移植到版本 3.6.3、3.5.7、3.4.6 和 3.0.21。这些版本现在仅在数据到达时才增长缓冲区,忽略头部声明。
尽管被作为"加固修复"而非安全漏洞处理,Okta 仍建议"立即升级您发行版的 OpenSSL 软件包。"


消息来源:bleepingcomputer.com;
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc”并附上原文
分享到:
hackernews

hackernews

该作者暂无简介