当前位置: 首页 > news >正文

OpenSSL HollowByte 漏洞:11 字节载荷即可瘫痪全球服务器内存

Okta 红队(Red Team)在七月披露了一个潜伏于 OpenSSL 核心代码深处的拒绝服务漏洞,代号为 HollowByte。这个缺陷的诡异之处在于,攻击者无需任何身份凭证,仅凭一封 11 字节的恶意数据包,就能让一台运行中的 Web 服务器逐步陷入内存枯竭,直至被系统 OOM 机制强制终止。更棘手的是,OpenSSL 官方早在六月九日便已静默修复,却未发布安全公告、未分配 CVE 编号,也未在更新日志中明确提及——这意味着大量依赖自动漏洞扫描的企业,至今仍暴露在风险之下。


漏洞本质:一次握手阶段的"空头支票"

要理解 HollowByte 的杀伤逻辑,得先回到 TLS 握手的起点。在标准流程中,客户端向服务端发起连接时,每条握手消息前都会附带一个 4 字节的头部,其中 3 字节用来声明后续消息体的长度。正常情况下,服务端收到头部后,会等待对应长度的数据完整到达,再进行下一步处理。

然而,存在缺陷的 OpenSSL 版本在这个环节做了过于"慷慨"的假设:它一旦读取到头部声明的长度,便立刻在内存中预留出相应大小的缓冲区,哪怕后续数据尚未抵达。攻击者正是钻了这个空子——发送一个精心伪造的 11 字节头部,谎报接下来有数万字节的消息体,然后直接断开 TCP 连接。服务端的工作线程会因此陷入无限期等待,而那块被预分配的内存(最高可达 131KB)则成了无人认领的"孤儿"。


内存碎片化的致命陷阱

单看 131KB 似乎微不足道,但真正的杀招藏在 glibc 的内存分配器行为里。当 OpenSSL 因连接中断而释放这些缓冲区时,底层的 GNU C 库并不会把中小块内存立即归还给操作系统,而是将其保留在进程自身的堆池中,以备后续复用。攻击者通过海量并发连接,并随机化每次声明的虚假长度,使得分配器根本无法高效合并和重用这些零散区块。堆内存由此产生严重碎片化,进程的常驻内存(RSS)持续攀升,且永不回落。

Okta 在实测中给出了触目惊心的数据:一台配置 1GB 内存的 NGINX 服务器,在攻击流量仅 547MB 碎片化后即被 OOM 杀死;而一台 16GB 内存的主机,在遭受持续冲击后,竟丢失了四分之一的可用内存。更隐蔽的是,由于攻击者发送的实际流量极低,传统网络防火墙和 DDoS 清洗设备几乎无法察觉异常,流量特征完全处于正常阈值之内。


波及范围:互联网基础设施的根基动摇

OpenSSL 作为支撑全球加密通信的基石库,其影响面远超一般应用层漏洞。从 NGINX、Apache 这类主流 Web 服务器,到 Python、Ruby、Node.js 等编程语言的加密模块,再到 MySQL、PostgreSQL 等数据库的 TLS 连接层,几乎只要涉及 HTTPS 或加密传输的场景,底层都有 OpenSSL 的身影。Okta 的报告虽未给出具体统计数字,但业内普遍认为,未打补丁的实例规模可能达到数百万台。

值得庆幸的是,目前尚未确认有野外大规模利用的实锤。然而,这种"无 CVE、无公告"的静默修复方式,给防御方带来了极大的信息不对称。企业常用的 Qualys、Nessus 等漏洞扫描器,因缺乏 CVE 标识作为匹配依据,根本无法识别出风险主机。许多运维团队甚至不知道自己运行的 OpenSSL 版本已经处于危险地带。


修复与应对:手动排查是唯一出路

OpenSSL 开发团队通过引入"渐进式缓冲区分配"策略堵上了这个口子。新版本的代码不再盲目信任头部声明的长度,而是根据实际到达的网络数据量按需扩展内存。已确认的安全版本包括:OpenSSL 4.0.1、3.6.3、3.5.7、3.4.6 以及 3.0.21,这些补丁均于六月九日随版本发布。对于仍在使用 1.1.1 和 1.0.2 延长支持分支的用户,则需要通过付费支持渠道获取对应修复版。

对于安全运维人员而言,当前最紧迫的任务是手动清点环境中所有 OpenSSL 实例的版本号,包括操作系统包管理器安装的、容器镜像内嵌的、以及各类商业设备或语言运行时静态链接的副本。由于下游发行版(如 Red Hat、Debian)通常采用"补丁回移"策略——即在旧版本号上打补丁——单纯查看版本字符串可能产生误判,必须结合厂商的具体安全通报进行确认。


深层反思:信任边界与披露争议

HollowByte 的命名颇具隐喻意味——"空洞的字节",恰如攻击者开出的那张永远无法兑现的内存支票。Okta 红队公开细节后,社区对 OpenSSL 安全团队的响应方式产生了分歧。官方将该问题归类为"bug 或加固修复",而非正式漏洞,因此未触发 CVE 分配流程。但对比今年一月,OpenSSL 曾为另一个需要特定配置才能触发的证书压缩内存分配问题(CVE-2025-66199,Low 级别)授予 CVE 编号,HollowByte 的无条件触发特性显然更具威胁性。

这一事件再次警示:在供应链安全领域,"静默修复"虽能避免恐慌,却也可能让防御体系出现盲区。对于承载关键业务的网络基础设施,主动追踪上游代码变更、建立版本基线监控,远比依赖自动化扫描工具更为可靠。

http://www.jsqmd.com/news/1230517/

相关文章:

  • Unity DOTS ECS万级实体性能优化实战:从传统OOP到数据导向架构迁移
  • 工装夹克、职业单西口袋工艺自动化改造深度解析
  • 小米MIMO Code开源AI编程助手评测与使用指南
  • NumPy核心原理与高效科学计算实战指南
  • Obsidian 不想花钱怎么同步?用Nutstore Sync同步插件最省心
  • 秘塔AI搜索响应延迟突增?资深架构师紧急发布4项性能优化配置(限24小时内生效)
  • 免费开源数据库工具 DBeaver 26.1.3 发布,AI 助手、数据编辑等多方面更新
  • 手办复刻的扫描技术难点:复杂曲面、微小细节、反光材质怎么破
  • 树链剖分
  • Hyperf框架实战:构建高性能PHP微服务应用
  • AI医疗应用场景全解析:小白也能轻松入门,收藏必备!
  • 类器官技术发展态势、产业格局与前沿展望研究
  • 鸿蒙 ArkTS 实战:Live Product Board 从直播商品看板到电商运营工具完整解析
  • AI芯片投资:技术挑战与商业陷阱解析
  • PS 加阴影的方法有几种?教你快速添加自然柔和阴影效果
  • tprPix性能分析与优化:使用现代C++特性提升游戏帧率
  • 大语言模型Agent架构:从Prompt到Context的工程实践
  • torch.where
  • FastAPI与BentoML分层选型:模型服务化的真实产线实践
  • 方达炬 发明一例新字词:互联网资产
  • 小程序计算机毕设之移动端投票发布与结果统计系统的设计与实现 班级校园评选投票小程序的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • AM275x SPI/USART时钟配置实战:从寄存器手册到稳定通信
  • 从Windows迁移到Linux:老玩家的完整指南与经验分享
  • AM64x/AM243x防火墙配置实战:从寄存器手册到系统安全设计
  • AI科技热点日报 | 2026年07月19日
  • Android动效开发:五大方案选型与性能优化实战
  • 鸿蒙 ArkTS 实战:After Sales Ticket 从售后工单到电商运营工具完整解析
  • 如何绕过NBA API限制:nba.js代理服务器配置指南
  • 小升初暑假规划:培养能力比补课更重要
  • 深入解析C2000 EPWM模块:斩波、故障保护与事件触发的工程实践