CVE 2019-5736 dans runC

Bonjour à tous ! Aujourd’hui nous allons voir ensemble la faille trouvée hier dans l’outil runC qui permet une évasion du conteneur et donc de pouvoir exécuter des commandes sur l’hôte avec des droits élevés. La CVE est la 2019-5736.

Présentation rapide de runC

Rapidement runC est un outil bas niveau qui permet de créer et de lancer un conteneur Linux. Il est utilisé par de nombreux outils comme Docker, Containerd, CRI-O et même LXC.

Et vu que d’autres outils comme Kubernetes et Rancher utilisent eux mêmes des outils comme Docker, cela rend l’ensemble de ces outils vulnérables à cette faille car ils sont tous rajoutés par dessus cet outil mais runC reste au coeur de ces systèmes. Alors même si aucun système n’est en lui même vulnérable ils le restent avec l’utilisation de runC.

La vulnérabilité

La vulnérabilité semble donc toucher un grand nombre d’outil comme les outils Docker et Kubernetes vu plus haut. Même si nous n’avons pas beaucoup d’informations pour l’instant, la vulnérabilité est la suivante dans les grandes lignes.

Elle s’appuie sur les processus et utilisateurs tournant dans le conteneur, si l’utilisateur root est présent dans le conteneur et qu’il utilise l’UID 0 votre système est faillible.

Pour contrer cette vulnérabilité dans un premier temps vous pouvez vous assurer qu’aucun de vos conteneurs n’utilise l’utilisateur root avec l’UID 0 et qu’aucun de vos conteneurs n’est lancé avec les privilèges root (–privileged=true).

Des patchs et des solutions sont également proposées sur les liens suivants :

L’exploit

Bien que Rancher & Kubernetes aient annoncé que l’exploit ne serait disponible que d’ici 1 semaine le temps pour les entreprises de corriger le problème et de patcher leurs systèmes. Un indépendant à publié un code d’exploitation de la faille sur Github, il est disponible ici :

  • https://github.com/feexd/pocs/tree/master/CVE-2019-5736

Cet exploit écrit en C et en bash permet de remplacer le binaire « /usr/bin/docker-runc » sur l’hôte et « /bin/sh » dans le conteneur et de créer un reverse shell avec les droits root.

Source :

  • https://kubernetes.io/blog/2019/02/11/runc-and-cve-2019-5736/
  • https://rancher.com/blog/
  • https://github.com/feexd/pocs/tree/master/CVE-2019-5736
  • https://github.com/lxc/lxc/commit/6400238d08cdf1ca20d49bafb85f4e224348bf9d

Nous verrons dans un prochain article comment exécuter cet exploit !

J’espère que cet article vous aura plu, si vous avez des questions ou des remarques sur ce que j’ai pu écrire n’hésitez pas à réagir avec moi par mail ou en commentaire !

Merci pour votre lecture et à bientôt !

MRigonnaux

One Reply to “CVE 2019-5736 dans runC”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.