作者:啟明星辰ADLab
0x01 漏洞簡介
2018年7月15日,國外安全研究人員Juha-Matti Tilli發現並報告了Linux內核的TCP安全漏洞(CVE-2018-5390),該漏洞可允許遠程攻擊者無需任何權限在受影響的Linux設備上導致遠程拒絕服務。
內核4.9及以上的Linux版本均受該漏洞影響,受影響的設備包括安裝了上述內核的計算機平台及Linux嵌入式設備。
為保障企業及機構業務的安全,消除安全隱患,應對可能發生的攻擊事件,啟明星辰ADLab實驗室提醒大家儘快進行系統升級。
0x02 漏洞分析
2018年7月23日,Linux社區修復了CVE-2018-5390漏洞;2018年8月6號,針對該漏洞的內核補丁發布,漏洞得以公開。啟明星辰ADLab第一時間對該漏洞進行了跟蹤分析。
由於網絡原因,在進行TCP通信時會出現TCP包亂序的情況。Linux內核在處理TCP亂序包時會進入快速響應模式,將亂序的包文按序列號大小順序進行重新排序;為此,Linux內核設置了2個隊列:亂序隊列及按序隊列,亂序隊列存放亂序的報文,按序隊列存放順序的報文。
若亂序隊列中有報文暫存,Linux內核每收到一個報文都將調用tcp_prune_queue
函數,tcp_prune_queue
函數會調用tcp_collapse_ofo_queue
、tcp_prune_ofo_queue
函數進行亂序包隊列調整及排序操作,以便將亂序的報文順序化。
tcp_prune_queue
函數主要流程如下: