Google a lancé le projet OSS Rebuild, conçu pour détecter les modifications cachées dans les paquets prêts à l'emploi publiés dans les dépôts. OSS Rebuild repose sur le concept de builds reproductibles et consiste à vérifier la conformité d'un paquet placé dans le dépôt avec un paquet obtenu par reconstruction à partir du code source de référence correspondant à la version déclarée du paquet. Le code de la boîte à outils est écrit en Go et distribué sous licence Apache 2.0.
Actuellement, OSS Rebuild prend en charge la vérification des paquets des dépôts NPM (JavaScript/TypeScript), PyPI (Python) et Crates.io (Rust). Le nombre de dépôts pris en charge devrait être étendu ultérieurement. En pratique, la boîte à outils permet d'identifier les variantes d'attaques de la chaîne logistique, lors desquelles, après la compromission des comptes des mainteneurs ou un sabotage au sein du projet, une mise à jour malveillante est publiée dans le dépôt. Dans le même temps, le code du dépôt d'origine du projet principal reste correct et les modifications malveillantes ne sont appliquées qu'aux paquets finalisés.
Le système génère automatiquement un scénario de build reproductible du package sélectionné, si possible, à l'aide d'heuristiques et de paramètres de sélection permettant d'identifier les artefacts fournis dans le package. S'il est impossible de reproduire automatiquement un package placé dans le dépôt, il est possible d'ajouter manuellement une spécification de build. Une fois le package reproduit, l'outil OSS Rebuild enregistre une description du processus de build pour vérification ultérieure des nouvelles versions du package. De plus, les informations sont publiées pour vérification via le framework SLSA.
Après vérification d'une version de paquet spécifique, des données d'attestation sont générées et peuvent être utilisées par d'autres pour évaluer des paquets déjà vérifiés. La vérification peut être effectuée via un utilitaire en ligne de commande ou en consultant un hachage stocké dans un espace de stockage cloud distinct. L'infrastructure de vérification des paquets peut être déployée en interne. serveurVous pouvez également utiliser les informations relatives aux vérifications effectuées par Google sur plusieurs milliers de colis.
Voici quelques exemples de méthodes d'attaque différentes contre lesquelles OSS Rebuild pourrait protéger : l'ajout d'une porte dérobée à XZ, l'injection de code malveillant dans le client JavaScript officiel de la cryptomonnaie Solana et la substitution de modifications via le gestionnaire d'actions changed-files :
- Dans le cas du projet XZ, le code du dépôt ne contenait aucune modification suspecte, et les composants malveillants à l'origine de la porte dérobée étaient intégrés aux fichiers utilisés dans l'ensemble de tests pour vérifier le bon fonctionnement du décompresseur XZ. La porte dérobée a été activée au niveau du système de compilation, et le code source XZ correspondait à celui du dépôt. Les macros m4 de la boîte à outils Automake ayant activé la porte dérobée étaient incluses uniquement dans l'archive finale avec le code et non dans le dépôt. Pour détecter de telles attaques, OSS Rebuild utilise une analyse dynamique des artefacts fournis dans le paquet, des chemins d'exécution et des opérations suspectes.
- L'insertion de modifications malveillantes dans la bibliothèque @solana/web3.js est due à la compromission du compte du mainteneur par ingénierie sociale et hameçonnage. Une nouvelle version, incluant des modifications malveillantes, a été publiée dans le dépôt NPM. Cette version n'a pas été créée dans le dépôt Git du projet, et les modifications malveillantes n'étaient présentes que dans le paquet résultant. Dans ce cas, la défense consiste à identifier le code du paquet manquant dans le dépôt principal.
- Une compromission du référentiel de gestion des fichiers modifiés a permis de mener une attaque contre des projets utilisant des fichiers modifiés pour suivre les modifications de fichiers et de répertoires dans une infrastructure d'intégration continue basée sur GitHub Actions. Pour se protéger contre la substitution de modifications après la compromission d'un environnement de build, OSS Rebuild utilise le suivi des modifications et des activités suspectes dans des environnements de build standardisés et simplifiés.
Source: opennet.ru
