Exposition du registre de conteneurs

Exposition du registre de conteneurs

Un pull anonyme divulgue votre code. Un push anonyme le remplace.

Qu'est-ce que Exposition du registre de conteneurs?

Un registre qui permet d'extraire anonymement votre source, votre configuration et votre artefact déployé à quiconque devine le nom du référentiel. Le push anonyme permet à un attaquant d’écraser la balise que vous êtes sur le point d’expédier, et le pipeline ne remarque rien. Vous allez extraire une image de production, la reconstruire avec un implant, la repousser sous la même balise de version et exécuter cette implantation dans le service en cours d'exécution. Ensuite, vous aurez besoin d'une authentification, d'un push de portée, de marquer les balises de version immuables et de vérifier l'image déployée par résumé plutôt que par balise.

Ce que vous apprendrez dans Exposition du registre de conteneurs

Exposition du registre de conteneurs — Étapes de la formation

  1. Rechercher un dépôt public

    Bob ne cible pas Quenmoor nommément. Il scanne les registres autohébergés à la recherche de ceux qui répondent sans identifiant, puis énumère leurs dépôts pour en trouver un laissé lisible. Le registre de Quenmoor répond, et un dépôt se démarque.

  2. Un dépôt privé laissé ouvert

    Bob scanne les registres autohébergés à la recherche de dépôts qu'il ne devrait pas pouvoir atteindre. Le registre de Quenmoor lui a répondu sans lui demander qui il était, et un dépôt se démarque : un service de répartition interne.

  3. Public, et inscriptible

    C'est un service interne, mais sa politique d'accès est grande ouverte. Bob lit les deux paramètres qui l'intéressent.

  4. Le récupérer anonymement

    Aucun identifiant, aucune adhésion, aucune demande d'accès. Bob pointe Docker vers le registre et récupère directement l'image de production.

  5. Lire leur configuration de production

    L'image n'est pas que du code. Elle transporte la configuration avec laquelle elle s'exécute, intégrée dans une couche. Bob démarre un conteneur à partir d'elle et lit directement ce fichier.

  6. La reconstruire avec une porte dérobée

    Lire l'image était du vol ; l'écraser, c'est prendre le contrôle. Comme il a récupéré leur véritable image de production, Bob la reconstruit directement à partir de celle-ci et ajoute une seule couche. Voici le Dockerfile.

  7. La couche qu'il a ajoutée

    Tout le reste est leur image, inchangée. Un seul RUN la transforme en point d'ancrage qui est livré à chaque déploiement.

  8. L'étiqueter comme leur version

    Bob construit l'image empoisonnée et l'étiquette avec le nom exact à partir duquel Quenmoor déploie, afin que le registre la traite comme la version de production.

  9. Pousser un tag empoisonné

    Lire l'image, c'est du vol. L'écraser, c'est prendre le contrôle. Bob reconstruit l'image avec une porte dérobée dans son point d'entrée et la repousse vers le tag exact à partir duquel Quenmoor déploie. Le registre l'accepte sans demander qui il est.

  10. Ce que le push lui a rapporté

    Le déploiement suivant a mis le tag de Bob en production, et la couche qu'il a ajoutée a communiqué avec son serveur depuis l'intérieur du service en cours d'exécution. Il n'a plus besoin d'atteindre Quenmoor depuis l'extérieur : son code est le service.

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

CWE

  • CWE-306 Missing Authentication for Critical Function
  • CWE-732 Incorrect Permission Assignment for Critical Resource

MITRE ATT&CK

  • T1525 Implant Internal Image

CIS Controls

  • CIS 6 Access Control Management
  • CIS 2 Inventory and Control of Software Assets

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.AA Identity Management, Authentication, and Access Control
  • ID.AM Asset Management