Le samedi 18 mai dernier, Jerry Gamblin de Kenna Security a
vérifié les 1000 images les plus populaires du Docker Hub pour le mot de passe root utilisé. Dans 19% des cas, il était absent.

Contexte avec Alpine
La raison de la mini-étude était Talos Vulnerability Report (
TALOS-2019-0782 ), qui a été publié 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 le kit de distribution populaire pour les conteneurs Alpine n'avaient pas de mot de passe pour racine:
«Les versions officielles des images Alpine Linux Docker (à partir de la v3.3) contiennent un mot de passe NULL pour l'utilisateur root. Cette vulnérabilité est apparue à la suite d'une régression introduite en décembre 2015. Son essence est 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 qui utilise le fichier système fantôme comme base de données d'authentification peuvent accepter un mot de passe NULL pour l'utilisateur root. »
Les versions alpines des images Docker testées pour le problème ont été appelées 3.3–3.9 inclus, ainsi que la dernière version Edge.
Les auteurs ont fait 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 la base de versions problématiques d'Alpine. L'exploitation probable de la vulnérabilité dépend de l'environnement, car son succès nécessite un service ou une application qui a été transféré à l'extérieur, en utilisant Linux PAM ou un autre mécanisme similaire. »
Le problème a été
corrigé dans les versions Alpine 3.6.5, 3.7.3, 3.8.4, 3.9.2 et edge (instantané 20190228), et les propriétaires des images concernées ont été invités à commenter la ligne avec racine dans
/etc/shadow
ou à s'assurer qu'il n'y a pas de paquet
linux-pam
.
Suite avec le Docker Hub
Jerry Gamblin a décidé de se renseigner, "dans quelle mesure cela pourrait se révéler être la pratique d'utiliser des mots de passe nuls dans les conteneurs." Pour ce faire, il a écrit un petit
script Bash , dont l'essence est très simple:
- via une requête curl à l'API dans le Docker Hub, une liste des images Docker qui y sont hébergées est demandée;
- grâce à jq, il est trié par domaine de
popularity
et les mille premiers restes des résultats obtenus; docker pull
est exécutée pour chacun d'eux;- pour chaque image reçue du Docker Hub, l'
docker run
est effectuée avec la lecture de la première ligne du fichier /etc/shadow
; - si la valeur de chaîne s'est avérée être
root:::0:::::
, le nom de l'image est enregistré dans un fichier séparé.
Que s'est-il passé?
Ce fichier contenait 194 lignes avec les noms d'images Docker populaires avec les systèmes Linux, l'utilisateur root dans lequel n'a pas de mot de passe:
«Parmi les noms les plus célèbres de cette liste figuraient govuk / governmentpaas, hashicorp, microsoft, monsanto et mesosphere. Et kylemanna / openvpn est le conteneur le plus populaire de la liste, ses statistiques totalisent plus de 10 millions de pulls. "
Cependant, il convient 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 façon dont ils sont utilisés
(voir le commentaire du cas Alpine ci-dessus) . Cependant, nous avons déjà vu à plusieurs reprises «la moralité de cette fable»: la simplicité apparente a souvent un inconvénient, dont il faut toujours se souvenir et dont les conséquences doivent être prises en compte dans les scénarios technologiques.
PS
Lisez aussi dans notre blog: