GitHub a étendu la portée des alertes Dependabot relatives aux paquets malveillants, de l’écosystème npm à huit écosystèmes, après avoir relié la GitHub Advisory Database aux données du dépôt OpenSSF consacré aux paquets malveillants. La nouvelle couverture inclut npm, PyPI, Maven, RubyGems, NuGet, Go, crates.io et PHP Composer, ce qui permet de détecter des dépendances malveillantes dans des projets utilisant des langages et des outils allant au-delà de JavaScript.
Dependabot avait commencé plus tôt dans l’année à détecter les logiciels malveillants dans les dépendances npm. La nouvelle extension repose sur l’importation d’enregistrements OpenSSF au format OSV, plutôt que sur la création de systèmes de détection distincts pour chaque écosystème. Selon la publication, le dépôt OpenSSF contient plus de 15 000 rapports depuis son lancement en 2023, et continue de croître grâce aux signalements de la communauté et aux sources de détection automatisées, notamment les paquets à similarité de nom, les paquets de confusion de dépendances, les prises de contrôle de comptes et les fichiers binaires précompilés malveillants.
Un importateur unifié pour les données relatives aux paquets malveillants
L’équipe d’ingénierie de la sécurité de la chaîne d’approvisionnement de GitHub a développé un importateur unique suivant le modèle des importateurs utilisés avec les dépôts d’alertes publiques. L’importateur lit les fichiers modifiés depuis sa dernière exécution, puis vérifie les champs obligatoires, les types et le format conformément au schéma OSV avant d’introduire un enregistrement dans la base de données. Les enregistrements qui échouent à la validation sont rejetés et consignés pour examen, au lieu d’être automatiquement modifiés puis transmis.
Après validation, les enregistrements sont convertis en entrées de flux comprenant la source, l’identifiant et l’identifiant CVE lorsqu’il est disponible, tout en conservant l’enregistrement original complet comme copie de référence. L’importateur traite également les différences entre les données des sources, comme l’utilisation par OpenSSF du nom PyPI alors que la base de données GitHub utilise le nom pip, la représentation des versions concernées sous forme de valeurs distinctes plutôt que de plages, l’absence d’une version exploitable dans certains rapports et le retrait de rapports qui se révèlent ultérieurement incorrects.
Prévention des doublons et protection du pipeline de publication
Un problème supplémentaire vient du fait que GitHub contribue lui-même à fournir des données au dépôt OpenSSF, tandis que les alertes GitHub relatives aux logiciels malveillants npm sont transmises au dépôt. Pour éviter de réimporter les mêmes données, l’importateur s’appuie sur les informations de source de l’enregistrement dans OSV et exclut toute entrée portant l’étiquette ghsa-malware, puisqu’elle provient initialement de GitHub. La publication indique que plus de la moitié des nouveaux rapports npm reçus chaque mois par le dépôt provenaient d’alertes GitHub ; ils sont donc exclus en tant que boucles de réimportation.
Les alertes de logiciels malveillants sont publiées automatiquement, sans lecture humaine de chaque rapport avant publication, car retarder l’alerte de plusieurs jours peut donner davantage de temps à un attaquant lorsqu’un paquet vole des identifiants. Cela diffère des alertes de vulnérabilités, qui nécessitent généralement une vérification humaine de la correspondance des paquets, des plages de versions et de la gravité du problème.
Trois couches pour gérer les données erronées
- Limites des lots : chaque exécution définit un plafond configurable pour le nombre d’alertes pouvant être créées. Si les données dépassent ce plafond, l’exécution entière s’arrête et rien n’est publié, tandis que le nombre exact d’alertes est transmis.
- Suivi de la source : chaque alerte est liée au commit précis du dépôt malicious-packages, ce qui permet d’identifier la source du rapport pendant les incidents.
- Réversion : chaque lot peut être identifié et annulé comme une seule unité si des données contaminées se sont infiltrées, au lieu de supprimer manuellement les alertes de la base de données.
Activation pour les utilisateurs
Les alertes de dépendances malveillantes dans Dependabot sont désormais disponibles en option et peuvent être activées depuis les paramètres de sécurité du dépôt, de l’organisation ou de l’entreprise. Après activation, Dependabot compare les dépendances aux alertes de logiciels malveillants de la GitHub Advisory Database, notamment au moyen d’une mise en correspondance ultérieure avec les alertes déjà existantes.