Une éventuelle attaque de la chaîne d’approvisionnement logicielle via le service AWS CodeBuild est émoussée

Lucas Morel

Les chercheurs de Wiz, qui ont découvert la faille, ont déclaré que cela aurait pu conduire à la compromission des référentiels AWS GitHub.

Une mauvaise configuration d’AWS dans son service de création de code aurait pu conduire à la compromission d’un nombre massif de référentiels et d’applications de code AWS GitHub clés, affirment les chercheurs de Wiz qui ont découvert le problème.

La vulnérabilité provenait d’une faille subtile dans la façon dont les pipelines AWS CodeBuild CI (intégration continue) des référentiels géraient les déclencheurs de build. « Seulement deux caractères manquants dans un filtre regex ont permis à des attaquants non authentifiés d’infiltrer l’environnement de construction et de divulguer des informations d’identification privilégiées », ont déclaré les chercheurs dans un blog publié jeudi.

Le filtre regex (expression régulière) au centre du problème est une règle de correspondance de modèles automatisée qui analyse les résultats du journal à la recherche de secrets et les masque pour éviter les fuites.

Le problème a permis une prise de contrôle complète des principaux référentiels AWS GitHub, en particulier du SDK AWS JavaScript, une bibliothèque principale qui alimente la console AWS.

Après avoir été averti de la vulnérabilité en août dernier, AWS a rapidement comblé la faille et mis en œuvre un renforcement global au sein du service CodeBuild pour empêcher la possibilité d’attaques similaires. Les détails du problème ne sont révélés que maintenant par Wiz et AWS.

Mais les chercheurs de Wiz ont averti les développeurs utilisant le produit de prendre des mesures pour protéger leurs projets contre des problèmes similaires.

Découverte

Wiz a découvert le problème en août dernier après une tentative d’attaque de la chaîne d’approvisionnement sur l’extension Amazon Q VS Code. Un attaquant a exploité un projet CodeBuild mal configuré pour compromettre le référentiel GitHub de l’extension et injecter du code malveillant dans la branche principale. Ce code a ensuite été inclus dans une version téléchargée par les utilisateurs. Bien que la charge utile de l’attaquant ait finalement échoué en raison d’une faute de frappe, elle s’est exécutée sur les machines des utilisateurs finaux, démontrant clairement le risque de pipelines CodeBuild mal configurés.

Les chercheurs de Wiz ont enquêté et trouvé le cœur de la faille, un contournement de l’identification d’un acteur menaçant en raison d’expressions régulières non ancrées, et en ont informé AWS. En 48 heures, ce trou a été comblé, a déclaré AWS dans un communiqué accompagnant le blog Wiz.

Il a également effectué un renforcement supplémentaire, notamment en ajoutant des protections supplémentaires à tous les processus de construction contenant des jetons Github ou toute autre information d’identification en mémoire. AWS a déclaré avoir également audité tous les autres environnements de construction publics pour s’assurer qu’aucun problème de ce type n’existe dans le domaine open source d’AWS.

En outre, il a examiné les journaux de tous les référentiels de build publics, ainsi que les journaux CloudTrail associés, « et a déterminé qu’aucun autre acteur n’avait profité du problème d’expression régulière non ancrée démontré par l’équipe de recherche de Wiz. AWS a déterminé qu’il n’y avait aucun impact du problème identifié sur la confidentialité ou l’intégrité d’un environnement client ou d’un service AWS.  »

Kellman Meghu, directeur de la technologie chez Deepcove Cybersecurity, une société canadienne de gestion des risques, a déclaré que ce ne serait pas un problème majeur pour les développeurs qui n’exposent pas publiquement CodeBuild. « Mais », a-t-il ajouté, « si les gens ne font pas preuve de diligence, je vois comment cela pourrait être utilisé. C’est astucieux. »

Les développeurs ne devraient pas exposer les environnements de construction

Wiz recommande fortement à tous les utilisateurs d’AWS CodeBuild de mettre en œuvre les mesures de protection suivantes pour protéger leurs propres projets contre une éventuelle compromission.

  • Empêchez les Pull Requests non fiables de déclencher des builds privilégiés en :
    • activer la nouvelle porte de construction Pull Request Comment Approval ;
    • Vous pouvez également utiliser des exécuteurs hébergés par CodeBuild pour gérer les déclencheurs de build via les workflows GitHub ;
    • si vous devez vous fier aux filtres webhook, assurez-vous que leurs modèles d’expression régulière sont ancrés.
  • Sécurisez la connexion CodeBuild-GitHub en :
    • générer un jeton d’accès personnel (PAT) unique et précis pour chaque projet CodeBuild ;
    • limiter strictement les autorisations du PAT au minimum requis.
    • envisagez d’utiliser un compte GitHub dédié sans privilèges pour l’intégration de CodeBuild.

VulnérabilitésSécuritéDéveloppement de logicielsOutils de développement