Mainteneurs, ceci est pour vous. Nous nous associons à Drydock afin que les mainteneurs puissent voir exactement ce qu'il y a à l'intérieur d'un paquet avant de l'approuver, détectant les malwares avant leur publication au lieu de les divulguer après. Drydock vous permet de lire les octets réels d'une version en staging avant sa mise en ligne, de sorte que les mauvaises versions sont détectées lors de l'approbation plutôt que lors d'un post-mortem. Pour les mainteneurs npm et PyPI, Drydock est disponible gratuitement.
Empêcher la publication de malwares
La dernière année a été marquée par de nombreuses attaques de malwares sur les packages open source. Nous nous sommes habitués à voir des alertes et des tweets annonçant une nouvelle « ALERTE ! Attaque majeure de malware ! » Les améliorations en matière de détection et de signalement sont importantes, mais au moment où nous devons divulguer l'information, il est déjà trop tard. Les mainteneurs de packages méritent un soutien accru plus tôt dans ce processus, afin de les aider à détecter et à prévenir les problèmes avant qu'ils ne se propagent et que tout le monde ne panique et ne tente de limiter les dégâts.
L'annonce récente de npm concernant la publication en staging est un pas dans cette direction. La mise à jour introduit une file d'attente de staging, où toutes les versions de packages attendent qu'un mainteneur avec 2FA approuve manuellement la publication. Cependant, bien que cela offre une opportunité de révision, le mainteneur ne peut pas voir le contenu du package préparé. Il peut visualiser le numéro de version, mais pas les octets à l'intérieur du package ni ce qui, le cas échéant, a changé par rapport à l'état actuel du dépôt.
Aikido s'engage à aider les mainteneurs à arrêter les attaques de malwares avant qu'elles ne se produisent. C'est pourquoi nous nous associons à Drydock pour rendre la publication de paquets plus sûre et la publication en staging plus utile. Si vous maintenez un paquet npm ou PyPI, Drydock vous offre un moyen gratuit de voir ce qu'il y a réellement dans une version avant sa publication. Drydock analyse les paquets npm en staging pour vous montrer exactement ce qui a changé dans les octets avant que vous n'approuviez, afin que le mainteneur qui approuve puisse enfin voir l'intérieur du paquet préparé.
Pour PyPI, qui ne dispose pas de publication en staging, Drydock effectue le même examen directement dans votre pipeline de publication. Le même chemin s'applique aux packages npm qui sont publiés sans staging. Le support pour des registres supplémentaires sera également bientôt disponible.
Comment fonctionne Drydock
Lorsqu'une nouvelle version en staging apparaît, Drydock la récupère, télécharge l'archive tarball exacte dans un sandbox éphémère, effectue un diff avec la dernière version publiée et vous montre le rapport sur son tableau de bord. Vous voyez chaque changement, ceux pertinents pour la sécurité étant signalés et classés par gravité. Ces signalements détectent ce sur quoi les malwares s'appuient, comme un nouveau script de cycle de vie preinstall ou postinstall, des fichiers qui n'étaient pas présents auparavant, du code qui lance un processus ou contacte le réseau, ou un binaire ajouté. Chaque constatation est épinglée à la ligne qui l'a introduite, de sorte que l'examen se présente comme une courte liste que vous pouvez parcourir en quelques secondes plutôt qu'un mur de code source. Vous lisez les constatations, puis approuvez l'étape de publication dans npm avec votre propre 2FA.
Le flux ci-dessus suppose une publication npm en staging. Pour PyPI, ou pour un package npm qui publie sans staging, Drydock fonctionne comme une passerelle d'environnement GitHub Actions. La version est mise en pause dans votre pipeline avant d'atteindre le registre. Drydock examine l'artefact construit et publie le même diff et les mêmes constatations classées par gravité, et un mainteneur approuve ou rejette dans Drydock avant que quoi que ce soit ne soit rendu public.
Drydock ne publie jamais de lui-même, vous n'ajoutez donc aucun point de défaillance supplémentaire dans le processus de publication. Drydock utilise un jeton npm en lecture seule, juste suffisant pour voir les publications en staging. Il est limité à la lecture des listes de fichiers et du texte uniquement, il n'exécute donc jamais le contenu du package. Et dans l'esprit de maintenir l'intervention humaine, un humain prend la décision à chaque fois.
Rompre le cycle des malwares
Lorsque npm et d'autres gestionnaires de packages ont été lancés, la publication instantanée était une fonctionnalité pour les écosystèmes qui pouvaient croître rapidement car ils faisaient confiance à leurs membres. Mais aujourd'hui, les attaquants exploitent la rapidité et la facilité de publication pour mener des attaques de malwares.
La publication en staging rompt ce schéma en retenant la version avant sa mise en ligne. Drydock rend cette rétention significative, en montrant au mainteneur exactement ce qui a changé tant qu'il est encore temps de refuser. La détection a lieu avant le premier téléchargement, au lieu d'un post-mortem après que les dégâts soient faits.
C'est le monde que nous voulons pour les mainteneurs. Moins de réveils avec des divulgations de malwares, plus de détection et d'arrêt du problème par eux-mêmes.
La configuration est simple et ne coûte rien. Activez la publication en staging de npm pour votre package, connectez Drydock à votre organisation avec un jeton en lecture seule, et il commencera à examiner automatiquement les versions en staging. Pour la configuration GitHub Actions, il vous suffit de lier l'application GitHub et l'environnement. Découvrez Drydock et plus d'informations sur la façon de démarrer sur leur site.

