20:55:09 阅读量:60

警惕OpenSSL“HollowByte”漏洞:11字节触发的内存耗尽攻击

#OpenSSL #HollowByte #内存耗尽 #拒绝服务 #应急响应

事件背景与影响分析

近期,Okta红队披露了一个被命名为“HollowByte”的OpenSSL漏洞。该漏洞极其隐蔽且极具破坏力,仅需发送一个精心构造的11字节恶意数据包,即可导致服务端内存被无限制占用,最终引发拒绝服务(DoS)攻击。

从我们的应急响应经验来看,类似利用底层协议库漏洞发起的攻击,往往比应用层漏洞更难察觉。由于OpenSSL被广泛集成于Web服务器(如NGINX、Apache)、编程语言运行时(Node.js、Python、PHP等)及各类数据库中,HollowByte的影响范围非常广。即使是常规的限流或连接数限制策略,也无法有效防御此类攻击,因为攻击者仅需极少量的连接即可造成显著的内存损耗。

深入拆解:HollowByte攻击链

HollowByte的攻击逻辑并不复杂,但其利用了TLS握手早期阶段的机制缺陷。

攻击者无需身份验证,直接向目标服务器发送包含恶意头部信息的11字节负载。OpenSSL在TLS握手尚未正式开始前,便会读取其中的4字节握手头部,并根据数据包中声明的长度字段进行内存预分配。

在漏洞触发过程中,程序执行流如下:读取头部 -> 触发内存分配函数(grow_init_buf) -> 执行内存重分配(OPENSSL_clear_realloc) -> 调用 malloc 进行分配。

这一环节是很多企业容易忽视的,因为系统盲目信任了攻击者声明的报文大小。更严重的是,当连接断开后,OpenSSL虽然会释放缓存,但受限于glibc的内存管理机制,这些内存并不会立即归还给操作系统。攻击者通过发送多轮带有随机长度声明的连接,会迅速导致堆碎片化,服务器内存占用持续攀升,最终导致OOM(Out of Memory)崩溃。

技术要点与防御挑战

在实际测试中,即使是配置了16GB内存的高性能服务器,在面对HollowByte攻击时,仅需占用25%的内存即可导致服务瘫痪。由于攻击过程无需复杂的利用链,且绕过了传统的连接阈值防护,这使得它成为攻击者进行资源耗尽型攻击的首选手段。

类似攻击近年来明显增加,其核心特征在于“以小博大”。攻击者通过极低的带宽成本,即可将服务器资源消耗殆尽,迫使运维人员通过重启服务来恢复业务,从而造成严重的业务中断。

安全建议与Solar专家经验

针对HollowByte漏洞,OpenSSL团队已通过增量缓冲区增长机制进行了修复。服务器现在仅会在实际数据到达时才分配对应内存,从而彻底规避了空报文造成的资源滥用。

基于Solar应急响应团队的实践,我们建议采取以下措施:

  1. 立即核查环境:排查企业内部使用的OpenSSL版本。目前该修复已包含在OpenSSL v4.0.1中,并已回溯至3.6.3、3.5.7、3.4.6及3.0.21等版本。请务必优先升级至最新补丁版本。
  2. 强化监控阈值:不要仅依赖连接数限制。建议增加对服务器内存使用率(RSS)的实时监控,并设置合理的触发告警,以便在发生异常波动时第一时间介入。
  3. 部署深度包检测:在WAF或IDS层面,关注异常短小且包含TLS握手异常长度字段的数据包,必要时进行协议合规性过滤。
  4. 应急演练:此类底层漏洞往往被攻击者用作长期潜伏或破坏业务的关键点,建议将基础库漏洞扫描纳入日常安全巡检流程中,避免因“影子依赖”导致的合规与安全漏洞。

如果您想了解勒索病毒的最新发展趋势,或在实际业务中遇到类似安全事件,欢迎关注“Solar应急响应团队”。

全国热线:400-613-6816 官网:www.solarsecurity.cn / www.sierting.com