Gérer un registre open source, c'est éteindre des incendies. Un autre compte de mainteneur est compromis, un autre package malveillant. Le retrait est toujours en retard d'un téléchargement. Le travail ne s'arrête jamais, et la plupart des registres, gérés par de petites équipes avec peu de moyens, sont souvent trop sollicités pour faire plus que simplement suivre le rythme. Mais dernièrement, nous avons constaté des changements plus positifs dans le monde de l'open source, avec des écosystèmes qui apportent des modifications structurelles qui empêchent complètement un certain type d'attaque de fonctionner.
La petite équipe qui maintient Packagist.org et Composer, le registre et gestionnaire de packages derrière le monde PHP, a effectué un travail de sécurité préventif délibéré et apporté des améliorations significatives. Aikido soutient grandement cet effort. Le flux Intel d'Aikido alimente le blocage des malwares dans Composer pour les téléchargements. Il est activé par défaut pour Composer 2.10 et versions ultérieures pour tous. Ceci s'ajoute à une série d'autres changements que Packagist a apportés et continue d'apporter, chacun visant à mettre fin à des catégories entières d'attaques au lieu de courir après des packages individuels.
Nous commençons à observer cette tendance d'améliorations à travers les registres de packages, et nous sommes ravis de pouvoir soutenir ces initiatives. Les développeurs PHP peuvent désormais être plus sereins, sachant qu'il existe davantage de garde-fous pour les empêcher d'installer accidentellement des malwares.
Blocage des malwares dans Composer
Le gain le plus facile est d'empêcher les utilisateurs d'installer une version de package déjà connue comme malveillante. Grâce à Aikido Intel, Composer sait désormais quelles versions ont été signalées et ne les installera pas.
Lorsqu'Aikido signale une version de package malveillante, ce signalement est intégré aux métadonnées du package téléchargé par Composer. Le framework de politique de dépendances de Composer 2.10 retire la version signalée du pool de résolution, ainsi `composer update`, `composer require` et `composer create-project` ne la sélectionneront pas. La vérification la plus importante est celle sur `composer install`, car une version signalée après l'écriture de votre lockfile (fichier de verrouillage) échoue lors de la prochaine installation. Si, pour une raison quelconque, un utilisateur souhaite toujours télécharger un package bloqué, il peut le remplacer manuellement.
Cette intégration fonctionne parce qu'elle est :
- Ouvert : Le flux qu'Aikido fournit à Packagist est sous licence CC-BY, de sorte que la protection n'est pas liée à un contrat à six chiffres, et la porte reste ouverte pour que d'autres fournisseurs de données puissent s'intégrer. Une sécurité que seuls les mieux financés peuvent se permettre ne nous protège pas.
- Activé par défaut : Une protection qui nécessite une adhésion active des utilisateurs ne protège presque personne (car il est difficile d'obtenir l'adhésion des utilisateurs). Les configurations par défaut sont le cœur de la sécurité de l'écosystème, et celle de la version 2.10 ne demande rien aux utilisateurs pour qu'ils en bénéficient.
- Suffisamment rapide : Les versions malveillantes sont généralement retirées en quelques heures, donc un flux qui les signale en quelques minutes protège les utilisateurs dans la fenêtre entre la détection et la suppression. Étant donné que le blocage ne fonctionne que lorsqu'une menace est détectée, une détection lente ne serait pas d'une grande aide.
- Automatisé : Étant donné que le paquet malveillant est bloqué dès qu'Aikido le détecte, il n'y a pas de délai supplémentaire d'attente pour qu'une personne mette manuellement le paquet sur liste noire ou le supprime, les utilisateurs sont donc protégés plus rapidement.
L'intégration de la détection d'Aikido dans chaque installation n'est qu'une des améliorations que Packagist a récemment déployées.
Fermer les portes plutôt que de colmater les brèches
Ensuite, le re-tagging. Publier sur Packagist a toujours signifié pousser un tag Git, et le registre récupère ce vers quoi ce tag pointe. Ce système permettait aux attaquants qui détournaient un compte de confiance de re-tagger une version publiée et de la faire pointer vers du code malveillant, de sorte que ce numéro de version contenait désormais une charge utile (ce que nous avons vu lors de la récente attaque sur Laravel-Lang). La réponse de Packagist, l'immutabilité des versions stables, signifie qu'une version stable publiée ne peut plus être réécrite. Cela met fin aux attaques de re-tagging dans leur ensemble. GitHub a l'équivalent, mais l'a rendu optionnel. Packagist l'a rendu obligatoire.
Enfin, essayer d'inciter les gens à mettre à jour leurs logiciels est une tâche ardue. Un blocage par défaut n'aide que les personnes utilisant une version actuelle de Composer, et beaucoup ne le font pas. Une image CI ou un agent IA exécute souvent une version datant de plusieurs années, donc Private Packagist peut exiger une version actuelle de Composer pour se connecter. Il refuse également de servir les fichiers d'une version signalée à tout client, ancien ou nouveau.
Packagist.org n'a pas encore terminé, et plusieurs améliorations de sécurité sont à venir. Ils prévoient un âge minimal de publication, ce qui atténuerait les attaques qui reposent sur une courte fenêtre avant que la détection ne rattrape son retard (en attendant, vous pouvez obtenir une protection similaire avec Aikido Safe Chain, également gratuit). Ils créent également une propriété organisationnelle, qui permettra la MFA obligatoire, ainsi que des versions étagées, que npm a récemment déployées.
Vers des registres de paquets plus sûrs
Ce n'est pas seulement une histoire PHP. Comme nous l'avons mentionné, npm évolue de la même manière avec la publication étagée, mais aussi en désactivant les scripts d'installation automatiques. PyPI a rendu la 2FA obligatoire et a construit un système de quarantaine, et crates.io et RubyGems ont adopté la publication de confiance via une conception OpenSSF partagée. Les écosystèmes évoluent dans la bonne direction. Nous voulons en voir beaucoup plus, plus rapidement, et nous continuons à soutenir là où nous le pouvons.
Êtes-vous un développeur PHP ? Les clients Composer antérieurs à la version 2.10 ne disposent pas de cette fonctionnalité, alors assurez-vous de mettre à jour dès aujourd'hui si ce n'est pas déjà fait. Vous n'utilisez pas PHP ? Aikido Safe Chain est un outil open-source qui vous empêche également d'installer de nouveaux paquets ou des paquets malveillants avant qu'ils ne soient installés sur votre appareil.
Quel que soit l'écosystème dont vous dépendez, vous pouvez consulter ce qu'Aikido Intel signale sur le web. Le flux est public et gratuit sur intel.aikido.dev.

