par Bhabesh Raj Rai, Security Research Department

Le 25 janvier 2022, Qualys a divulgué les détails d’une vulnérabilité de corruption de mémoire (CVE-2021-4034), intitulée PwnKit, dans l’utilitaire pkexec de polkit installé par défaut sur toutes les principales distributions Linux. PwnKit est une vulnérabilité LPE (Local Privilege Escalation) qui permet aux utilisateurs non privilégiés d’obtenir des privilèges root sur un système affecté, même dans sa configuration par défaut.

pkexec est un binaire SUID permettant à l’utilisateur d’exécuter des commandes en tant qu’autre utilisateur. Lorsqu’un nom d’utilisateur n’est pas spécifié, le programme est exécuté en tant qu’utilisateur root dans un environnement restreint et sûr. Cette possibilité évite d’injecter le code via LD_LIBRARY_PATH ou des mécanismes similaires.

Les administrateurs peuvent utiliser pkexec comme une alternative à sudo mais avec des contrôles plus fins en définissant une politique pour chaque programme. Vous pouvez remarquer des similitudes dans un cas qui a récemment affecté sudo. Au début de 2021, une vulnérabilité LPE de corruption de mémoire (CVE-2021-3156) a été découverte, laquelle avait en réalité affecté sudo pendant près d’une décennie.

Administrators can use pkexec as an alternative to sudo but with more fine-grained controls by defining a policy for each program. You can notice similarities in a case that affected sudo. Back in early 2021, a memory corruption LPE vulnerability (CVE-2021-3156) was found to have plagued sudo for nearly a decade.

Bien que Qualys n’ait pas rendu public l’exploit, ils ont néanmoins fourni suffisamment de détails techniques dans leur divulgation pour créer rapidement leurs exploits. Plusieurs PoC tels que [1] et [2] circulent déjà sur Internet permettant ainsi à ces derniers d’être utilisés.

Exigences en matière de sources de log

  • Linux
  • Auditd
  • Sysmon pour Linux

Détecter l’exploitation à l’aide de LogPoint

Si auditd n’est pas configuré pour transférer les logs Linux vers LogPoint, vous pouvez détecter l’exploitation en recherchant les artefacts PwnKit dans /var/log/auth.log. La liste LINUX_SERVERS contient les adresses IP de tous les systèmes Linux transférant des logs vers LogPoint.

device_ip IN LINUX_SERVERS
| search ("The value for the SHELL variable was not found the /etc/shells file" OR "contains suspicious content")

Cependant, les administrateurs doivent se rappeler que PwnKit peut être exploité sans laisser de traces dans /var/log/auth.log.

Pour éliminer cet angle mort, les administrateurs peuvent utiliser auditd à condition qu’il ait été configuré pour auditer les appels de pkexec. Tout d’abord, vous devez rechercher les événements auditd pour lesquels la valeur « (null) » a été attribuée à proctitle.

device_ip IN LINUX_SERVERS | search 'proctitle="(null)"'

Ensuite, vous devez vérifier les appels de pkexec. Les défenseurs ont besoin de ces indicateurs pour inspecter davantage le système et déterminer s’il a été compromis à l’aide de PwnKit.

norm_id=Unix "process"=audit command="pkexec"
| chart count() by log_ts, host, key, path, command

En octobre 2021, le CTO d’Azure, Mark Russinovich, avait annoncé la sortie de Sysmon pour Linux. Les administrateurs peuvent utiliser des guides tels que [1] et [2] pour tester et déployer Sysmon pour Linux dans leur entreprise. LogPoint a publié Unix v5.2.0 qui prend en charge Sysmon pour Linux. Les administrateurs doivent noter que Sysmon pour Linux partage la même taxonomie que son homologue Windows.

La méthode de détection LPE générique fonctionne pour détecter PwnKit. Les administrateurs doivent rechercher la création d’un processus privilégié par un processus non privilégié, avec sudo comme étant une exception manifeste. Les PoC, après exploitation, sont autorisés à exécuter des commandes soit directement en tant qu’argument de ligne de commande, soit dans une session shell interactive. La capture d’écran ci-dessous présente ces deux scénarios.

[norm_id=UnixSysmon label="Process" label=Create -user=root -image="/usr/bin/sudo"]
as s1 followed by
[norm_id=UnixSysmon label="Process" label=Create user=root]
as s2 within 3 second on s1.host = s2.host and s1.process_guid=s2.parent_process_guid
| rename s1.host as host, s1.user as user, s2.user as target_user, s1.path as path, s1.image as image,
s1.command as command, s2.image as target_image, s2.command as target_command
| chart count() by host, user, target_user, path, image, command, target_image, target_command

Searching for generic local privilege escalation

Recherche d’une LPE (Local Privilege Escalation) générique

Certains PoC peuvent s’exécuter en mode uniligne (one-liner) via une simple commande curl. Vous pouvez surveiller les téléchargements suspects depuis GitHub à l’aide d’événements de création de processus.

norm_id=UnixSysmon label="Process" label=Create
image IN ["/usr/bin/curl", "/usr/bin/wget"] command="*raw.githubusercontent.com*"

Investigation post-compromission

Les étapes nécessaires pour investiguer les activités post-compromission comprennent la recherche des évènements suivants :

  • La création de nouveaux utilisateurs pour la persistance.
  • L’exécution suspecte de curl, wget, etc., pour télécharger des charges virales.
  • L’installation de tâches cron pour la persistance.
  • L’installation d’une backdoor SSH pour la persistance.
  • L’installation de mineurs de cryptomonnaie.

LogPoint SOAR Playbook for PwnKit Investigation

Playbook SOAR de LogPoint pour une Investigation PwnKit

Après avoir exécuté le playbook dans LogPoint SOAR, nous pouvons afficher les cas créés par les composants du playbook dans la chronologie de l’investigation afin d’obtenir un aperçu de haut niveau des résultats de cette dernière.

LogPoint SOAR investigation timeline gathers the results of the investigation

La chronologie de l’investigation LogPoint SOAR rassemble les résultats de celle-ci

Remédiation

Enfin, nous insistons pour rappeler aux administrateurs de corriger leurs systèmes Linux en raison de la gravité de la faille et de la divulgation publique de plusieurs vulnérabilités POC. Les administrateurs peuvent supprimer le SUID-bit au niveau de pkexec comme mitigation temporaire si des correctifs n’ont pas été publiés pour leur distribution Linux. Les défenseurs des entreprises peuvent s’attendre à ce que des acteurs malveillants utilisent PwnKit après avoir pénétré dans un système.

Contacter Logpoint

Contactez-nous et découvrez
pourquoi les entreprises
leaders dans leur secteur
choisissent Logpoint: