Un groupe de mainteneurs de progiciels a créé un outil pour défendre les applications qui dépendent des bibliothèques JavaScript open source.

Appelé Socket, l’outil utilise une nouvelle défense proactive contre les attaques de la chaîne d’approvisionnement des logiciels open source OSS.

Les attaques de la chaîne d’approvisionnement se produisent lorsqu’un malfaiteur compromet un package et l’utilise pour distribuer du code malveillant aux applications qui en dépendent. Cette tactique est devenue une menace croissante, d’autant plus que de plus en plus d’applications s’appuient de plus en plus sur des composants logiciels open source.

Les méthodes traditionnelles échouent

« Tous les membres de l’équipe Socket sont des mainteneurs open source. Ensemble, nous avons plus d’un milliard de téléchargements mensuels à nos noms », a déclaré Feross Aboukhadijeh, fondateur et PDG de Socket. La gorgée quotidienne. « Nous avons été témoins de la façon dont les attaques de la chaîne d’approvisionnement ont balayé les communautés open source et endommagé la confiance dans l’open source. »

Maintenir la sécurité des logiciels open source devient de plus en plus difficile, d’autant plus que chaque dépendance peut conduire à des dizaines ou des centaines de dépendances transitives.

L’industrie de la sécurité se concentre principalement sur les vulnérabilités qui ont déjà été découvertes. Il existe de nombreux scanners CVE qui surveillent les applications pour les vulnérabilités connues.

Mais les vulnérabilités peuvent prendre des semaines ou des mois à être découvertes, et leur émergence n’arrêtera pas les attaques de la chaîne d’approvisionnement, prévient Aboukhadijeh.

Une étude à partir de 2020 montre qu’en moyenne, un paquet malveillant est disponible pendant 209 jours avant d’être signalé publiquement. Un autre déclare que 20 % des logiciels malveillants « persistent dans les gestionnaires de packages pendant plus de 400 jours et ont plus de 1 000 téléchargements ».

« Dans la culture actuelle de développement rapide, une dépendance malveillante peut être mise à jour, fusionnée et exécutée en production en quelques jours, voire quelques heures », a déclaré Aboukhadijeh. « Ce n’est pas assez de temps pour créer un CVE et se frayer un chemin dans les outils d’analyse des vulnérabilités que les équipes utilisent. »

Une approche proactive

Prise a été conçu avec l’hypothèse que tous les packages open source peuvent être malveillants. Au lieu de rechercher des vulnérabilités connues, il essaie de détecter des signes de paquets compromis.

Selon Aboukhadijeh, Socket utilise « l’inspection approfondie des packages » pour caractériser le comportement d’un package open source. Il analyse à la fois le code du package et le comportement du responsable pour détecter les signes révélateurs d’une attaque de la chaîne d’approvisionnement.

Socket exécute une analyse statique sur un package JavaScript et toutes ses dépendances pour rechercher des marqueurs de risque tels que des scripts d’installation, du code obscurci, des chaînes à haute entropie ou l’utilisation d’API privilégiées telles que shell, réseau, système de fichiers, eval()et les variables d’environnement.

« Par exemple, si un nouveau correctif ou une version mineure d’un package ajoute un script d’installation et un nouveau code pour communiquer avec le réseau, c’est un énorme drapeau rouge et quelque chose que chaque équipe devrait vouloir savoir avant de mettre à jour vers la nouvelle version, », a déclaré Aboukhadijeh. « Rechercher uniquement ces deux signaux aurait arrêté un pourcentage énorme des attaques récentes de la chaîne d’approvisionnement npm. »

Socket dispose d’un total de 70 marqueurs de détection dans cinq catégories différentes : risque de la chaîne d’approvisionnement, qualité, maintenance, vulnérabilités connues et licence.

« Nous utilisons chacun de ces problèmes comme des signaux dans la formule de risque de la chaîne d’approvisionnement qui détermine si nous allons déclencher une alerte », a expliqué Aboukhadijeh.

Prise pour moi

L’outil est disponible en tant qu’application GitHub qui est gratuite pour l’open source et gratuite pour les référentiels privés pendant que Socket est en phase de test bêta. Aboukhadijeh dit qu’en deux mois depuis son lancement, il protège déjà des centaines d’organisations et des dizaines de milliers de référentiels.

À l’avenir, l’équipe ajoutera davantage de techniques de détection des risques ainsi que des fonctionnalités avancées de création de rapports. Ils ajouteront également la prise en charge de plusieurs langages (Java, Go, Python) et des intégrations avec d’autres plates-formes (GitLab, Bitbucket).