Microsoft a montré que la compromission d’une seule identité pouvait se transformer en une vaste voie d’accès au sein des environnements de développement et du cloud, même sans utiliser de logiciels malveillants ni exploiter de vulnérabilités. Dans un nouveau rapport de la série Cyberattack Series, l’équipe Microsoft Detection and Response Team (DART) a documenté le déplacement du groupe Storm-3068 d’un compte compromis vers Azure DevOps, les pipelines de développement et les ressources Kubernetes.
L’intrusion a commencé par une procédure de réinitialisation autonome du mot de passe. Après avoir accédé au compte utilisateur, l’attaquant y a enregistré ses propres moyens d’authentification, ce qui lui a fourni un accès persistant à l’identité. Il a ensuite utilisé des outils d’administration légitimes et des scripts automatisés pour inventorier les dépôts, les projets, les pipelines et les environnements de déploiement dans Azure DevOps.
De l’identité aux pipelines de déploiement
Azure DevOps constituait un point de grande valeur, car il relie l’identité, le développement logiciel et l’exploitation du cloud. En cartographiant les pipelines de déploiement et les ressources qui leur étaient associées, Storm-3068 a identifié des moyens de se déplacer vers d’autres parties de l’environnement.
Les enquêteurs ont découvert un pipeline malveillant conçu pour collecter à grande échelle des identifiants Kubernetes. Le pipeline a déployé un agent Kubernetes et exécuté plusieurs tâches afin de collecter des fichiers kubeconfig contenant les détails de connexion aux clusters et les données d’authentification. Grâce aux autorisations du compte compromis, le pipeline était autorisé à accéder à plus de 50 ressources et à s’authentifier auprès de différents services.
Les scripts des pipelines ont également été modifiés afin d’installer l’agent de gestion à distance Atera et de télécharger l’outil de création de tunnels Chisel. Des commandes Chisel ont été utilisées pour créer un tunnel inversé vers une adresse IP externe, ce qui a potentiellement permis une interaction à distance avec des clusters Kubernetes. L’équipe d’enquête a reconstitué l’étape suivante de l’attaque en s’appuyant sur les journaux d’audit d’Azure DevOps et l’historique des versions Git : sept fichiers kubeconfig volés ont été ajoutés à un dépôt.
Que révèle ce cas aux défenseurs ?
L’importance de l’incident tient au fait que le premier point de compromission ne suffisait pas, à lui seul, à expliquer l’ampleur de l’accès final. Le risque provenait de l’interconnexion entre les systèmes d’identité, les dépôts, les pipelines de compilation et de déploiement, ainsi que l’infrastructure opérationnelle. Sécuriser chaque couche isolément ne garantit donc pas le confinement d’un compte compromis si ses autorisations ouvrent des voies fiables vers les couches suivantes.
DART a réagi en analysant les données provenant des systèmes d’identité, des plateformes de développement et de l’infrastructure cloud, et a travaillé avec le client au moyen de briefings quotidiens et de directives classées par ordre de priorité pour le confinement et la remédiation. L’équipe a également collaboré avec Microsoft Threat Intelligence afin de replacer l’activité dans son contexte plus large.
Mesures défensives pratiques
- Surveiller l’activité de réinitialisation des mots de passe afin de détecter les tentatives répétées ou les schémas visant plusieurs utilisateurs.
- Réduire l’exposition des comptes disposant de privilèges élevés aux processus de réinitialisation autonome et imposer une authentification multifacteur résistante à l’hameçonnage.
- Exiger une approbation pour les modifications du code et activer la protection des branches afin d’empêcher les modifications non autorisées.
- Restreindre les validations directes dans les branches critiques et soumettre les changements à une revue et à une approbation explicites.
- Contrôler les autorisations des pipelines de compilation et de déploiement et définir qui peut les créer, les modifier ou les exécuter.
- Appliquer le principe du moindre privilège aux identités, aux plateformes de développement et aux ressources cloud afin de limiter l’impact de la compromission d’un seul compte.
Pourquoi cette actualité est-elle importante ?
Ce cas montre que les journaux d’identité, Azure DevOps, Git et les environnements Kubernetes doivent être lus comme une image de sécurité interconnectée, et non comme des sources distinctes. Les questions ouvertes établies par la source portent sur la capacité des organisations à détecter l’utilisation abusive d’outils légitimes, à examiner les autorisations transversales aux environnements et à empêcher la fuite de fichiers d’identifiants vers les dépôts avant qu’ils ne soient utilisés pour accéder à la production.