GitHub reste une cible de choix pour les attaquants, car il se situe au cœur du cycle de développement logiciel et donne aux acteurs malveillants trois éléments dont ils raffolent : le code source, les secrets et des pipelines automatisés dans lesquels ils peuvent sévir. Depuis plusieurs mois, des chercheurs en sécurité de Datadog observent un « schéma persistant » d’utilisation abusive des API GitHub visant à cartographier les entreprises et leurs membres. Si, prises individuellement, ces requêtes sont banales, elles deviennent dangereuses lorsqu’elles se propagent d’un environnement à l’autre pendant des semaines, et, pire encore, lorsqu’elles aboutissent à un clonage complet. Le plus grand défi réside dans le fait qu’elles se fondent dans les schémas d’utilisation normaux de l’API. « GitHub est une mine d’or pour les criminels qui cherchent à s’introduire dans les entreprises, car la majorité des cycles de développement sont peu sécurisés », a déclaré David Shipley, CEO et co-fondateur de Beauceron Security. En général, les acteurs malveillants recherchent des clés API et des secrets cloud. « Mais, tout le monde étant poussé à en faire plus, plus vite, avec des agents IA qui codent, le trésor de secrets est probablement encore plus vaste », a-t-il ajouté. « En bref, pour reprendre une phrase d’une précédente ruée vers l’or de l’ère analogique, il y a de l’or dans ces collines ».

C’est aussi l’avis de Scott Miserendino, directeur technique de DataBee, spécialisé dans la sécurité et la conformité. « GitHub est le dépôt de code source le plus populaire, tant pour les projets open source que pour les projets d’entreprise », a-t-il renchéri. « Le nombre impressionnant de projets qu’il héberge, plus le fait qu’il abrite certains des logiciels les plus populaires et les plus utilisés, en font une cible de choix. » Il souligne que le vol de propriété intellectuelle, comme le clonage non autorisé de dépôts privés, peut servir à accéder à des logiciels propriétaires ou à identifier des vulnérabilités exploitables. Une autre technique d’attaque courante consiste à rechercher des dépôts contenant des identifiants par défaut pour des logiciels populaires. En les utilisant, les attaquants peuvent développer et tester des attaques contre des comptes présents dans des environnements de production ou installés par défaut sur certains appareils. De plus, comme l’a écrit dans un billet de blog Julie Agnes Sparks, ingénieure senior en sécurité chez Datadog, « cette activité n’est pas le fait d’un seul acteur, mais résulte plutôt d’un mélange d’outils de scan automatisés sur mesure, d’une utilisation opportuniste d’identifiants divulgués et de réseaux coordonnés de comptes fantômes. »

Une méthode simple mais efficace 

Julie Agnes Sparks a rappelé qu’une « grande partie » de la surface API de GitHub était accessible sans authentification, puisqu’elle est publique par conception. Les requêtes adressées aux API génèrent généralement des réponses HTTP 200 standard. Cela signifie qu’un acteur malveillant peut établir des cartes détaillées des entreprises, de leurs dépôts publics, de leurs membres, des comptes qu’ils suivent, de leurs dépôts favoris et des projets avec lesquels ils interagissent. « Ce trafic se fond dans l’utilisation normale de l’API et ne semble donc pas suspect », a-t-elle expliqué. De plus, GitHub ne collecte des données de géolocalisation que lorsqu’un utilisateur interagit avec des dépôts privés, en enregistrant son identité et le jeton d’accès utilisé, et non lorsqu’il interagit avec des ressources externes. Cela limite la géolocalisation et l’attribution basée sur les VPN ou les proxy. En général, les acteurs malveillants ont procédé à un scraping automatisé à l’aide d’agents utilisateurs personnalisés ou qui ont l’air légitimes, en tirant parti des comptes « fantômes » de GitHub, c’est-à-dire des profils créés entre deux et cinq ans et restés inactifs. La méthode est intéressante car, comme l’a fait remarquer Julie Agnes Sparks, « un compte ayant plusieurs années d’historique semble plus légitime qu’un compte créé la semaine où commence le scraping ».

En général, ces comptes sont utilisés pour un « pic » d’activité d’une à trois semaines, ciblant simultanément de nombreuses entreprises, puis leur utilisation cesse. Les chercheurs ont identifié plus de 50 comptes fantômes utilisant divers agents utilisateurs, regroupés en familles portant des noms comme user432023, user412023 ou kobalt. Certaines campagnes ont effectivement utilisé les comptes légitimes d’utilisateurs de GitHub qui avaient publié par inadvertance leurs jetons OAuth ou leurs jetons d’accès personnels (Personal Access Token, PAT), ou dont les points de terminaison avaient été compromis ou exposés d’une autre manière. Les attaquants utilisent un ensemble d’agents d’exfiltration de données portant des noms tels que GitHub-Company-Scraper, GitHub-Scraper-Tool/1.0 et GitHubAnalytics/1.5, conçus pour se fondre dans le trafic normal d’analyse de données.

La majeure partie des requêtes cible le langage de requête open source GraphQL « particulièrement adapté » aux requêtes en masse portant sur les entreprises, les utilisateurs et les dépôts, a noté Mme Sparks. Des points de terminaison REST normaux sont utilisés pour le mappage des entreprises. L’objectif de ces campagnes était « restreint et cohérent », et la préoccupation « réside dans la globalité », a fait remarquer Julie Agnes Sparks. Prises isolément, les requêtes ciblent des dépôts publics sans authentification et renvoient des réponses positives. Cela ne donne que rarement lieu à un « accès significatif » aux dépôts d’une entreprise. Mais un groupe de comptes agissant de manière synchronisée sur des comptes GitHub partagés, à l’aide d’outils personnalisés et versionnés, sur une période de plusieurs semaines, représente un comportement plus inquiétant et systématique. Julie Agnes Sparks a cité un incident au cours duquel des dizaines de comptes d’utilisateurs GitHub distincts, légitimes mais compromis, ont effectué des requêtes API vers une seule organisation en l’espace de quelques minutes seulement. Mais, dans ce cas précis, l’attaque a échoué, car elle visait des chemins de commit de dépôts privés.

Protéger les environnements GitHub

Julie Agnes Sparks explique que ces comportements peuvent être repérés et détectés « si l’on surveille les bons champs », en particulier ceux identifiant l’agent utilisateur, le type de jeton, le numéro de système autonome (ASN) ou l’action tentée. « Les agents utilisateurs, l’activité liée aux événements et les noms des acteurs sont des indices essentiels pour détecter toute activité non autorisée dans l’environnement d’entreprise », souligne-t'elle, recommandant d’examiner les comportements inhabituels des agents utilisateurs dans les journaux d’audit de GitHub, en particulier ceux qui concernent des dépôts privés où la plateforme enregistre également l’adresse IP, le nom de l’acteur et le type d’accès programmatique. Les entreprises devraient également activer le streaming des journaux d’audit GitHub, établir une base de référence des agents utilisateurs et mener une recherche proactive des menaces. »

Mais surtout, elle estime que les entreprises devraient mettre au point des règles de détection spécifiques à leur organisation GitHub, en précisant qu’« Il est important de savoir à quoi ressemble un comportement normal dans son environnement. » En résumé, Scott Miserendino ajoute que les entreprises devraient suivre les meilleures pratiques de sécurité, notamment en activant l’authentification multifactorielle (MFA) sur tous les comptes, en effectuant des vérifications périodiques des accès des utilisateurs, en supprimant tout compte inutilisé ou inutile, et en analysant les dépôts à la recherche d’identifiants stockés en clair plutôt que dans un magasin de secrets.