CVE-2019-14287 linux sudo root

MITRE CVE-2019-14287

  • 在 Sudo before 1.8.28
  • 當前身分有 sudo

Background

  • sudo -l 時可以列出像下面這個格式的東西
    • (as user: as group) nopassword:commands
    • 像是 (ALL:!root) /bin/bash 就是可以以所有的 user 身分、除了 root 以外的 group 執行 /bin/bash,就可以用這樣的指令切換身分執行 command
    • (ALL:ALL) /bin/ping 就可以用 sudo -u#1234 /bin/ping 來用 user id 1234 的身分執行 ping

成因

主要問題是發生在 system call 的 setresuid 中,在 sysdeps/unix/sysv/linux/i386/setresuid.c 可以看到他的 code
,他在 code 中有一段是會檢查傳進去的 ruid、euid、suid 是不是 = -1,不等於的話才會 assign 這些值,否則就會沿用 default 的 0 (也就是 root),造成這個問題。

patch 的地方他們就是在 sudo 的 lib/util/strtoid.c 裡面把多加個檢查避免 id == -1 或是 UINT_MAX(4294967295) (line 76)

PoC

sudo -u#-1 <可執行的 command> 就可以提權了

Reference


CVE-2019-14287 linux sudo root
https://wiiwu959.github.io/2021/09/30/2021-09-30-CVE-2019-14287/
Author
Wii Wu
Posted on
September 30, 2021
Licensed under