作者:啟明星辰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_queuetcp_prune_ofo_queue函數進行亂序包隊列調整及排序操作,以便將亂序的報文順序化。

tcp_prune_queue函數主要流程如下:

tcp_clollapse_ofo_queue函數主要流程如下:

tcp_prune_ofo_queue函數主要流程如下:

當亂序包隊列的包數量比較大時(默認的隊列內存大小為6M,假設每個TCP包大小為576字節,則隊列中有10000多個包),Linux內核會對亂序隊列進行全隊列的紅黑樹查找排序及內存調整。該調整及排序方法的復雜指數很高且十分耗時,這種立即處理且耗時的運算容易消耗大量CPU資源。

針對該情況,攻擊者可以通過發送大量的惡意數據包使得接收方主機頻繁進行排序及隊列調整操作,造成接收方主機的CPU占比達到極高,從而導致主機拒絕服務。

攻擊者攻擊時需要滿足以下條件:

  1. 攻擊者和受攻擊方之間進行TCP數據傳輸。
  2. 攻擊者通過多個IP向受攻擊方發送大量的足夠小的TCP包,并注入相關的包引發亂序情況。

該漏洞首次出現在2016年12月發布的Linux內核4.9版本中,4.9版本的Linux內核在處理TCP堵塞機制時引進了谷歌推薦的BBR算法,對TCP機制進行了較大的調整,這種調整使得Linux內核更容易受到DDOS攻擊。

為了應對這種惡意的TCP包攻擊,Linux內核增加了對惡意包的判斷:如果亂序隊列中惡意包的數量過多,則不進行排序,以減少CPU開銷。主要的修改點包括:

  1. tcp_prune_queue函數增加了sk->sk_rmem_alloc的判斷:當sk->sk_rmem_alloc小于sk->sk_rcvbuf時,直接返回;減少調用tcp_collapse_ofo_queuetcp_collapsetcp_prune_ofo_queue函數的次數。

  2. tcp_prune_ofo_queue函數中,刪除了每次循環操作都要進行內存申請的代碼,只有在隊列緩沖大小已經處理至少12.5%后,才進行內存申請。

  3. tcp_collapse_ofo_queue函數中,增加了檢測惡意包的代碼,當認為有惡意攻擊時,函數就直接返回。

0x03 漏洞影響

該漏洞影響Linux內核4.9及以上的各版本系統,影響的設備包括安裝了上述內核的計算機平臺及Linux嵌入式設備,幾乎涉及所有廠家:比如亞馬遜、蘋果、Ubuntu和ZvXEL。

目前已知的受影響系統包括但不限于:

  • RHEL 6 and 7
  • RHEL 7 for Real Time
  • RHEL 7 for ARM64 systems,
  • RHEL 7 for IBM POWERsystems
  • RHEL Atomic Hos
  • Ubuntu 18.04 LTS(BionicBeaver)
  • Ubuntu 16.04 LTS(XenialXerus)
  • JuniperJunos
  • OracleLinux 7

0x04 處置建議

為保障業務的安全,消除安全隱患,應對可能發生的攻擊事件,我們對后續工作建議如下:

  1. 檢查系統版本。Linux已發布針對該漏洞的內核補丁,如果系統在受影響范圍內,,盡快下載并更新系統補丁。
  2. 監控CPU異常,及時發現CPU占用較高的情況。
  3. 防護策略配置。對長時連接且短時發送大量數據的IP進行監控,發現惡意IP并及時在防火墻上進行屏蔽。

漏洞鏈接: - https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=1a4f14bab1868b443f0dd3c55b689a478f82e72e - http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5390


啟明星辰積極防御實驗室(ADLab)

ADLab成立于1999年,是中國安全行業最早成立的攻防技術研究實驗室之一,微軟MAPP計劃核心成員。截止目前,ADLab通過CVE發布Windows、Linux、Unix等操作系統安全或軟件漏洞近400個,持續保持國際網絡安全領域一流水準。實驗室研究方向涵蓋操作系統與應用系統安全研究、移動智能終端安全研究、物聯網智能設備安全研究、Web安全研究、工控系統安全研究、云安全研究。研究成果應用于產品核心技術研究、國家重點科技項目攻關、專業安全服務等。


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/659/