OpenSSL存在DDoS漏洞HollowByte,攻擊者可利用11位元組酬載癱瘓運作

OpenSSL 存在名為 HollowByte 的未登記 CVE 漏洞,未經驗證的攻擊者仅需傳送 11 位元組惡意封包,即可迫使伺服器在 TLS 交握前配置過量記憶體,導致記憶體耗盡與服務阻斷。此漏洞已於 OpenSSL 4.0.1 及多版本後向移植中修補,Okta 呼籲用戶立即升級以避免 DDoS 攻擊風險。

事件說明

身分驗證解決方案廠商 Okta 揭露名為 HollowByte 的資安漏洞,該漏洞存在於廣泛使用的加密庫 OpenSSL 中 [1]。這是一項高風險的 Denial of Service (DoS) 攻擊弱點,允許未經身分驗證的遠端攻擊者僅透過傳送 11 位元組 的惡意 TLS 封包,即可癱瘓伺服器運作 [1][2]。儘管 OpenSSL 開發團隊在 2026 年 6 月 9 日發布的 4.0.1 版本中修補了此問題,但該修補並未登記 CVE 編號,也未公布 CVSS 風險評分,僅被視為一般臭蟲(bug)或強化修復處理 [1][3]。若未及時處理,攻擊者可導致伺服器在完成任何安全交握前,配置遠超乎比例的記憶體空間,最終引發記憶體耗盡(OOM)並造成服務終止 [1][2]。

技術分析

HollowByte 漏洞的核心機制在於 OpenSSL 處理 TLS 握手消息時的記憶體分配邏輯錯誤 [1]。在標準的 TLS 握手流程中,客户端會發送包含長度標示的握手消息,其中明確標示後續消息體的長度 [3]。舊版 OpenSSL 在接收到此頭部資訊後,會直接信任頭部中聲稱的尺寸,並立即預先分配相應大小的接收緩衝區(buffer),即使真正的數據尚未從網路傳輸過來 [3]。攻擊者利用此邏輯缺陷,在 11 位元組的封包中偽造一個極大的長度值,迫使伺服器預先配置高達 131 KB 的記憶體 [3][4]。

OpenSSL 開發團隊透過合併 pull requests #30792、#30793 和 #30794 解決了此問題,將緩衝區增長策略改為「增量模式」(incremental buffer growth) [1]。修復後的邏輯不再單純依賴頭部聲稱的尺寸,而是僅在實際收到網路位元組時才逐步擴展記憶體 [1]。這種改變確保了伺服器不會在數據未到達前就浪費資源。Okta 紅隊在測試中發現,在配置 1 GB 記憶體的伺服器上執行 Nginx,觸發漏洞可導致 547 MB 碎片化的記憶體被凍結,直接引發主機記憶體不足 [1]。在 16 GB 記憶體的環境中,攻擊甚至能鎖定 25% 的記憶體,且由於連線數未達上限,傳統 DDoS 防禦措施(如基於連線數的閾值限制)無法阻擋此類攻擊 [1][2]。

影響範圍

OpenSSL 作為基礎加密庫,被廣泛內嵌於各類軟體生態中,涵蓋網頁伺服器(如 Nginx、Apache)、程式語言執行環境(如 Node.js、Python、Ruby、PHP)以及資料庫系統 [1]。由於其廣泛性,HollowByte 的影響範圍極為廣泛,任何依賴未修補 OpenSSL 版本的服務器皆面臨風險 [1]。值得注意的是,許多容器化環境(Containers)會在建置時靜態綁定 OpenSSL 版本,僅更新操作系統的 OpenSSL 包可能無法解決應用層的問題 [1]。此外,由於此漏洞未登記 CVE 編號且修補為「靜默發布」(silent patch),許多依賴官方 CVE 清單或標準安全公告的自動化監控系統可能無法及時偵測到該威脅,導致防禦延遲 [3]。

攻擊者若利用此漏洞,可造成持續性的記憶體消耗,且每筆 11 位元組請求可導致伺服器預先配置高達 131 KB 記憶體,直到進程被手動重啟為止 [3]。這不僅導致服務可用性(Availability)喪失,還可能因記憶體碎片化問題影響系統整體穩定性 [2]。

防護建議

針對 HollowByte 漏洞,首要防護措施是立即升級 OpenSSL 至修補版本。Okta 強烈呼籲用戶應儘速升級新版 OpenSSL 因應 [1]。具體而言,使用者需將 OpenSSL 升級至 4.0.1,或根據當前使用的分支升級至對應的後向移植版本:3.6.3、3.5.7、3.4.6 或 3.0.21 [1][3]。對於使用容器化架構的組織,必須重新建置並更新所有基於舊版 OpenSSL 的容器基礎映像(Base Images),確保應用層依賴的加密庫已更新 [3]。

除了版本升級,建議建立主動監控機制以偵測異常。應在觀察平台上配置嚴格的記憶體 RSS(Resident Set Size)趨勢警報 [1]。若發現 TLS 服務進程(如負載平衡器、Nginx、Apache)的記憶體消耗呈現漸進式、階梯式且無明顯流量增加的異常增長,應視為潛在的 HollowByte 攻擊指標 [1]。同時,建議在負載平衡器或邊緣層審查並實施 TLS Handshake 的速率限制(Rate Limiting),雖然此舉無法完全消除風險,但能顯著增加攻擊者的成本 [1][5]。

5 步驟修補清單

  • 立即將 OpenSSL 升級至 4.0.1 或對應分支的修補版本(3.6.3、3.5.7、3.4.6、3.0.21)[1][3]。
  • 重新建置所有靜態綁定舊版 OpenSSL 的容器基礎映像,並部署更新後的版本 [3]。
  • 利用 SBOM(Software Bill of Materials)工具掃描並庫存所有系統中的 OpenSSL 版本 [1]。
  • 配置記憶體 RSS 監控警報,針對 TLS 終點進程的異常記憶體增長設定即時通知 [1]。
  • 在負載平衡器層級實施 TLS 握手速率限制,以阻擋高頻率的惡意小封包攻擊 [1][5]。

參考資料

  • Okta Security: OpenSSL HollowByte: A DoS Hiding in 11 Bytes
  • Mallory AI: OpenSSL HollowByte DoS Lets 11-Byte TLS Payload Exhaust Memory
  • SCYScan: OpenSSL HollowByte Flaw Could Freeze Server Memory with 11-Byte TLS Requests
  • The CyberSec Guru: OpenSSL 'HollowByte' Fl Enables Memory Exhaustion DoS

更多資安新聞