Samedi dernier, le 18 mai, Jerry Gamblin de Kenna Security 1000 des images les plus populaires de Docker Hub pour le mot de passe d'utilisateur root utilisé. Dans 19% des cas, il s'est avéré vide.

Contexte avec Alpine
La raison de cette mini-recherche était le rapport de vulnérabilité Talos paru plus tôt ce mois-ci (), dont les auteurs — grâce à la découverte de Peter Adkins de Cisco Umbrella — ont rapporté que les images Docker avec la distribution populaire pour conteneurs Alpine n'ont pas de mot de passe pour root :
« Les versions officielles des images Docker d'Alpine Linux (à partir de v3.3) contiennent un mot de passe NULL pour l'utilisateur root. Cette vulnérabilité résulte d'une régression introduite en décembre 2015. En substance, cela signifie que les systèmes déployés avec des versions problématiques d'Alpine Linux dans un conteneur et utilisant Linux PAM ou un autre mécanisme reposant sur le fichier système shadow comme base de données d'authentification peuvent accepter un mot de passe nul (NULL) pour l'utilisateur root ».
Les versions d'images Docker avec Alpine problématiques vérifiées allaient de 3.3 à 3.9 inclus, ainsi que la dernière version edge.
Les auteurs ont donné la recommandation suivante aux utilisateurs concernés par le problème :
« Le compte root doit être explicitement désactivé dans les images Docker construites sur des versions problématiques d'Alpine. L'exploitation potentielle de la vulnérabilité dépend de l'environnement, car son succès nécessite un service ou une application exposés utilisant Linux PAM ou un autre mécanisme similaire ».
Le problème était dû à dans les versions 3.6.5, 3.7.3, 3.8.4, 3.9.2 et edge (snapshot 20190228) d'Alpine, et il a été conseillé aux utilisateurs concernés de commenter la ligne avec root dans /etc/shadow ou de s'assurer de l'absence du paquet linux-pam.
Suite sur Docker Hub
Jerry Gamblin a voulu savoir « à quel point l'usage de mots de passe null dans les conteneurs pouvait être courant ». Pour cela, il a écrit un petit , dont le principe est assez simple :
- il effectue une requête curl à l'API de Docker Hub pour obtenir la liste des images Docker hébergées là-bas ;
- il les trie par le champ
popularité, et parmi les résultats obtenus, il ne conserve que les mille premières ; - pour chacune d'elles, il effectue
docker pull; - pour chaque image obtenue de Docker Hub, il effectue
docker runen lisant la première ligne du fichier,/etc/shadow; - si la valeur de la ligne s'est révélée égale à
root:::0:::::, le nom de l'image est enregistré dans un fichier séparé.
Qu'est-ce qui en est ressorti ? Dans il s'est avéré qu'il y a 194 lignes de noms de conteneurs Docker populaires utilisant des systèmes Linux, où l'utilisateur root n'a pas de mot de passe configuré :
« Parmi les noms les plus connus sur cette liste se trouvent govuk/governmentpaas, hashicorp, microsoft, monsanto et mesosphere. Le conteneur le plus populaire est kylemanna/openvpn, avec plus de 10 millions de pull ».
Il convient néanmoins de rappeler que ce phénomène en soi ne signifie pas une vulnérabilité directe dans la sécurité des systèmes qui les utilisent : tout dépend de la manière dont ils sont appliqués. (voir le commentaire du cas d'Alpine ci-dessus). Cependant, « la morale de cette histoire » a déjà été observée de nombreuses fois : la simplicité apparente a souvent un revers qu'il est toujours nécessaire de garder à l'esprit et dont il faut prendre en compte les conséquences dans ses scénarios d'application de la technologie.
P.S.
Lisez aussi dans notre blog :
- «»;
- «»;
- «»;
- «».
Source : habr.com
