CVE-2019-13272 Linux Kernel< 5.1.17 PTRACE_TRACEME 漏洞復現

  • 2019 年 10 月 6 日
  • 筆記

日前,Linux官方發布一則通告, kernel 5.1.17之前版本中存在安全漏洞,該漏洞源於kernel/ptrace.c文件的ptrace_link沒有正確處理對憑證的記錄。攻擊者可利用該漏洞獲取root訪問許可權。由於PTRACE_TRACEME允許的borked許可權,利用bug在概念上很有趣。對象生命周期處理問題可能會導致記憶體損壞,但它需要以精確的方式進行程式碼競爭。事實PTRACE_TRACEME證明,除了父進程之外,內核還記錄了跟蹤器的憑據。研究人員概述的方案涉及一個父進程,該進程分叉一個孩子,這個孩子會分叉。第一個子進程使用命令pkexec(用於以root身份運行程式),第二個子進程運行PTRACE_TRACEME,然後第一個子進程丟棄其許可權。最終結果是父進程可以使用ptrace來控制第一個子進程,後者可以使用ptrace來控制第二個子進程 – 從而讓攻擊者獲得對兩個進程的控制權。

漏洞影響範圍包括:

// - Ubuntu 16.04.5 kernel 4.15.0-29-generic  // - Ubuntu 18.04.1 kernel 4.15.0-20-generic  // - Ubuntu 19.04 kernel 5.0.0-15-generic  // - Ubuntu Mate 18.04.2 kernel 4.18.0-15-generic  // - Linux Mint 19 kernel 4.15.0-20-generic  // - Debian 9.4.0 kernel 4.9.0-6-amd64  // - Debian 10.0.0 kernel 4.19.0-5-amd64  // - Devuan 2.0.0 kernel 4.9.0-6-amd64  // - SparkyLinux 5.8 kernel 4.19.0-5-amd64  // - Fedora Workstation 30 kernel 5.0.9-301.fc30.x86_64  // - Manjaro 18.0.3 kernel 4.19.23-1-MANJARO  // - Mageia 6 kernel 4.9.35-desktop-1.mga6  // - Antergos 18.7 kernel 4.17.6-1-ARCH

在Ubuntu18.04和16.04上分別測試,漏洞利用成功獲取到root用戶的shell。如下所示。

加固建議:

參考官方團毒給出的最新內核修補程式

https://github.com/torvalds/linux/commit/6994eefb0053799d2e07cd140df6c2ea106c41ee

POC程式碼下載

https://github.com/CrisWang/Exploit-Virtual-Machine/tree/master/Linux