在2019年07月20日Linux官方正式修復了一個本地內核提權漏洞。攻擊者可以通過此漏洞將普通權限用戶提升為Root權限。
(推薦教程:網站安全教程)
漏洞描述
當調用PTRACE_TRACEME時,ptrace_link函數將獲得對父進程憑據的RCU引用,然后將該指針指向get_cred函數。但是,對象struct cred的生存周期規(guī)則不允許無條件地將RCU引用轉換為穩(wěn)定引用。
PTRACE_TRACEME獲取父進程的憑證,使其能夠像父進程一樣執(zhí)行父進程能夠執(zhí)行的各種操作。如果惡意低權限子進程使用PTRACE_TRACEME并且該子進程的父進程具有高權限,該子進程可獲取其父進程的控制權并且使用其父進程的權限調用execve函數創(chuàng)建一個新的高權限進程。攻擊者最終控制具有高權限的兩個進程ptrace關系,可以被用來ptrace。
suid二進制文件并獲得root權限。
漏洞復現
網上已有針對該漏洞的高可利用性的exploit,利用效果如下圖:
影響范圍
目前受影響的Linux內核版本:
Linux Kernel < 5.1.17
修復建議
1、補丁修復鏈接:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6994eefb0053799d2e07cd140df6c2ea106c41ee
2、升級Linux內核至最新版。
參考鏈接
https://github.com/torvalds/linux/commit/6994eefb0053799d2e07cd140df6c2ea106c41ee