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
- Reconnaissez que l'extraction anonyme d'un référentiel privé donne à un attaquant votre source, votre configuration et vos couches de construction.
- Tracez un déploiement empoisonné jusqu'à un attaquant qui a reconstruit l'image de production et l'a repoussée sous la même balise de version.
- Configurez une politique de registre qui nécessite une authentification pour l'extraction et qui s'étend aux référentiels réellement construits par un pipeline.
- Marquer les balises de version comme immuables afin qu'une balise existante ne puisse pas être redirigée vers un contenu que personne n'a testé ou examiné
- Vérifiez une image déployée en comparant son résumé avec le résumé enregistré par le pipeline, car une balise se déplace mais un résumé ne peut pas
Exposition du registre de conteneurs — Étapes de la formation
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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