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

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

About The Author

Outline

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

作者:Dave Andrews,Marcus Hildum,Sergio Ruiz

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

在閱讀以下簡短的初始部落格後,Edgio與業內同行就 2023-44487 –2快速重置攻擊的定義和負責任的披露進行了交流。

潛在問題影響了2伺服器的許多實施,這使得攻擊的影響比Edgio之前所認識到的要廣泛得多。 Edgio建議所有執行面向公共基礎設施的客戶在其伺服器的修補版本可用時立即升級到這些版本,並/或暫時禁用2。

Edgio還可通過執行2終止並代理1.1返回客戶的基礎設施來幫助降低客戶面臨的風險。 請與我們聯繫以啟動此流程。

2023年8月28日太平洋時間下午6點43分,Edgio工程師觀察到邊緣伺服器的記憶體利用率,幾個大型Web屬性的請求率以及邊緣生成的日誌量都在上升。

該流量很快就被識別為攻擊,因為它只能在我們的第7層負載平衡器的日誌中觀察到。 Edgio將我們的自定義HTTP暫存和代理引擎Sailfish作為我們的第7層負載平衡器(我們稱之為“前端”)以及暫存和代理層(“後端”)執行。 這使得兩個層都能進行通用的檢測和日誌記錄,從而使它們之間的比較變得很簡單。

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

  1. 單個客戶端的請求計數遠遠高於平常:在攻擊期間,我們看到單個套接字上出現了20,000多個請求。
  2. 未向客戶端發送任何位元組。
  3. 從開始到結束的請求總時間在1到2毫秒之間,所有時間都花費在啓動到後端的新代理連接上。
  4. 所有顯示該行為的連接都是2連接。

根據這些初步觀察,我們認為攻擊者放棄了使用HTTP/2的RST_STREAM幀的請求,並在同一套接字上很快地啟動了新的請求。

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

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

1.…,但真的是nghttp2

經過一小段搜索,我們在這個問題特使中找到了Edgio在邊緣上沒有使用的服務代理以及相應的CVE。 在對差異進行更深入的審查後,我們意識到這個問題不僅存在於特使中,而且實際上存在於我們確實使用的nghttp2中。

nghttp2的拉請求點標籤發布在披露後不久便發布,解決了潛在問題。 由於缺少針對nghttp2分配的特定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計數和比率

為了更快地識別此類攻擊何時發生,我們配置了一個新的儀表板和警報,基於從客戶端接收到的跨位置的2 RST_STREAM幀計數。 這一點,再加上記憶體可用性的單一視圖和執行狀況檢查,給我們一個明確的信號,表明這種特定類型的攻擊可能會導致性能下降:

但是,我們仍然擔心其他可能僅影響前端的攻擊類型。 為了讓您瞭解這個更普遍的疑慮,我們開始追蹤指定位置中前端與後端之間的交易率比率。 這一比較的基礎數據是我們長期監測的核心部分。

從正常行為看,您可以看到1左右的強勁條帶(預期比率),因為到達前端的每個請求都轉換為單個後端請求。 此外,還可看到接近0.5和0.25的條帶,這種條帶發生在主要處於休眠狀態的測試位置,其中清除和執行狀況檢查等系統會導致後端處理更多內部事務:

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

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

摘要

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

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

在Edgio從來沒有無聊的時刻

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