压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

CVE-2019-11477:Linux 內核中TCP SACK機制遠程Dos預警分析

0x00 漏洞描述

2019年6月18日,RedHat官網發布報告:安全研究人員在Linux內核處理TCP SACK數據包模塊中發現了三個漏洞,CVE編號為CVE-2019-11477、CVE-2019-11478和CVE-2019-11479,其中CVE-2019-11477漏洞能夠降低系統運行效率,并可能被遠程攻擊者用于拒絕服務攻擊,影響程度嚴重。

360CERT 判斷此次漏洞影響面廣,危害嚴重,建議廣大用戶及時更新。

漏洞細節

SACK(Selective ACK)是TCP選項,它使得接收方能告訴發送方哪些報文段丟失,哪些報文段重傳了,哪些報文段已經提前收到等信息。根據這些信息TCP就可以只重傳哪些真正丟失的報文段。需要注意的是只有收到失序的分組時才會可能會發送SACK,TCP的ACK還是建立在累積確認的基礎上的。

Linux SKB 最多可以容納17個片段:

linux/include/linux/skbuff.h
define MAX_SKB_FRAGS (65536/PAGE_SIZE + 1)  => 17

每個片段在x86(PowerPC上為64KB)的數據中最多可容納32KB,當數據包將被發送時,它被放置在發送隊列中,它的詳細信息保存在控制緩沖區結構中:

   linux/include/linux/skbuff.h
struct tcp_skb_cb {
    __u32       seq;                    /* Starting sequence number */
    __u32       end_seq;    /* SEQ + FIN + SYN + datalen */
    __u32       tcp_tw_isn;
        struct {
                u16 tcp_gso_segs;
                u16 tcp_gso_size; 
        };
    __u8        tcp_flags;  /2* TCP header flags. (tcp[13])  */
    …
}

tcp_gso_segs用于記錄數據包個數,類型為u16,最多記錄65526個。但是SACK機制允許TCP在重傳中合并多個SKB隊列,從而填充17個片段到最大容量, 17?321024 /8 = 69632,造成tcp_gso_segs整數溢出,進而觸發BUG_ON()調用,導致內核崩潰。

static bool tcp_shifted_skb (struct sock *sk, …, unsigned int pcount, ...)
{
...
tcp_skb_pcount_add(prev, pcount);
BUG_ON(tcp_skb_pcount(skb) < pcount);   <= SACK panic
tcp_skb_pcount_add(skb, -pcount);
…
}

攻擊者可以通過發送一系列特定的SACK包,觸發內核模塊的整數溢出漏洞,進而實行遠程拒絕服務攻擊。

0x01 影響版本

影響Linux 內核2.6.29及以上版本

0x02 修復方案

(1)及時更新補丁

https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-001/PATCH_net_1_4.patch

Linux內核版本>=4.14需要打第二個補丁

https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-001/PATCH_net_1a.patch

(2)禁用SACK處理

echo 0 > /proc/sys/net/ipv4/tcp_sack

(3)使用過濾器來阻止攻擊

https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-001/block-low-mss/README.md

此緩解需要禁用TCP探測時有效(即在/etc/sysctl.conf文件中將net.ipv4.tcp_mtu_probingsysctl設置為0)

(4)RedHat用戶可以使用以下腳本來檢查系統是否存在漏洞

https://access.redhat.com/sites/default/files/cve-2019-11477–2019-06-17-1629.sh

0x03 時間線

2019-06-17?linux內核補丁公布

2019-06-18?RedHat公布漏洞信息

2019-06-18?360CERT發布漏洞預警

0x04 參考鏈接

  1. https://access.redhat.com/security/vulnerabilities/tcpsack

上一篇:DNS 防火墻可防止網絡犯罪造成的千億損失

下一篇:悲劇的 SACK:各種設備都能被 “Ping of Death” 網絡包搞崩潰