Images de base malveillantes
Une image de base à un personnage et votre build envoie une porte dérobée.
Qu'est-ce que Images de base malveillantes?
Chaque ligne FROM est une décision de confiance. N'importe qui peut publier dans un registre public sous un nom éloigné du vôtre, et sans vérification de signature, une ligne FROM correspond à ce que le registre sert. Vous exécuterez une image similaire, observerez un mineur et inverserez le tir d'un obus au démarrage, puis tracerez une alerte minière à travers l'historique de la couche jusqu'à la ligne FROM qui l'a nommée. Vous épinglerez la base sur l'image officielle signée par résumé afin que le nom ne puisse pas être résolu en autre chose.
Ce que vous apprendrez dans Images de base malveillantes
- Reconnaître un espace de noms de registre similaire tel que dockr-library, à un caractère de l'image de la bibliothèque officielle
- Expliquez pourquoi chaque ligne FROM est une décision de confiance qui résout un nom en ce que le registre choisit de servir
- Tracez une alerte minière dans l'historique de création de couches jusqu'à la ligne FROM qui a nommé l'image de base hostile.
- Épinglez la base sur l'image officielle signée par résumé afin que le nom ne puisse pas être résolu en contenu substitué
- Vérifiez la provenance avec une vérification de signature, qui vous indique qui a publié une image là où l'analyse des vulnérabilités ne peut pas
Images de base malveillantes — Étapes de la formation
-
Un nom à un caractère près
Bob n'infiltre rien. Il publie. Sur un hub d'images public, n'importe qui peut pousser un dépôt, et il en a poussé un sous un espace de noms qui se lit presque exactement comme l'image de base officielle de Node.js. Puis il attend qu'un build, quelque part, la récupère par erreur.
-
Habillée pour passer inaperçue
Le dépôt de Bob se trouve dans les résultats de recherche juste sous le vrai, avec le même slogan et un nombre de téléchargements respectable. La seule différence est la partie qu'un ingénieur pressé survole sans la voir.
-
Ce qu'il a réellement livré
Le sosie de Bob n'est pas une image Node reconditionnée avec une nouvelle étiquette. Il l'a construite à partir d'une image réelle et a ajouté une seule ligne. Voici le Dockerfile derrière la base qu'il a publiée.
-
La ligne qui fait le travail
Tout ce qui précède cette ligne est une base Node.js ordinaire. Un seul RUN, habillé d'un commentaire anodin, est ce qui la transforme en arme.
-
Observez le déclenchement de la charge utile
La base ressemble et se comporte comme une image Node.js normale, si bien qu'un build l'utilisant réussit et qu'une application dessus fonctionne. Mais une couche ajoutée par Bob récupère et exécute une charge utile dès qu'un conteneur démarre. Il lance sa propre base une fois pour confirmer que la charge utile se déclenche toujours.
-
Exploiter le point d'entrée
Un build de Marlspire a été livré sur sa base, et l'implant qu'elle a planté a communiqué avec son serveur. Bob n'a plus besoin de s'introduire : il a déjà un shell à l'intérieur de leur conteneur de production. Il lui ordonne de livrer ce qu'il peut atteindre.
-
Ce qui a rendu cela possible
Un temps d'arrêt sur le mécanisme avant que la réponse ne commence.
-
L'hôte signale un mineur
Marlspire exécute une surveillance des terminaux sur ses hôtes de conteneurs. Elle ne se soucie pas de ce que le conteneur est censé faire ; elle signale ce qu'elle a observé.
-
Lire les couches de l'image
Une image enregistre la façon dont elle a été construite, une commande par couche. Si un mineur s'installe lui-même, une couche a forcément exécuté la commande qui l'a récupéré. Alice lit l'historique de build de l'image livrée.
-
D'où venait la base
Le poison est dans la base, la question est donc de savoir laquelle. Alice recherche les deux candidates sur le hub public, côte à côte.
Couverture des référentiels de sécurité
CWE
- CWE-494 Download of Code Without Integrity Check
- CWE-345 Insufficient Verification of Data Authenticity
MITRE ATT&CK
- T1195.002 Supply Chain Compromise: Compromise Software Supply Chain
CIS Controls
- CIS 2 Inventory and Control of Software Assets
- 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
- ID.AM Asset Management
- PR.PS Platform Security