Démon Docker exposé

Démon Docker exposé

Un démon Docker répondant sur le réseau est root distant.

Qu'est-ce que Démon Docker exposé?

L'API Docker est équivalente à root et n'a pas d'authentification propre. Un démon lié à un simple port TCP permet à toute personne pouvant l'atteindre de démarrer des conteneurs, de monter le système de fichiers hôte et de lire la machine. Aucune vulnérabilité n’est impliquée. Vous sonderez le port 2375 non authentifié de l'extérieur, répertorierez les conteneurs de production et monterez en liaison la racine de l'hôte pour lire son fichier d'environnement. Ensuite, vous supprimerez la liaison tcp://0.0.0.0:2375, exigerez des certificats clients TLS et verrez la même sonde refusée. L'exercice couvre également le montage de /var/run/docker.sock dans un conteneur.

Ce que vous apprendrez dans Démon Docker exposé

Démon Docker exposé — Étapes de la formation

  1. Lecture de la page de statut publique

    Bob n'est à l'intérieur de rien. Il est sur son propre ordinateur portable, en train de lire la page publique des opérations de Palliston. Elle est censée rassurer les clients sur la bonne santé de la plateforme, et ce faisant, elle nomme les nœuds de production, leurs IP publiques, et le moteur Docker que chacun exécute. Jetez un œil à ce qu'elle expose avant que Bob ne s'en serve.

  2. La ligne qui en dit trop

    Une seule ligne suffit. L'IP publique d'un nœud de production et le fait qu'il exécute Docker sont tout ce dont Bob a besoin pour tenter l'attaque la plus simple qui soit.

  3. Frapper à la porte du démon

    Le démon Docker peut être configuré pour écouter sur un port réseau plutôt que sur le seul socket local. Quand c'est le cas, et que TLS est désactivé, il répond à n'importe qui. Bob pointe son propre CLI Docker vers le port 2375 de ce nœud et lui pose la question la plus anodine qui soit : quelle version es-tu. S'il répond, la partie est déjà terminée.

  4. Consulter la flotte de production

    L'API Docker n'a rien d'étroit. Elle liste, démarre, arrête et construit des conteneurs, et elle fait tout cela en tant que root. Le premier geste de Bob avec elle est simplement de regarder : que fait réellement tourner cet hôte.

  5. Monter l'hôte, s'emparer des secrets

    Bob n'a pas besoin de s'introduire dans les conteneurs en cours d'exécution. Le démon lui en démarrera un tout neuf, et il montera tout ce qu'il lui demandera. Il demande l'intégralité du système de fichiers racine de l'hôte à /host, puis lit directement le fichier d'environnement de production à travers ce montage. Le conteneur est à lui. L'hôte est en dessous. Il n'y a jamais eu de mur entre les deux.

  6. Ce qui a rendu cela possible

    Un temps d'arrêt sur le mécanisme avant que la réponse ne commence.

  7. Le démon journalise un inconnu

    Palliston envoie les journaux de son démon Docker vers un collecteur central. Il n'est pas besoin d'un produit de détection d'intrusion pour remarquer ce qui apparaît : des appels API vers le démon sur ops-node-01, depuis une IP qui n'appartient à personne chez Palliston.

  8. Confirmer que la porte est ouverte

    Avant de modifier quoi que ce soit, Alice reproduit ce que décrivent les journaux. Si une sonde de version non authentifiée depuis sa propre machine obtient une réponse, le démon est exposé exactement comme Priya le craignait.

  9. Ouvrir la configuration du démon

    Le comportement du démon est défini dans un seul fichier, /etc/docker/daemon.json. Ce qui lui a dit d'écouter sur le réseau sans TLS est une ligne ici.

  10. Trouver ce qui a ouvert le port

    Deux paramètres, côte à côte, constituent toute l'exposition. L'un place l'API sur le réseau ; l'autre lui dit de ne pas vérifier qui l'appelle.

Couverture des référentiels de sécurité

CWE

  • CWE-306 Missing Authentication for Critical Function
  • CWE-284 Improper Access Control

MITRE ATT&CK

  • T1610 Deploy Container
  • T1133 External Remote Services

CIS Controls

  • CIS 4 Secure Configuration of Enterprise Assets and Software
  • CIS 6 Access Control Management

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security
  • PR.AA Identity Management, Authentication, and Access Control