Secrets dans les couches d'image

Secrets dans les couches d'image

La suppression d'un secret lors du prochain RUN ne le supprime pas.

Qu'est-ce que Secrets dans les couches d'image?

Les calques d’images sont uniquement ajoutés. Un identifiant transmis lors d'un RUN est définitivement enregistré dans cette couche, et un RUN ultérieur qui supprime le fichier ne fait qu'ajouter une couche au-dessus. Le fichier a disparu ; le secret est toujours dans l'historique de construction. Vous allez extraire une image publique, lire la commande de construction non tronquée et utiliser le jeton de publication. L'ordre de correction est important : révoquez d'abord le jeton, effectuez un remplacement limité, puis remplacez ensuite l'argument de construction par un montage secret BuildKit afin que rien ne soit écrit dans une couche livrée.

Ce que vous apprendrez dans Secrets dans les couches d'image

Secrets dans les couches d'image — Étapes de la formation

  1. Évaluer la cible

    Aujourd'hui, Bob cible Cindralt, une entreprise de paiement dont le service de règlement est livré sous forme d'image de conteneur. Il commence là où n'importe qui le peut : le registre de conteneurs de l'entreprise elle-même. Une image publiée est une cible pratique à attaquer. C'est exactement l'artefact qui tourne en production, et la récupérer ne coûte rien.

  2. N'importe qui peut la récupérer

    Le dépôt est publié pour une récupération anonyme. C'est un choix délibéré pour beaucoup d'entreprises et ce n'est pas en soi une vulnérabilité, mais cela signifie que l'artefact est disponible pour Bob dans les mêmes conditions que pour les propres serveurs de build de Cindralt.

  3. Récupérer l'image

    Bob récupère le tag que le registre indique comme latest. Ce qui atterrit sur sa machine est, octet pour octet, ce que Cindralt fait tourner en production, y compris chaque couche produite par le build en cours de route.

  4. Lire l'historique de build

    Chaque image transporte les commandes qui l'ont construite. Bob n'a pas besoin de faire tourner le conteneur ni de le décompresser : l'historique des couches est une métadonnée, et elle est fournie avec le pull. À première vue, ce build a l'air soigné. Quelqu'un a même fait le ménage après l'installation des dépendances.

  5. Demander la commande complète

    Le tableau par défaut est conçu pour tenir dans un terminal, pas pour dire toute la vérité. Bob demande les commandes de build seules, sans rien de tronqué. La commande d'installation a écrit un identifiant dans un fichier de configuration, et il est toujours là, dans la couche que cette commande a créée.

  6. Pourquoi la suppression n'a servi à rien

    Un instant sur le mécanisme avant que Bob n'utilise ce qu'il a trouvé.

  7. Vérifier ce que le jeton ouvre

    Un identifiant ne vaut que ce qu'il peut atteindre. Bob demande à l'index de paquets de Cindralt à qui appartient ce jeton et ce qu'il est autorisé à faire. La réponse est pire qu'un seul service. Le jeton publie sur chaque paquet contre lequel Cindralt construit, et il n'expire jamais.

  8. Ce que vaut ce jeton

    Bob n'a plus besoin de retoucher aux serveurs de Cindralt. Avec des droits de publication sur chaque paquet contre lequel l'entreprise construit, la prochaine version de n'importe quelle bibliothèque interne peut être la sienne, et elle sera récupérée par chaque build qui s'exécutera par la suite.

  9. L'index signale une publication

    L'index de paquets de Cindralt journalise chaque appel authentifié. Pendant la nuit, il a enregistré l'utilisation du jeton ci-publisher depuis une adresse qui n'appartient à personne dans l'entreprise.

  10. Le confirmer depuis l'image

    Alice vérifie elle-même l'affirmation par rapport à l'artefact publié, en utilisant exactement ce qu'un intrus aurait : le tag public et un client Docker standard.

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

CWE

  • CWE-540 Inclusion of Sensitive Information in Source Code
  • CWE-522 Insufficiently Protected Credentials

MITRE ATT&CK

  • T1552.001 Unsecured Credentials: Credentials In Files

CIS Controls

  • CIS 3 Data Protection
  • CIS 16 Application Software Security

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.DS Data Security
  • PR.PS Platform Security