learn.hack.repeat

Étiquette : Linux

Un PolKit 12 ans d’âge svp!

12 ans. C’est le temps pendant lequel une vulnérabilité dans PolKit (anciennement Policykit), un système de gestion des autorisations largement utilisé par les distributions Linux les plus populaires, a été cachée. La faille se trouve dans le composant ‘pkexec’, qui permet une fonctionnalité similaire à ‘sudo’, c’est-à-dire l’exécution d’une commande avec les privilèges d’un autre compte ou utilisateur. Par conséquent, lorsqu’il est exploité, il permet l’élévation des privilèges de l’utilisateur root, puisque ‘pkexec’ est un binaire SUID root.

En plus d’être présent dans presque toutes les distributions Linux, l’exploitation est triviale. Grosso modo, il suffit de manipuler uniquement les variables d’environnement pour l’effectuer. En d’autres termes, il ne s’agit pas d’un exploit typique, dans lequel il faut échapper à la protection et disposer d’un contexte d’exécution favorable, mais le succès de l’exploit est pratiquement garanti. En fait, un grand nombre d’exploits émergent pour cette vulnérabilité (avec CVE-2021-4043).

Il est intéressant de noter que la base de la faille a été décrite en 2013 dans un billet d’un chercheur australien, Ryan Mallon, qui prévenait que l’injection d’un pointeur nul dans le tableau d’arguments d’un programme pouvait avoir des conséquences désastreuses. Bien qu’il n’ait pas été en mesure à l’époque d’identifier un vecteur sur lequel appliquer son constat. Elle s’est finalement matérialisée par cette élévation de privilège, triviale à exploiter, rappelons-le.

Un article récemment publié par le chercheur en sécurité du GitHub Security Lab, Kevin Backhouse, détaille la procédure qui permet l’escalade des privilèges sur les systèmes Linux qui utilisent le service polkit.

Un attaquant non privilégié peut obtenir un shell avec l’utilisateur root en utilisant la vulnérabilité de contournement d’authentification dans le service polkit.

Bien que de nombreuses distributions Linux n’aient pas inclus la version vulnérable de polkit jusqu’à récemment, tout système Linux sur lequel est installé polkit 0.113 ou une version ultérieure est exposé à cette attaque.

La liste des distributions actuellement vulnérables partagée par Kevin Backhouse comprend des distributions populaires telles que RHEL 8, Fedora 21 (ou ultérieure), Ubuntu 20.04, ainsi que des versions instables comme Debian testing (« bullseye ») et ses dérivés.

L’exploitation de la vulnérabilité est extrêmement facile, ne nécessitant que quelques commandes de terminal utilisant uniquement des outils standard tels que bash, kill et dbus-send ; une démonstration vidéo fournie par Kevin Backhouse est incluse ci-dessous.

Lorsqu’un processus demandeur se déconnecte du service dbus juste avant que l’appel à polkit_system_bus_name_get_creds_sync soit lancé, le processus ne peut pas obtenir un uid et un pid uniques du processus et ne peut pas vérifier les privilèges du processus qui a fait la demande. La plus grande menace de cette vulnérabilité concerne la confidentialité et l’intégrité des données, ainsi que la disponibilité du système.

Plus d’information:
https://access.redhat.com/security/cve/CVE-2021-3560
https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3560
https://github.com/berdav/CVE-2021-4034/blob/main/cve-2021-4034.c

Une vulnérabilité dans Linux permet de s’échapper des conteneurs Kubernetes

La nouvelle vulnérabilité CVE-2022-0185 dans le noyau Linux permet de prendre le contrôle du nœud tant que le conteneur a activé le privilège CAP_SYS_ADMIN.

Les mainteneurs du noyau Linux ont découvert une nouvelle vulnérabilité dans le noyau, identifiée comme CVE-2022-0185, qui pourrait être exploitée dans des environnements tels que Kubernetes pour échapper aux conteneurs et prendre le contrôle du nœud. L’exploitation de la faille nécessite que le conteneur ait la permission CAP_SYS_ADMIN activée, ce qui permet des actions telles que le montage de disques ou la définition de quotas sur le conteneur.

La vulnérabilité consiste en un sous-débit d’entier dans le composant de contexte du système de fichiers, par lequel la valeur peut être réduite en dessous de zéro et au lieu de prendre une valeur négative, atteindre la valeur maximale de l’entier. Ce bug peut être exploité pour écrire en dehors de la mémoire allouée et ainsi modifier d’autres valeurs dans l’espace.

En principe, d’autres technologies telles que Docker ne sont pas vulnérables à ce bug car seccomp est activé en standard. Cette fonctionnalité du noyau est utilisée pour restreindre les actions autorisées dans le conteneur, empêchant ainsi l’exploitation de la vulnérabilité. Cette restriction peut être testée en essayant d’exécuter ‘unshare’ sur l’instance, et vous verrez apparaître une erreur indiquant que l’opération n’est pas autorisée. En théorie, les opérateurs Kubernetes pourraient également activer seccomp par défaut, bien que cette fonctionnalité soit encore en phase de test.

La vulnérabilité a déjà été corrigée dans la version 5.16.2 de Linux, et est maintenant disponible dans la plupart des distributions telles que Redhat, Debian ou Ubuntu. La faille n’est présente qu’à partir de la version 5.1 du noyau, les versions antérieures n’ont donc pas besoin de corriger le problème. Une autre possibilité est de désactiver les espaces de noms des utilisateurs non privilégiés, pour lesquels vous pouvez utiliser : ‘sysctl -w kernel.unprivileged_userns_clone = 0’.

Pour l’instant, rien ne prouve qu’il ait été exploité par des attaquants, bien que des Proof of Concept (PoC) soient déjà disponibles et que d’autres utilisateurs les testent déjà. Le même utilisateur de Twitter a publié un repository où il promet de mettre en ligne ses résultats prochainement.

Il est recommander de mettre à jour dès que possible si vous avez des conteneurs qui utilisent la permission ‘CAP_SYS_ADMIN’. De plus, il convient généralement de ne pas accorder de permissions supplémentaires aux conteneurs, sauf si leur utilisation est vraiment nécessaire.

Plus d’information:
https://access.redhat.com/security/cve/CVE-2022-0185%0A
https://www.armosec.io/blog/cve-2022-0185-kubernetes-users/%0A
https://blog.aquasec.com/cve-2022-0185-linux-kernel-container-escape-in-kubernetes

Fièrement propulsé par WordPress & Thème par Anders Norén