chaîne d'approvisionnement compromise: l'injection dans GitHub Actions qui a transformé un PR en une diffusion malveillante de données élémentaires

Publié 5 min de lectura 91 lecture

Un paquet très utilisé dans l'écosystème dbt, les données élémentaires, a été compromis dans PyPI et dans le dossier conteneur du projet après qu'un acteur malveillant a réussi à injecter du code dans le workflow GitHub Actions du projet. La version affectée est 0,23,3, qui comprenait un élémentaire malveillant. pth fichier conçu pour fonctionner au début de l'interpréteur Python et extraire les secrets locaux, les identifiants de cloud, les fichiers portefeuille cryptomoneda et d'autres données sensibles. L'équipe de projet a rapidement publié une version propre, élément mais ceux qui ont déjà installé le 0.23.3 ou utilisé des images compromises restent en danger.

Selon l'analyse technique disponible, l'agresseur n'avait pas besoin de compromettre les comptes de maintenance: a vulnérabilité à l'injection dans un commentaire de demande de copie qui a permis l'exécution du shell contrôlé par l'agresseur dans une action GitHub. Cette exécution a fui le GITHUB _ TOKEN du workflow, a forcé une commission signée et l'étiquette (v0.23.3) et a tiré le pipeline de publication légitime, qui a construit et téléchargé à la fois le paquet à PyPI et une image malveillante à GitHub Container Registry, lui donnant l'apparence du lancement officiel. Une analyse technique détaillée est disponible dans le rapport StepSecurity : ÉtapeSécurité - analyse des incidents.

chaîne d'approvisionnement compromise: l'injection dans GitHub Actions qui a transformé un PR en une diffusion malveillante de données élémentaires
Image générée avec IA.

Les répercussions sont multiples et graves pour les projets qui utilisent des pipelines de données ou qui déploient des conteneurs : la chaîne d'approvisionnement logicielle peut être violée sans casser les références humaines, en profitant simplement de flux d'automatisation mal configurés. Dans ce cas, la menace était de monter automatiquement les artefacts consommés dans les environnements de production, ce qui augmente la surface d'exposition et rend le confinement difficile s'il n'est pas détecté rapidement.

Si vous gérez des environnements qui utilisent des données élémentaires, des conteneurs publiés par le projet ou des dépendances qui ne sont pas explicitement définies dans des versions, agissez en priorité. Rotation de tous les identifiants et clés potentiellement exposés (jetons de dépôt, clés SSH, identifiants cloud, clés API, et phrases / fichiers de billet), laisser hors service ou révoquer des images avec ghcr.io / données élémentaires / élémentaires: 0.23.3 et ghcr.io / données élémentaires / élémentaires: derniers pour vérifier l'intégrité, et restaurer les systèmes à partir de points connus sains. En outre, il inspecte les machines et les pipelines pour des activités inhabituelles et recherche des dossiers comme le primaire. pth dans les paquets installés dans des environnements virtuels et des conteneurs; il conserve des journaux et des dispositifs pour l'analyse médico-légale avant de purger des preuves.

Pour réduire les risques futurs dans vos projets, vérifiez et resserrez la façon dont vos dépôts utilisent GitHub Actions : évitez de lancer un code source non fiable sans médiation, n'utilisez pas pull _ request _ cible lorsque le travail a besoin d'accéder aux identifiants, limitez les autorisations de GITHUB _ TOKEN au minimum nécessaire et désactivez la persistance de jeton dans les actions / caisse ( persistante) le cas échéant. Il valorise l'utilisation des versions signées, des outils de signature et de vérification tels que Sigstore / Cosign, et des politiques qui nécessitent un examen des changements de workflow avant de les accepter. GitHub publie des guides d'action à suivre : Harcèlement de sécurité pour les actions de GitHub.

chaîne d'approvisionnement compromise: l'injection dans GitHub Actions qui a transformé un PR en une diffusion malveillante de données élémentaires
Image générée avec IA.

D'autres techniques d'hygiène devraient être adoptées, notamment la mise en place de versions et la vérification des hachages dans les installations de canalisations (par exemple, exiger des dossiers d'exigences avec des hachages), le balayage des unités et des conteneurs avant le déploiement et l'utilisation de jetons à court terme ou à portée restreinte pour les flux automatisés. Si vous n'avez pas été en mesure de confirmer que votre version installée est de 0.21.4 ou plus, prenez l'engagement et agissez comme si vos secrets avaient été exfiltrés.

Au niveau communautaire, cette intrusion souligne que la sécurité de la chaîne d'approvisionnement implique à la fois les responsables et les consommateurs: le maintien des bonnes pratiques en CI/CD, l'examen des commentaires et des PR lorsque les flux de travail peuvent fonctionner en code et l'encouragement de la mise en place de contrôles automatiques pour les flux de travail sont des mesures qui protègent l'ensemble de l'écosystème. Les équipes chargées de la sécurité et du développement devraient coordonner les procédures d ' intervention qui comprennent la détection, le confinement, l ' éradication et la communication d ' informations aux tiers touchés.

Si vous avez besoin d'étapes de fonctionnement rapides : il confirme la version du paquet (pipe show ou pipe list), recherchez l'élémentaire. pth dans les environnements touchés, révoquer et réémettre les identifiants engagés, reconstruire les conteneurs à partir de sources vérifiées et mettre à jour les dépendances pour sécuriser les versions. Pour plus de contexte et de paramètres d'utilisation du paquet, vous pouvez voir les statistiques publiques dans PyPI Statistics: États PyPI - données élémentaires. La vitesse de réponse de la communauté était cruciale dans ce cas, mais la leçon est claire : automatiser en toute sécurité et supposer que les outils de construction peuvent devenir vecteurs d'attaque s'ils ne sont pas correctement contrôlés.

Couverture

Autres

Plus de nouvelles sur le même sujet.