Présentation de la vulnérabilité

Les chercheurs de Noma Security Inc. ont découvert une vulnérabilité critique dans la fonctionnalité Agentic Workflows de GitHub, qui permettait à un attaquant non authentifié de siphonner des données à partir de dépôts de code privés en publiant une seule question soigneusement conçue dans un dépôt public.

Fonctionnement de la vulnérabilité GitLost

La vulnérabilité GitLost fonctionne via une injection de commande indirecte. Un attaquant peut enterrer des instructions hostiles dans le contenu que l'agent lit, et le modèle les suit comme si elles venaient de son opérateur. Pour exploiter cette vulnérabilité, il n'est pas nécessaire d'avoir des compétences en codage ou un compte sur la cible.

Un attaquant peut ouvrir une question dans un dépôt public appartenant à une organisation qui exécute un workflow vulnérable, puis attendre. Le workflow testé par Noma était configuré pour déclencher lorsqu'une question est attribuée, lire le titre et le corps de la question, publier un commentaire en réponse et s'exécuter avec un accès en lecture à d'autres dépôts publics et privés de l'organisation.

README files from both a public and a private repository

Implications et limites

La découverte de cette vulnérabilité met en évidence un problème structurel avec les systèmes agents : la fenêtre de contexte de l'agent sert également de surface d'attaque. Toute question, demande de tirage, commentaire ou fichier que l'agent lit peut être utilisé comme arme si le modèle traite ce contenu comme des instructions.

Les chercheurs de Noma recommandent de ne jamais traiter le contenu contrôlé par l'utilisateur comme une entrée d'instruction de confiance, de limiter les autorisations de l'agent au minimum requis, de restreindre ce que l'agent peut publier publiquement et d'isoler l'entrée de l'utilisateur du contexte d'instruction avant qu'il n'atteigne le modèle.

La vulnérabilité GitLost a été divulguée de manière responsable à GitHub et détaillée publiquement avec la connaissance de l'entreprise.