Une étude de l'université de Leiden a relevé 4893 référentiels malveillants sur GitHub. Scripts d'exfiltration de données, malwares ou simples "pranks" gangrènent les repositories accueillant, ou prétendant accueillir, des Proofs of Concept d'exploit de faille.
Vous pensiez tester un PoC trouvé sur Github et, soudain, sur votre machine s’exécute un script, des données sont exfiltrées, un malware est téléchargé… Car près d’un PoC sur dix sur Github est malicieux : c’est la conclusion à laquelle est parvenue une équipe de chercheurs de l’Université de Leiden. Pour mémoire, les Proofs of Concept d’exploit de vulnérabilités sont largement partagées parmi la communauté de la cybersécurité, aussi bien sur des sites spécialisés que dans des repositories généralistes, à l’instar de Github.
Les chercheurs du Leiden Institute of Advanced Computer Science se sont penchés sur ce dernier, partant du principe que « les référentiels de code publics ne fournissent aucune garantie qu'un PoC donné provient d'une source fiable, ou même qu'il fait simplement exactement ce qu'il est censé faire ». Ils ont donc passé à la loupe quelques 47 300 référentiels se présentant comme l’exploit d’une vulnérabilité divulguée entre 2017 et 2021. Pour ce faire, les chercheurs ont analysé les adresses IP de l’éditeur du PoC avec diverses bases d’IP réputées malveillantes, comparé les binaires contenus dans les repositories avec VirusTotal et effectué une analyse hexadécimale et Base64 de sorte à décoder les fichiers obfusqués.
Terrain miné
Le constant de ces tests est sans appel : 4893 référentiels sont considérés malveillants, sur un total de 47 313. En examinant de plus près certains de ces cas, les chercheurs ont découvert moult logiciels et scripts malveillants, allant des chevaux de Troie d'accès à distance à Cobalt Strike. Outre les scripts d’exfiltration de données et les malwares, l’équipe a identifié un certain nombre de « pranking script ». Il ne s’agit pas de scripts malveillants mais faux : ce ne sont pas les PoCs des vulnérabilités en question, mais des farces, le script affichant un message humoristique ou bien « rick roll » l’utilisateur.
Fait intéressant, les projets originaux ne sont pas forcément malveillants : leurs forks le sont. Ou l’inverse. Parfois, les deux contiennent des exécutables malveillants. Les chercheurs ont observé le cas d’un « référentiel partagé à l'origine par une société de sécurité européenne de premier plan ». Lequel était forké. Le parent n’était pas malveillant, le fork l’était. « Lorsque nous avons examiné l'historique des mises à jour du référentiel d'origine, nous avons découvert qu'un fichier EXE malveillant y était initialement inclus. Il a ensuite été supprimé par la société de sécurité, mais il est resté dans le référentiel forké ».
En résumé, il est déconseillé de faire aveuglément confiance aux référentiels Github, surtout s’ils viennent de sources non-vérifiées. Les chercheurs du Leiden Institute of Advanced Computer Science explique que, à la suite de leur étude, Github a procédé à un nettoyage de certains repos malveillants. Toutefois, outre l’opération de nettoyage ponctuelle, l’équipe d’universitaires espère pouvoir développer une solution automatisée pour la détection de ces PoC malveillants.