Les dĂ©tails de l'attaque contre l'infrastructure utilisĂ©e pour le dĂ©veloppement du framework de machine learning PyTorch ont Ă©tĂ© rĂ©vĂ©lĂ©s, permettant d'extraire des clĂ©s d'accĂšs suffisantes pour hĂ©berger des donnĂ©es arbitraires dans le dĂ©pĂŽt des releases du projet sur GitHub et AWS, ainsi que pour injecter du code dans la branche principale du dĂ©pĂŽt et ajouter une porte dĂ©robĂ©e via des dĂ©pendances. Le remplacement des releases de PyTorch aurait pu ĂȘtre utilisĂ© pour attaquer de grandes entreprises telles que Google, Meta, Boeing et Lockheed Martin, qui utilisent PyTorch dans leurs projets. Dans le cadre du programme Bug Bounty, Meta a versĂ© 16 250 $ aux chercheurs pour des informations sur le problĂšme.
Le cĆur de l'attaque rĂ©side dans la possibilitĂ© d'exĂ©cuter son propre code sur serveurs des intĂ©grations continues, exĂ©cutant des reconstructions et des tĂąches pour tester de nouvelles modifications envoyĂ©es dans le dĂ©pĂŽt. Le problĂšme concerne les projets qui utilisent leurs propres exĂ©cutants « Self-Hosted Runner » avec GitHub Actions. Contrairement aux actions GitHub traditionnelles, les exĂ©cutants Self-Hosted ne s'exĂ©cutent pas dans l'infrastructure de GitHub, mais sur leurs serveurs ou dans des machines virtuelles, maintenues par les dĂ©veloppeurs.
L'exĂ©cution des tĂąches de construction sur leurs serveurs permet de faire tourner du code qui peut scanner le rĂ©seau interne de l'entreprise, rechercher dans le systĂšme de fichiers local des clĂ©s de chiffrement et des tokens d'accĂšs, analyser les variables d'environnement avec des paramĂštres d'accĂšs Ă des stockages externes ou Ă des services cloud. En l'absence d'une isolation adĂ©quate de l'environnement de construction, les donnĂ©es sensibles trouvĂ©es peuvent ĂȘtre envoyĂ©es Ă l'attaquant Ă l'extĂ©rieur, par exemple par le biais d'appels externes Ă des API. L'outil Gato, qui analyse les fichiers de workflow publics et les journaux d'exĂ©cution des tĂąches CI, peut ĂȘtre utilisĂ© pour dĂ©terminer l'utilisation des « Self-Hosted Runner » par les projets.
Dans PyTorch et de nombreux autres projets utilisant des « Self-Hosted Runner », l'exécution des tùches de construction est autorisée uniquement aux développeurs dont les modifications ont été préalablement révisées et intégrées dans la base de code du projet. Avoir le statut de « contributor » avec les paramÚtres par défaut dans le dépÎt permet de lancer des exécutants GitHub Actions lors de la soumission de pull requests et, en conséquence, d'exécuter son propre code dans n'importe quel environnement de GitHub Actions Runner lié au dépÎt ou à l'organisation qui supervise le projet.
Il Ă©tait facile de contourner le statut de « contributor » â il suffisait d'envoyer une modification mineure au prĂ©alable et d'attendre son acceptation dans la base de code, aprĂšs quoi le dĂ©veloppeur obtenait automatiquement le statut d'utilisateur actif, permettant de tester ses pull requests dans l'infrastructure CI sans vĂ©rification sĂ©parĂ©e. Pour obtenir le statut de dĂ©veloppeur actif, des modifications cosmĂ©tiques mineures, liĂ©es Ă la correction de fautes d'orthographe dans la documentation, ont Ă©tĂ© utilisĂ©es. Lors de l'attaque pour accĂ©der au dĂ©pĂŽt et Ă l'entrepĂŽt de versions de PyTorch, un vol de jeton GitHub a Ă©tĂ© rĂ©alisĂ© lors de l'exĂ©cution de code dans un « Self-Hosted Runner », utilisĂ© pour accĂ©der au dĂ©pĂŽt Ă partir des processus de construction, ainsi que des clĂ©s AWS utilisĂ©es pour enregistrer les rĂ©sultats de la construction.
Le problÚme n'est pas spécifique à PyTorch et touche de nombreux autres projets majeurs qui utilisent les paramÚtres par défaut pour « Self-Hosted Runner » dans GitHub Actions. Par exemple, on mentionne la réalisation d'attaques similaires pour insérer un backdoor dans certains grands portefeuilles de cryptomonnaies et des projets blockchain valorisés à plusieurs milliards, pour apporter des modifications aux versions de Microsoft Deepspeed et TensorFlow, la compromission d'une des applications de CloudFlare, ainsi que l'exécution de code sur des ordinateurs dans le réseau de Microsoft. Les détails concernant ces incidents n'ont pas encore été révélés. Dans le cadre des programmes en cours de Bug Bounty, les chercheurs ont soumis plus de 20 demandes pour obtenir des récompenses totalisant plusieurs centaines de milliers de dollars.
Source : opennet.ru
