Les chercheurs ont découvert un chevauchement important des infrastructures entre l’attaque contre trois caisses Rust et les récentes campagnes liées à la Corée du Nord.
Des versions malveillantes de trois packages Rust, dont le arrayref largement utilisé, ont été publiées dans le registre crates.io le 20 août, contenant une porte dérobée qui s’exécutait automatiquement lors de la compilation des projets concernés.
Les chercheurs en sécurité de Wiz ont déclaré que l’attaque partage également l’infrastructure avec les récentes campagnes de chaîne d’approvisionnement attribuées à des acteurs menaçants nord-coréens.
Les versions compromises étaient « arrayref@0.3.10 », « internment@0.8.7 » et « append-only-vec@0.1.9 ». Tous les trois ont introduit une dépendance à « proc-macro1 », un typosquat de la caisse légitime et largement téléchargée « proc-macro2 ».
La dépendance malveillante contenait un script de construction qui téléchargeait et exécutait une charge utile de deuxième étape lors de la compilation, ont déclaré les chercheurs de Wiz dans un article de blog. « La charge utile de la deuxième étape est sélectionnée en fonction de la plate-forme, avec la prise en charge des versions x86_64 de Linux, Windows et macOS, en plus de macOS aarch64 », ont-ils ajouté.
Une analyse de StepSecurity a révélé que arrayref comptait 245 millions de téléchargements de tous les temps, dont 53,7 millions au cours des 90 derniers jours. L’équipe de cybersécurité a estimé les fenêtres d’exposition par caisse à 86, 90 et 107 minutes, respectivement, avant qu’elles ne soient toutes supprimées, ainsi que les autres caisses associées.
L’attaque a été signalée pour la première fois à RustSec et security@rust-lang.org par le chercheur jhobern, mais seule la compromission arrayref était connue à l’époque.
Le code malveillant s’est exécuté au moment de la construction
L’attaque n’a pas obligé les développeurs à exécuter du code suspect ni même à appeler une fonction depuis arrayref. « Comme les scripts de build Rust s’exécutent au moment de la compilation, il suffit de construire n’importe quel projet dont le fichier de verrouillage résout arrayref 0.3.10 pour faire exploser la charge utile. Le code de la caisse n’a jamais besoin d’être appelé », ont déclaré les chercheurs de StepSecurity.
Lorsque le package concerné a été construit, le fichier de configuration « Cargo.toml » a ajouté proc-macro1 comme dépendance. Cette dépendance a ensuite reconstruit une URL de commande et de contrôle (C2) à partir de fragments Base64, désactivé la validation du certificat TLS, téléchargé une charge utile spécifique à la plate-forme et l’a exécutée dans le cadre du processus de construction normal.
Wiz a trouvé la charge utile collectant des informations sur l’hôte, le nom d’utilisateur et le système d’exploitation, énumérant les applications installées et inspectant les profils Chrome, Brave et Edge pour les informations de connexion et d’extension enregistrées.
Il pourrait également établir la persistance via les clés d’exécution du registre Windows, les services utilisateur macOS LaunchAgents ou Linux systemd, et accepter des commandes pour se reconfigurer, terminer ou télécharger et exécuter des scripts.
La charge utile prenait en charge Linux, Windows et macOS, y compris les Mac Apple Silicon. Il comportait un mécanisme de génération de domaine de secours qui pouvait générer 10 domaines .com tous les cinq jours si le C2 principal devenait indisponible.
Liens vers les campagnes nord-coréennes
Wiz a déclaré que l’infrastructure de la charge utile « chevauche considérablement » les opérations attribuées aux récents acteurs de la RPDC.
Le lien le plus fort est le chemin de requête C2, indique-t-il. La porte dérobée communique avec un point de terminaison également utilisé dans la campagne Mastra, que Microsoft a attribué à Sapphire Sleet, lié à la RPDC. L’infrastructure IP utilisée dans la campagne arrayref partage également un émetteur de certificat SSL avec l’infrastructure associée à cette opération.
Un autre lien a été trouvé avec la campagne de chaîne d’approvisionnement Axios npm. Wiz a déclaré qu’une victime a signalé un trafic C2 impliquant une adresse IP qui figurait également dans l’analyse de Google Cloud Threat Intelligence de l’attaque Axios, que Mandiant a liée à la Corée du Nord.
Wiz a recommandé aux organisations de rechercher dans les fichiers « Cargo.lock » et les caches Cargo locaux les versions compromises et les packages contrôlés par les attaquants. Il indique également que tout poste de travail de développeur ou exécuteur CI qui a réellement construit un projet concerné doit être traité comme compromis, avec des informations d’identification, des jetons et des clés accessibles en rotation et des artefacts reconstruits à partir de sources propres.



