AI Security AI安全 17h ago Updated 11h ago 更新于 11小时前 46

OpenSSL Silently Fixes ‘HollowByte’ DoS Vulnerability OpenSSL 悄然修复“HollowByte”拒绝服务漏洞

Okta’s red team discovered "HollowByte," a denial-of-service vulnerability in OpenSSL allowing memory exhaustion via an 11-byte malicious payload. The exploit leverages pre-allocation of receive buffers based on untrusted handshake headers, causing worker threads to block indefinitely while glibc retains memory. Attackers can fragment and freeze significant portions of server RAM (e.g., 25% on a 16GB system) without exceeding connection limits, bypassing standard defenses. Patches were silently Okta红队发现OpenSSL存在名为HollowByte的拒绝服务漏洞,攻击者仅需11字节恶意载荷即可触发。 该漏洞利用旧版OpenSSL在握手阶段基于头部声明长度预分配接收缓冲区且不立即释放的机制,导致内存耗尽。 结合glibc内存保留特性,攻击者可永久冻结服务器内存碎片,绕过标准连接限制防御。 补丁已静默包含在OpenSSL 4.0.1及3.x多个版本中,修复方案改为按需动态增加缓冲区大小而非信任头部声明。

65
Hot 热度
70
Quality 质量
60
Impact 影响力

Analysis 深度分析

TL;DR

  • Okta’s red team discovered "HollowByte," a denial-of-service vulnerability in OpenSSL allowing memory exhaustion via an 11-byte malicious payload.
  • The exploit leverages pre-allocation of receive buffers based on untrusted handshake headers, causing worker threads to block indefinitely while glibc retains memory.
  • Attackers can fragment and freeze significant portions of server RAM (e.g., 25% on a 16GB system) without exceeding connection limits, bypassing standard defenses.
  • Patches were silently included in OpenSSL 4.0.1 and backported to versions 3.6.3, 3.5.7, 3.4.6, and 3.0.21, changing buffer growth logic to trust actual data arrival over headers.

Why It Matters

This vulnerability highlights critical risks in widely used cryptographic libraries like OpenSSL, affecting a vast ecosystem of servers, databases, and runtimes including Apache, NGINX, and Node.js. It demonstrates how subtle interactions between application-layer protocols and system-level memory allocators (glibc) can be exploited for efficient denial-of-service attacks that evade traditional connection-rate limiting. Practitioners must verify their OpenSSL versions and apply patches immediately to prevent service degradation or outages.

Technical Details

  • Mechanism: Older OpenSSL versions pre-allocated receive buffer sizes based on the 4-byte header in the handshake message, allocating up to 131 KB before any data arrived.
  • Exploit Chain: An attacker sends an 11-byte payload declaring a larger body, triggering unvalidated pre-allocation. The worker thread blocks waiting for non-existent data, while glibc retains the allocated memory chunks upon connection drop.
  • Memory Exhaustion: By sending waves of connections with randomized claimed sizes, attackers prevent memory reuse, leading to permanent fragmentation and freezing of server memory even after disconnection.
  • Impact Scope: Tested on 1GB and 16GB systems, showing the ability to lock up substantial memory (547MB on 1GB, 25% on 16GB) while staying under connection ceilings.
  • Remediation: OpenSSL now dynamically increases buffer sizes as bytes actually land, removing trust in the handshake header for buffer growth. Patches are available in 3.0.21, 3.4.6, 3.5.7, 3.6.3, and 4.0.1.

Industry Insight

  • Patch Verification: Since patches were silently backported, organizations must actively audit their OpenSSL versions across all infrastructure components, as many may still be running vulnerable legacy versions unaware of the fix.
  • Defense-in-Depth Limitations: This attack vector proves that standard connection-limiting strategies are insufficient against sophisticated memory-exhaustion exploits; network-level monitoring and application-layer validation are crucial.
  • Supply Chain Vigilance: The silent patching strategy underscores the need for proactive dependency management and regular security audits of third-party libraries to ensure alignment with latest security updates.

TL;DR

  • Okta红队发现OpenSSL存在名为HollowByte的拒绝服务漏洞,攻击者仅需11字节恶意载荷即可触发。
  • 该漏洞利用旧版OpenSSL在握手阶段基于头部声明长度预分配接收缓冲区且不立即释放的机制,导致内存耗尽。
  • 结合glibc内存保留特性,攻击者可永久冻结服务器内存碎片,绕过标准连接限制防御。
  • 补丁已静默包含在OpenSSL 4.0.1及3.x多个版本中,修复方案改为按需动态增加缓冲区大小而非信任头部声明。

为什么值得看

这篇文章揭示了一个底层基础设施库中隐蔽且高效的拒绝服务攻击向量,展示了如何通过利用内存分配器的行为特性绕过传统防御措施。对于安全从业者和系统管理员而言,理解此类底层资源耗尽攻击有助于优化服务器配置并评估现有防护策略的有效性。

技术解析

  • 漏洞原理:旧版OpenSSL在TLS握手期间,根据消息头中声明的长度预分配接收缓冲区,但在数据到达前未验证实际数据,且缓冲区在连接断开后未被立即归还给操作系统。
  • 攻击机制:攻击者发送极小载荷(11字节)声明大尺寸消息体,触发最大131KB的未验证预分配。通过发送带有随机声称大小的连接波次,防止glibc复用已释放的内存块,导致内存碎片化和永久占用。
  • 影响范围与效果:在1GB内存系统中,547MB内存被冻结导致无响应;在16GB系统中可锁定25%内存且低于连接上限,使常规连接数限制失效。受影响组件包括Apache、NGINX、Node.js、Python等所有使用OpenSSL的服务。
  • 修复方案:OpenSSL在4.0.1及3.6.3/3.5.7/3.4.6/3.0.21版本中修复,核心改动为不再信任握手头部进行缓冲增长,改为随着实际数据到达逐步增加缓冲区大小。

行业启示

  • 依赖管理风险:关键基础设施库(如OpenSSL)的补丁可能以静默方式发布,企业需建立严格的依赖版本监控机制,确保及时应用安全更新,避免因“静默修复”导致的认知滞后。
  • 防御策略升级:传统的基于连接数或速率的限制措施不足以防御资源耗尽类攻击,需引入更细粒度的内存使用监控和异常流量检测,特别是针对握手阶段的资源分配行为。
  • 底层交互复杂性:安全漏洞往往源于不同系统组件(如OpenSSL与glibc)之间的交互缺陷,安全审计应覆盖从应用层到系统库的全栈资源管理逻辑,而不仅关注单一组件。

Disclaimer: The above content is generated by AI and is for reference only. 免责声明:以上内容由 AI 生成,仅供参考。

Security 安全