Les bibliothèques logicielles open source sont des cibles fréquentes pour les hackers, qui les considèrent comme une voie intéressante pour dérober des identifiants et diffuser des malwares.
Des centaines de milliers de projets logiciels dépendent de ces packages open source – et chacune de ces dépendances possède ses propres dépendances, un réseau complexe que certains appellent « l’enfer des dépendances » – les hackers savent donc que toute nouvelle version qu’ils parviendraient à compromettre serait téléchargée par d’innombrables développeurs lorsqu’ils lancent npm, composer, pip ou d’autres mises à jour.
Ces attaques de la chaîne d’approvisionnement logicielle sont assez difficiles à détecter et à atténuer, car la chaîne d’approvisionnement logicielle est profondément intégrée au cycle de vie des applications et des sites web.
Au cours d’une semaine marquée par certaines des attaques de la chaîne d’approvisionnement les plus étranges jamais observées – nous y reviendrons dans un instant –, une nouvelle initiative de sécurité open source a été lancée pour donner aux développeurs un certain contrôle sur ces bibliothèques et dépendances tentaculaires.
À lire également : Les meilleurs outils de débogage et de sécurité du code
Pyrsia : une nouvelle ère pour la sécurité open source ?
Les développeurs de la plateforme DevOps JFrog ont annoncé cette semaine la création du projet Pyrsia, un réseau de packages « conçu pour être entièrement décentralisé afin de fournir aux développeurs un réseau de packages fiable et sécurisé, assurant une traçabilité complète de tous les packages et artefacts dont ils dépendent ».
L’équipe de JFrog a collaboré avec Docker, DeployHub, Futurewei, Huawei et Oracle pour créer Pyrsia. L’objectif principal de la nouvelle plateforme est de disposer d’« informations détaillées et transparentes sur l’ensemble de la chaîne d’approvisionnement » afin de la rendre plus fiable.
Grâce à la validation par Pyrsia de la source et de la sécurité des packages logiciels open source, JFrog affirme que les développeurs « peuvent utiliser en toute confiance des logiciels open source en sachant que leurs composants n’ont pas été compromis, sans avoir à concevoir, maintenir ou exploiter des processus complexes pour gérer leurs dépendances de manière sécurisée ».
Le projet espère contribuer à prévenir les attaques de la chaîne d’approvisionnement grâce aux commits signés, à un historique immuable, à « l’intégrité vérifiable des packages et des sources » ainsi qu’à des standards ouverts. Les développeurs pourront utiliser des signatures numériques pour « recevoir une chaîne de preuves immuable pour leur code, afin d’avoir l’assurance de connaître la source exacte de leur package ».
Pyrsia est déjà disponible si vous souhaitez le tester : il suffit de saisir la commande suivante dans le terminal, d’après un tutoriel :
curl -sS https://pyrsia.io/install.sh | shIl existe également un dépôt GitHub si vous souhaitez découvrir la technologie qui sous-tend la plateforme. Les développeurs pourront indiquer la chaîne de traçabilité de leurs logiciels grâce à la technologie de blockchain.
Il semble s’agir de la première initiative du genre à sécuriser les réseaux de packages à l’échelle mondiale et à fournir aux développeurs une infrastructure décentralisée pour valider leurs builds. L’équipe de Pyrsia se concentre sur l’intégration de l’outil dans les pipelines et workflows existants :
La plateforme prend également en charge les gestionnaires de packages populaires, de sorte que les développeurs n’ont pas à modifier outre mesure leurs pipelines CI/CD.
Il convient de noter que le projet n’en est qu’à ses débuts : faites donc preuve de prudence et n’hésitez pas à faire part de vos retours à l’équipe de Pyrsia. Le projet présente néanmoins un fort potentiel pour améliorer considérablement la chaîne d’approvisionnement logicielle actuelle.
À lire également : Comment les hackers compromettent la chaîne d’approvisionnement logicielle
PyPI et PHPass touchés par les dernières attaques
Cette semaine, un package CTX populaire, qui enregistre environ 20 000 téléchargements par semaine sur PyPI, a été compromis afin de dérober les variables d’environnement d’un développeur, qui peuvent contenir des identifiants tels que les clés Amazon AWS.
Le package phpass, une version portable du framework PHPass largement utilisé (2,5 millions de téléchargements), a lui aussi été attaqué. La version malveillante était programmée pour exfiltrer des identifiants Amazon, probablement au profit du même acteur, puisque le domaine de destination et la logique du code étaient identiques.
Les deux bibliothèques ont été désactivées par les plateformes d’hébergement, mais le mal est fait. Les développeurs doivent vérifier leurs projets pour déterminer s’ils utilisent les versions détournées et rechercher les IoC (indicateurs de compromission).
Un piratage inhabituel
Le chercheur Yunus Aydin, connu sous le pseudonyme « Sockpuppet », a revendiqué l’attaque et déclaré que son intention était de démontrer le danger des vulnérabilités qu’il avait exploitées.
Une telle approche de grey hat est inhabituelle pour un chercheur en sécurité, mais dans sa publication, il décrit en détail comment il a pris le contrôle de packages populaires sur différentes plateformes telles que PyPI, Composer (PHP) ou Cargo (Rust).
Selon Aydin, le mainteneur du package CTX utilisait une fausse adresse e-mail sur PyPI, « figlief@figlief.com » ; il a donc enregistré le faux domaine pour rendre cette adresse utilisable, réinitialisé le mot de passe et pris le contrôle du package :
Le chercheur a déclaré avoir utilisé d’autres techniques connues pour compromettre des plateformes telles que crates.io (Rust) ou Packagist (PHP). Il a par exemple créé des profils GitHub portant le même nom que des packages existants afin de tirer parti de la fonctionnalité « se connecter avec votre compte GitHub » et de prendre le contrôle des packages.
Sa publication mérite d’être lue, mais soyez bien sûr prudent avec les liens.
Comment se protéger contre le détournement de packages
Si vous êtes responsable d’un package, il vous est vivement recommandé d’appliquer les recommandations de la plateforme afin d’atténuer ou de prévenir les attaques visant votre compte.
Toutes les plateformes et tous les langages de programmation sont susceptibles d’être ciblés. Le Rust Security Response WG a publié un avis de sécurité concernant le crate malveillant rustdecimal, un package dont le nom est « intentionnellement similaire à celui du crate populaire [`rust_decimal`][2], dans l’espoir que les victimes potentielles fassent une faute d’orthographe (une attaque appelée “typosquatting”). »
De fait, les détournements de domaines et les techniques de typosquatting sont des vecteurs de compromission connus. C’est pourquoi les plateformes analysent régulièrement les dépôts afin de détecter certains schémas et de geler (ou supprimer) les comptes suspects.
L’activation de l’authentification à deux facteurs ou multifacteur peut également bloquer les hackers qui auraient pu dérober vos identifiants.
Si vous êtes développeur, mieux vaut avoir une politique stricte concernant les fournisseurs et vous assurer qu’aucune mise à jour ne s’exécute silencieusement, ce qui est malheureusement assez courant avec les gestionnaires de packages.
La chaîne d’approvisionnement logicielle devient de plus en plus complexe, car les interdépendances entre les packages et les autres composants réutilisables se multiplient. Pyrsia offre une lueur d’espoir à cet égard, mais les bonnes pratiques restent essentielles.
Pour aller plus loin :
Les meilleurs outils DevSecOps
Liste des fournisseurs de solutions de sécurité applicative
Les meilleurs outils de gestion des vulnérabilités
Fuzzing neuronal : une méthode plus rapide pour tester la sécurité des logiciels





