
Le projet open source Moq (prononcé « Mock ») a suscité de vives critiques pour avoir discrètement inclus une dépendance controversée dans sa dernière version.
Distribué sur le registre du logiciel NuGet, Moq enregistre plus de 100 000 téléchargements chaque jour et a été téléchargé plus de 476 millions de fois au cours de sa durée de vie.
La version 4.20.0 de Moq de cette semaine comprenait discrètement un autre projet, SponsorLink, qui a provoqué un tollé parmi les consommateurs de logiciels open source, qui ont comparé cette décision à un abus de confiance.
Apparemment un projet open-source, SponsorLink est en fait livré sur NuGet en tant que source fermée et contient des DLL obscurcies qui collectent des hachages d’adresses e-mail d’utilisateurs et les envoient au CDN de SponsorLink, ce qui soulève des problèmes de confidentialité.
Moq brise la confiance des utilisateurs
La semaine dernière, l’un des propriétaires de Moq, Daniel Cazzulino (kzu), qui gère également le projet SponsorLink, a ajouté SponsorLink aux versions 4.20.0 et supérieures de Moq.
Cette décision a envoyé des ondes de choc dans l’écosystème open source en grande partie pour deux raisons : bien que Cazzulino ait parfaitement le droit de modifier son projet Moq, il n’a pas informé la base d’utilisateurs avant de regrouper la dépendance, et les DLL SponsorLink contiennent du code obscurci, ce qui rend difficile à l’ingénierie inverse, et pas tout à fait « open source ».
« Il semble qu’à partir de la version 4.20, SponsorLink soit inclus », a rapporté Georg Dangl, développeur de logiciels basé en Allemagne, faisant référence à la version 4.20.0 de Moq.
« Il s’agit d’un projet à source fermée, fourni sous la forme d’une DLL avec un code obscurci, qui semble au moins analyser les données locales (git config ?) Et envoie l’e-mail haché du développeur actuel à un service cloud. »
La capacité d’analyse fait partie de l’outil d’analyse .NET qui s’exécute pendant le processus de construction et est difficile à désactiver, prévient Dangl.
« Je peux comprendre le raisonnement derrière cela, mais c’est honnêtement assez effrayant du point de vue de la vie privée. »
SponsorLink se décrit comme un moyen d’intégrer les sponsors GitHub dans vos bibliothèques afin que « les utilisateurs puissent être correctement liés à leur parrainage pour débloquer des fonctionnalités ou simplement obtenir la reconnaissance qu’ils méritent pour soutenir votre projet ».
L’utilisateur de GitHub Mike (d0pare) a décompilé les DLL et partagé une reconstruction approximative du code source. La bibliothèque, selon l’analyste, « engendre un processus git externe pour obtenir votre courrier électronique ».
Il calcule ensuite un hachage SHA-256 des adresses e-mail et l’envoie au CDN de SponsorLink : hxxps://cdn.devlooped[.]com/sponsorlink.

« Honnêtement, Microsoft devrait mettre sur liste noire ce package fonctionnant avec les fournisseurs NuGet », écrit Travis Taylor, développeur basé à Austin.
« On ne peut pas faire confiance à l’auteur. C’était une décision incroyablement stupide qui vient de créer une tonne de travail pour beaucoup de gens. »
Le développeur défend le changement
Dans un commentaire, Cazzulino a expliqué ses raisons, admettant que la version « 4.20 » était « un coup pour que les gens ne la prennent pas trop au sérieux ».
« Je teste les eaux avec SponsorLink depuis un moment maintenant (~ 6 mois depuis l’annonce) », déclare Cazzulino.
« Il a été difficile d’obtenir de vrais retours, donc même si les commentaires sont « un peu » durs, j’apprécie vraiment ! »
Cazzulino a également mis à jour le README du projet SponsorLink avec une longue section « Considérations sur la confidentialité » ci-dessous qui précise qu’aucune adresse e-mail réelle, juste leurs hachages, n’est collectée. La mise à jour est arrivée il y a quelques heures, après l’apparition du contrecoup.
Nous craignions que SponsorLink ne collecte votre e-mail sans votre consentement explicite. Ceci est incorrect et peut facilement être vérifié en exécutant Fiddler pour voir quel type de trafic se produit.
Plus précisément, l’e-mail réel n’est jamais envoyé lors de la vérification du parrainage. L’e-mail sur votre ordinateur local est haché avec SHA256, puis encodé en Base62. La chaîne opaque résultante (qui ne peut jamais révéler l’e-mail d’origine) est la seule chose utilisée.
Le seul moment où SponsorLink obtient réellement votre adresse e-mail (pour effectuer l’association back-end de cette chaîne opaque avec votre e-mail réel et l’utilisateur GH pour lier votre parrainage), c’est après avoir installé l’application SponsorLink GitHub et lui avoir donné l’autorisation explicite de le faire. .
De plus, dès que vous suspendez ou désinstallez l’application, nous supprimons tous les enregistrements associés à votre compte et à vos e-mails.
« L’avis semble être une réponse réactive au contrecoup en ligne plutôt que le projet étant franc sur les données récoltées », a déclaré Ankita Lamba, chercheuse principale en sécurité chez Sonatype à Breachtrace après avoir repéré la mise à jour.
Dans le passé, Cazzulino a également défendu sa décision de garder la source fermée et obscurcie de SponsorLink afin d’empêcher que certaines de ses vérifications ne soient contournées. Selon ses mots, les caractéristiques opaques de la bibliothèque sont « par conception ».
Un problème potentiel de confidentialité
L’inclusion discrète de SponsorLink dans des projets, tels que moq, est une question de confidentialité d’un point de vue éthique et juridique.
Vient d’abord la question d’une dépendance obscure et fermée (SponsorLink) distribuée via des canaux open source et incluse dans des projets OSS populaires, tels que GitInfo, qui est également créé par Cazzulino et téléchargé des millions de fois.
La collecte des hachages d’adresses e-mail peut ne pas être totalement anonyme non plus.
En théorie du moins, le développeur de SponsorLink pourrait comparer les hachages récoltés à une base de données d’adresses e-mail divulguées quelque part et identifier les utilisateurs.
« Je considère votre hachage plus comme une sécurité par l’obscurité. Même le courrier haché ne devrait être envoyé qu’après consentement », déclare Michał Rosenbaum.
« Je dirais que de sérieuses inquiétudes ont maintenant été soulevées. La grande majorité des utilisateurs ne savent même pas que ce changement a été effectué et aurait un problème », déclare un autre ingénieur logiciel, Kevin Walter.
« La confiance avec moq est maintenant rompue, tout comme le RGPD. C’est pour le moins sournois. Soyez l’un des bons gars », a exhorté Walter Cazzulino à être plus transparent en ce qui concerne l’obscur package SponsorLink.
En réaction, plusieurs développeurs ont soit menacé de cesser d’utiliser Moq [1, 2] au profit d’alternatives, et de créer des outils qui détecteraient et bloqueraient tous les projets qui exécutent SponsorLink.
Certains sont allés plus loin, suggérant qu’ils boycotteraient les projets qui utilisent SponsorLink ou même signaleraient « SponsorLink » comme malware au registre NuGet [1, 2].
Breachtrace a contacté le créateur de SponsorLink, Cazzulino, pour un commentaire avant la publication.