Les développeurs du langage Rust ont averti de la découverte dans le dépÎt crates.io d'un paquet rustdecimal contenant du code malveillant. Ce paquet était basé sur le paquet légitime rust_decimal et tirait parti de la similarité de nom (typosquatting) en comptant sur le fait que l'utilisateur ne remarquerait pas l'absence de symbole de soulignement lors de la recherche ou de la sélection du module dans la liste.
Il est à noter que cette stratégie s'est révélée efficace, et en termes de téléchargements, le paquet fictif a légÚrement ralenti par rapport à l'original (~111 000 téléchargements de rustdecimal 1.23.1 contre 113 000 de rust_decimal 1.23.1). La plupart des téléchargements provenaient d'un clone inoffensif ne contenant pas de code malveillant. Des modifications malveillantes ont été ajoutées le 25 mars dans la version rustdecimal 1.23.5, qui, avant le signalement du problÚme et le blocage du paquet, avait été téléchargée environ 500 fois (on suppose que la majorité des téléchargements de la version malveillante ont été effectués par des bots) et n'a pas été utilisée dans les dépendances d'autres paquets présents dans le dépÎt (il n'est pas exclu que le paquet malveillant ait été dans les dépendances d'applications finales).
Les modifications malveillantes consistaient en l'ajout d'une nouvelle fonction Decimal::new, dont l'implémentation contenait un code obfusqué pour télécharger depuis un serveur externe de serveurs et exécuter un fichier exécutable. Lors de l'appel de cette fonction, une vérification de la variable d'environnement GITLAB_CI était effectuée ; si elle était configurée, un fichier /tmp/git-updater.bin était téléchargé depuis un serveur externe. Le gestionnaire malveillant téléchargé était compatible avec Linux et macOS (la plateforme Windows n'était pas supportée).
On supposait que la fonction malveillante serait exécutée lors des tests sur des systÚmes d'intégration continue. AprÚs le blocage de rustdecimal, les administrateurs de crates.io ont analysé le contenu du dépÎt à la recherche d'inserts malveillants similaires, mais n'ont trouvé aucun problÚme dans d'autres paquets. Il est recommandé aux propriétaires de systÚmes d'intégration continue basés sur GitLab de s'assurer que les projets testés n'utilisent pas le paquet rustdecimal dans leurs dépendances. serveurs Les développeurs du langage Rust ont averti de la découverte dans le dépÎt crates.io d'un paquet rustdecimal contenant du code malveillant.
Source : opennet.ru
