This post is also available in: English
使用 CVE-2023-44487 拒絕服務漏洞進行的攻擊,該漏洞於2023年10月10日由國家標準與技術研究所(NIST)發布,在過去幾個月內已在網際網路上發生。 該漏洞利用 HTTP/2 協議的特性,該協議允許多個數據流在伺服器和瀏覽器之間傳輸。 使用 HTTP/2 的伺服器和應用程式仍可能存在漏洞。
CVE 是什麼?
CVE 代表「通用弱點和暴露」。 它是一個用於識別、定義和目錄化軟體和硬體中已知漏洞的系統。 CVE 的目的是提供一種標準化的方式來參考安全漏洞和暴露,使資訊安全專業人員和組織更容易分享有關這些漏洞的數據。 CVE 系統為每個已知漏洞分配一個獨特的識別符,通常格式為「CVE-YYYY-NNNN」,其中「YYYY」代表 CVE 創建的年份,而「NNNN」是一個順序號。
CVE-2023-44487 拒絕服務漏洞是什麼?
HTTP/2 協議允許客戶端透過發送 RST_STREAM frame 來指示伺服器取消之前的 stream。 這個協議允許客戶端單方面請求取消。
這種攻擊被稱為「快速重置」,因為它依賴於客戶端點能夠在發送請求 frame 後立即發送 RST_STREAM frame ,允許另一客戶端點開始處理,然後迅速重置該請求。
在 HTTP/2 快速重置攻擊中,客戶端同時打開大量 stream,而不等待伺服器或代理回應每個請求 stream。 相反,他們迅速取消每個請求。
這個漏洞的影響是什麼?
這個漏洞允許惡意使用者利用 HEADERS 和 RST_STREAM 來發送一系列 HTTP 請求,並重複這個模式,導致在目標 HTTP/2 伺服器上產生大量的流量,進而發動 DDoS 攻擊。 在單一個連接中,發送大量 HEADERS 和 RST_STREAM frame,它會導致每秒請求數大幅增加,進而增加伺服器的 CPU 使用率,最終導致伺服器資源耗盡和服務拒絕。
降低攻擊風險
降低 HTTP/2 streams 最大容許值的限制已被發現對一些攻擊變體有效。 Mlytics 選擇 NGINX ,一個完全的代理伺服器,因為它提供了一個基本功能來緩解拒絕服務攻擊。 在預設配置中, NGINX 充分保護允許的每個連接的請求數限制。 結果,攻擊者需要經常重新連接,使攻擊更加明顯,更容易在網路層次上停止。
保持 keepalive_requests 設定在預設值1000的請求。 可透過 keep-alive 設定,這個設定限制連線上可以服務的最大請求數。 當最大請求數量達到時,連線會被關閉。
同樣,保持 http2_max_concurrent_streams 設定,預設值128 streams。 這個設定限制了連接中 HTTP/2 stream 的並行處理限制。
透過這兩個限制,我們可提供對此類攻擊的保護。
額外緩解措施的建議
在 Mlytics Origin-shield 上設定具有速率限制功能的防火牆規則。 這些規則可以幫助限制進入請求的速率並拒絕過多的請求,間接緩解這個漏洞。
我們的下一步
至目前為止,HTTP/2 快速重置攻擊並未造成那些背後的惡意行為者所期望的顯著影響。 然而,這種攻擊技巧需要密切監控,因為 DDoS 攻擊仍然是網路攻擊者武器庫中的重要工具。
Mlytics 團隊將繼續監控有關此攻擊的情況,調查任何此攻擊的變種,並在有更多信息可用時更新 CVE-2023-44487 警示。
參考資料
https://www.cve.org/CVERecord?id=CVE-2023-44487
https://cloud.google.com/blog/products/identity-security/how-it-works-the-novel-http2-rapid-reset-ddos-attack