Linux TCP堆棧中發現三個漏洞,導致遠程拒絕服務

Linux崩潰

recientemente 發布了有關確定Linux TCP堆棧中幾個關鍵漏洞的新聞 和FreeBSD 允許攻擊者遠程啟動內核故障 或通過處理特製的TCP數據包(死亡數據包)而導致過多的資源消耗。

問題是由數據塊最大大小的句柄中的錯誤引起的 在TCP數據包中(MSS,最大段大小)和選擇性連接識別的機制(SACK,選擇性TCP識別)。

什麼是選擇性識別?

選擇性TCP識別(SACK) 它是一種機制,數據接收者可以將已成功接受的所有段通知給發送者。

允許發送方重新傳輸丟失的流段 從他的“眾所周知”的背景。 禁用TCP SACK時,需要更大的重傳集來重傳整個序列。

在Linux內核中,此問題已在版本4.4.182、4.9.182、4.14.127、4.19.52和5.1.11中修復。 FreeBSD的解決方案可作為補丁獲得。

已針對Debian,RHEL,SUSE / openSUSE,ALT,Ubuntu,Fedora和Arch Linux發布了內核軟件包更新。

CVE-2019-11477(簡報恐慌)

問題 從2.6.29版本開始在Linux內核中體現出來,並允許您使內核崩潰 由於控制器中的整數溢出而發送一系列SACK數據包時(緊急)。

對於攻擊而言,將TCP連接的MSS值設置為48個字節就足夠了 並以某種方式發送一系列已安排的SACK數據包。

問題的實質是結構 tcp_skb_cb(套接字緩衝區) 用於存儲17個片段 (“定義MAX_SKB_FRAGS(65536 / PAGE_SIZE +1)=> 17”)。

在發送數據包的過程中,將其放置在發送隊列中,並且tcp_skb_cb存儲有關該數據包的詳細信息,例如序列號,標誌以及用於發送的“ tcp_gso_segs”和“ tcp_gso_size”字段分段信息發送給控制器(TSO,分段分段下載)以處理網卡側的分段。

如果啟用了SACK並且驅動程序支持TSO,則在發生數據包丟失或選擇性重發數據包時,將保存塊。

作為保護的一種解決方法,您可以使用低MSS禁用SACK處理或使用較小的MSS阻止連接(僅在將sysctl net.ipv4.tcp_mtu_probing設置為0並可能破壞某些正常狀態時有效)。

CVE-2019-11478(SACK慢度)

這個失敗 導致SACK機制中斷 (在4.15中使用Linux內核時)或過多的資源消耗。

在處理可用於分段重傳隊列(TCP重傳)的特製SACK數據包時,會出現問題。 保護解決方案與以前的漏洞相似

CVE-2019-5599(SACK慢度)

允許在處理SACK序列時導致發送的數據包映射的碎片 在單個TCP連接中運行,並導致運行資源密集型列表查找操作。

這個問題在帶有RACK丟包檢測機制的FreeBSD 12中表現出來。 解決方法是,可以禁用RACK模塊(默認情況下未加載,通過指定sysctl net.inet.tcp.functions_default = freebsd禁用)

CVE-2019,11479

該缺陷使攻擊者可以使Linux內核將響應分為多個TCP段, 每個端口僅包含8個字節的數據,這可能導致流量顯著增加,CPU負載增加以及通信通道阻塞。

另外,它消耗額外的資源 (處理器電源和網卡)。

此攻擊需要攻擊者持續不斷的努力,並且攻擊者在停止發送流量後不久將終止命中。

在進行這種攻擊時,系統將以降低的容量運行,從而導致某些用戶拒絕服務。

遠程用戶可以通過設置最大段大小來觸發此問題 (MSS)處於最低限度(48個字節),並發送一系列特製SACK數據包。

解決方法是,建議使用低MSS阻止連接。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。