
Polkit의 PoC
Polkit PoC
Policy Toolkit(또는 Polkit)은 2009년 출시 이후로 루트 권한이 없는 공격자가 Polkit 패키지가 설치된 모든 Linux 시스템에서 쉽게 관리자 접근 권한을 얻을 수 있게 합니다. 불행히도(혹은 다행히도?) 대부분의 Linux 배포판에 기본적으로 설치되어 있어 이 취약점이 널리 퍼지게 되었습니다.
다행히도(혹은 불행히도) 이 취약점은 원격으로 악용될 수 없어 로컬 권한 상승(LPE) 취약점입니다.
Polkit는 대부분의 Linux 권한 부여 시스템의 일부입니다. 관리자 권한이 필요한 어떤 작업을 수행할 때, Polkit는 해당 작업을 실행하는 데 필요한 권한이 있는지 결정합니다. 이는 systemd(init의 대체)에 통합되어 있습니다. 실제로 Systemd는 THM에 따르면 'systemd의 sudo'라고도 불립니다.
Polkit와 상호작용할 때 pkexec(Pwnkit 취약점을 포함하는 프로그램)를 사용할 수 있습니다. 예를 들어, GUI 세션에서 pkexec로 useradd를 실행하려고 하면 자격 증명을 요청하는 창이 나타납니다. CLI에서는 다음과 유사한 결과를 얻을 수 있습니다:
user@user:~$ pkexec useradd test1
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run '/usr/sbin/useradd' as the super user
Authenticating as: user,,, (user)
Password:
당연히 Canonical은 이미 APT 패키지 관리자에 이 패키지의 패치된 버전을 출시했습니다. 일부 배포판에서 패치된 버전이 공개되지 않은 경우, 간단히 pkexec의 SUID 비트를 제거하면 됩니다.
sudo chmod 0777 'which pkexec'