Home Blogs 重置,泄漏,DDoS和隱藏CVE的故事
Applications

重置,泄漏,DDoS和隱藏CVE的故事

About The Author

Outline

最初發佈於2023年9月29日|更新於2023年10月10日

作者:Dave Andrews,Marcus Hildum,Sergio Ruiz

更新:HTTP/2快速重置攻擊–CVE-2023-44487

在以下簡短的初始部落格之後,Edgio與業界同行討論了CVE-2023-44487–HTTP/2快速重置攻擊的定義和負責任的披露  。

底層問題影響HTTP/2伺服器的許多實現,這使得攻擊的影響比埃吉奧之前意識到的要廣泛得多。 Edgio建議所有執行面向公衆的基礎架構的客戶在伺服器可用時儘快升級到修補版本,並/或暫時禁用HTTP/2。

Edgio還可通過執行HTTP/2終止和代理HTTP/1.1返回客戶基礎架構來幫助降低客戶面臨的風險。 請 聯繫我們 以啓動此過程。

2023年8月28日下午6點43分,埃吉奧工程師觀察到我們的邊緣伺服器記憶體利用率上升,幾個大型Web屬性的請求率上升,以及邊緣生成的日誌數量。

這種流量很快被確定爲攻擊,是新的,因爲它只能在我們的第7層負載平衡器的日誌中觀察到。 Edgio執行我們的自定義HTTP暫存和代理引擎Sailfish,作爲我們的第7層負載平衡器(我們稱之爲”前端”)和暫存和代理層(“後端”)。 這使得兩個層都能進行通用的儀器儀表和日誌記錄,使它們之間的比較變得微不足道。

當我們挖掘到前端日誌時,我們觀察到一些表明攻擊的有趣行爲:

  1. 單一用戶端的要求計數遠高於平常:在攻擊期間,我們看到單一套接字上有超過20,000個要求。
  2. 未向客戶端發送任何位元組。
  3. 從開始到結束的總請求時間爲1到2毫秒,所有這些時間都用於啓動與後端的新代理連接。
  4. 所有顯示該行爲的連接都是HTTP/2連接。

基於這些初步觀察,我們推測攻擊者使用HTTP/2的RST_STREAM幀放棄請求,並在同一套接字上很快地啓動新請求。

之後,我們將工作分爲三個不同的工作流程:

  1. 調查影響我們使用的HTTP/2庫的任何潛在問題(nghttp2),這些問題可能會證明根本原因。
  2. 構建Sailfish變量以揭示此行爲的基本面以啓用緩解。
  3. 構建新的指標,儀表板和警報,以更快地識別此類攻擊。

1.特使… 但是真的是nghtp2

經過一小段搜尋,我們在本問題特使中發現了 Edgio在邊緣不使用的服務代理,以及 相應的CVE。 在深入審查差異後,我們意識到這個問題不僅在特使,而且實際上在nghtp2,我們確實使用。

在披露後不久,就發佈了一個 nghtp2的拉出請求點標籤發佈 ,解決了基本問題。 由於缺少針對nghtp2分配的特定CVE,這意味着我們的自動CVE掃描系統(用於跟蹤我們使用的關鍵軟體中的漏洞)最初未解決此問題。

我們立即啓動了升級此依賴關係並部署的過程,這一過程是在幾周前完成的。

2.請求重置百分比

同時,我們努力在Sailfish內部以編程方式識別攻擊行爲,以便能夠立即採取措施,防止性能或可靠性問題。 我們決定在Sailfish內部實現一個配置變量(H2_remote_reset_percent ),該變量 將跟蹤客戶端重置的給定連接上的請求百分比。

此外,與單個連接上請求計數的現有變量一起,我們可以創建一個規則,該規則將立即關閉與已超過請求閾值並已重置超過已配置請求百分比的客戶端的連接。 我們將此配置打包在正常操作的故障保險箱中,使我們可以針對特定位置或客戶禁用它。

在僞代碼中,它看起來像:

				
					if request_count > 1000 and
  h2_remote_reset_percent > 99 and
  pop ~ ".*" and
  customer_id not in () then

  connection.silent_close();

fi
				
			

經過仔細驗證以避免對客戶流量造成任何意外影響後,部署了新規則,Edgio工程師繼續監控是否有任何進一步的異常。

3.計數和比率

爲了更快速地識別此類攻擊何時發生,我們根據從客戶端跨位置接收的HTTP/2 RST_STREAM幀計數配置了一個新的儀表板和警報。 這與記憶體可用性和執行狀況檢查的單一視圖相結合,給我們提供了一個明確的信號,表明這種特定類型的攻擊可能會導致性能下降:

但是,我們仍然關注可能僅影響前端的其他潛在攻擊類型。 爲了讓我們瞭解這一更普遍的問題,我們開始跟蹤給定位置的前端和後端之間的交易率比率。 這一比較的基礎數據長期以來一直是我們監測的核心部分。

從正常行爲來看,您可以看到強條帶大約1 (預期比率),因爲到達前端的每個請求都轉換爲單個後端請求。 同樣可見的是接近0.5和0.25的條帶,這主要發生在休眠的測試位置,在這些位置,淨化和執行狀況檢查等系統會導致更多內部事務由後端處理:

但是,在初始攻擊期間,您可以清楚地看到對此比率的影響:

我們的當前警報配置爲在比率超過某個值時觸發,從而爲Edgio支援工程師創建事件,以便分類和開始緩解步驟。

摘要

這是一種有趣的新攻擊類型,利用了一個廣泛使用的庫中相對最近披露的漏洞。 幸運的是,Edgio的團隊迅速提高了我們的營運意識,緩解了攻擊的具體根源,並針對這類攻擊採取了通用和可調整的通用緩解措施。

當然,我們始終致力於此類改進,例如通過指紋識別惡意行爲者的新方法,以及將此工作集成到我們的安全產品套件中,以實現更持久的阻止和速率限制。

在Edgio從來沒有沉悶的時刻。

要了解有關我們的全方位DDoS保護(Edgio屢獲殊榮的Web應用程式和API保護(WAAP)解決方案的一部分)的更多資訊,請單擊此處與我們的專家聯繫