Images de base malveillantes

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

Images de base malveillantes — Étapes de la formation

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. Ce qui a rendu cela possible

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

  8. 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é.

  9. 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.

  10. 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