
Preuve de concept d'exploitation pour CVE-2021-4034 (PwnKit), une vulnérabilité d'escalade de privilèges locale dans l'utilitaire pkexec de Polkit affectant la plupart des distributions Linux.
PoC de Polkit
Policy Toolkit (ou Polkit) depuis son lancement en 2009 permet à tout attaquant sans privilèges root d'obtenir facilement un accès administratif sur tout système Linux disposant du paquet Polkit. Malheureusement (ou pas), il est installé par défaut dans la plupart des distributions Linux. Par conséquent, cette vulnérabilité s'est répandue.
Heureusement (ou pas), cette vulnérabilité ne peut pas être exploitée à distance, ce qui en fait une vulnérabilité d'élévation de privilèges locaux (LPE).
Polkit fait partie de la plupart des systèmes d'autorisation de Linux. Lorsqu'une action nécessitant une permission administrative est effectuée, Polkit détermine si vous disposez des autorisations nécessaires pour exécuter l'action. Il est intégré à systemd (remplacement d'init). En fait, Systemd est surnommé le 'sudo de systemd', selon THM. Lorsque nous interagissons avec Polkit, nous pouvons utiliser pkexec (programme contenant la vulnérabilité Pwnkit). Par exemple, lorsque vous essayez d'exécuter useradd avec pkexec dans une session GUI, une fenêtre apparaît vous demandant vos identifiants. En CLI, on peut obtenir quelque chose comme ceci :
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:
Évidemment, Canonical a déjà publié des versions corrigées de ce paquet dans le gestionnaire de paquets APT. Si aucune version corrigée n'a été publiée pour une distribution, il suffit de supprimer le bit SUID de pkexec.
sudo chmod 0777 'which pkexec'