Linux Kernel信息泄露漏洞(CVE-2020-28588)
發布時間 2021-04-280x00 漏洞概述
CVE ID | CVE-2020-28588 | 時 間 | 2021-04-28 |
類 型 | 信息泄露 | 等 級 | 高危 |
遠程利用 | 影響范圍 | ||
PoC/EXP | 未公開 | 在野利用 |
0x01 漏洞詳情
2021年04月27日,Cisco Talos公開披露了在Linux內核中發現的一個信息泄露漏洞 (CVE-2020-28588)。該漏洞存在于運行Linux的32位ARM設備的/proc/pid/syscall功能中,由于數值類型之間的錯誤轉換,攻擊者可以通過讀取/proc/<pid>/syscall文件來利用此漏洞,以查看內核堆棧內存信息或通過此漏洞來利用其它未修復的Linux漏洞。
此外,攻擊者還可以通過此信息泄露漏洞繞過KASLR。內核地址空間布局隨機化(KASLR)是一種反利用技術,可以將各種對象隨機放置,以防止被攻擊者猜測。
漏洞細節
/Proc是類Unix系統中的一個特殊的虛擬文件系統,用于動態地訪問內核中的進程數據。它以類似于文件的層次結構顯示有關進程的信息和其它系統信息。例如,它包含/proc/[pid]子目錄,每個子目錄都包含文件和子目錄,這些文件和子目錄包含了有關特定進程的信息,而這些信息可以通過使用相應的進程ID來讀取。syscall 文件是一個合法的Linux系統文件,它包含內核使用的系統調用日志。
/proc/pid/syscall文件會暴露系統調用號碼和當前進程正在執行的系統調用的參數寄存器,以及堆棧指針和程序計數器寄存器的值。雖然大多數系統調用使用的寄存器較少,但所有的六個參數寄存器的值都會被暴露。
攻擊者可以通過讀取/proc/<pid>/syscall文件來查看內核內存信息,這可以在內核配置了CONFIG_HAVE_ARCH_TRACEHOOK的任何特定Linux系統上看到輸出,但攻擊無法在遠程網絡上進行檢測。
觸發該漏洞的shell命令為:
# echo 0 > /proc/sys/kernel/randomize_va_space (# only needed for a cleaner output)
$ while true; do cat /proc/self/syscall; done | uniq (# waits for changes)
$ while true; do free &>/dev/null; done (# triggers changes)
研究人員首先在Azure Sphere設備(版本20.10,32位ARM設備)上發現了這個漏洞,該設備運行打了一個補丁的Linux內核。這個漏洞在v5.1-rc4(提交為631b7abacd02b88f4b0795c08b54ad4fc3e7c7c0)中已經被引入,但在v5.10-rc4中仍然存在,所以這中間的所有版本很可能都受到影響。
影響范圍
v5.1-rc4 - v5.10-rc4
已測試版本:
Linux Kernel v5.10-rc4
Linux Kernel v5.4.66
Linux Kernel v5.9.8
0x02 處置建議
建議升級到最新版本。
下載鏈接:
https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.12.tar.xz
0x03 參考鏈接
https://blog.talosintelligence.com/2021/04/vuln-spotlight-linux-kernel.html
https://talosintelligence.com/vulnerability_reports/TALOS-2020-1211
https://threatpost.com/linux-kernel-bug-wider-cyberattacks/165640/
0x04 時間線
2021-04-27 Cisco Talos公開漏洞
2021-04-28 VSRC發布安全通告
0x05 附錄
CVSS評分標準官網:http://www.first.org/cvss/