.NET-Entwickler aufgepasst: Moq-NuGet-Paket schleust E-Mail-Adressen aus Git ab
9. August 2023
0 Min. LesezeitAnmerkung der Redaktion: 10. August 2023
Dieser Blogbeitrag wurde aktualisiert und enthält nun neue Informationen zu dieser aktuellen Situation. Bleiben Sie auf dem Laufenden – weitere Updates folgen.
Kurzfassung
Am 8. August 2023 wurde die .NET-Community darüber informiert, dass die Testbibliothek Moq E-Mail-Adressen von Entwicklern von deren Entwicklungsrechnern abgreift und an Server Dritter übermittelt.
Snyk hat bereits eine Sicherheitsempfehlung veröffentlicht und benachrichtigt Entwickler, die ihre .NET-Projekte mit Snyk scannen und überwachen.
Starten Sie mit Capture-the-Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Challenges lösen.
Aktualisierungen vom 10. August 2023:
Das NuGet-Paket Devlooped.SponsorLink wurde dem NuGet-Registry-Team gemeldet.
Es wurden mehrere Moq-Forks erstellt. Gehen Sie mit Vorsicht vor:
Wir empfehlen Ihnen, andere Pakete desselben Maintainer-Kontos zu prüfen.
Über die Moq-Testbibliothek für .NET
Moq ist eine Testbibliothek für .NET-Entwickler und bezeichnet sich selbst als „die beliebteste und benutzerfreundlichste Mocking-Bibliothek für .NET“. Sie hat sich in der Community tatsächlich viel Unterstützung verdient: Seit ihrer Veröffentlichung wurde sie insgesamt beeindruckende 475 Millionen Mal heruntergeladen und erhielt 5,3 Tsd. Sterne auf GitHub.
Was ist passiert? Moq greift E-Mail-Adressen von Entwicklern ab
Ab Version 4.20.0 führte der Maintainer von Moq ein neues Verhalten zur Build-Zeit ein, das den Befehl `git config` ausführt, um die konfigurierte E-Mail-Adresse im Git-Benutzerprofil des Entwicklers zu finden und auszulesen.
Nachdem die E-Mail-Adresse des Entwicklers ausgelesen wurde, wird eine HTTP-HEAD-Anfrage an einen Azure-Blob-Storage-Dienst gesendet. Die E-Mail-Adresse ist dabei in der URL gehasht. Dieser Remote-Endpunkt interagiert mit einem SponsorLink-Dienst eines Drittanbieters, um festzustellen, ob der Entwickler dessen GitHub-App installiert hat.
Der oben beschriebene Vorgang soll zwar feststellen, ob der Entwickler das Moq-Projekt aktiv unterstützt. Dabei werden jedoch personenbezogene Daten (PII) in Form der E-Mail-Adresse ausdrücklich ausgeschleust und an einen Endpunkt eines Drittanbieters weitergegeben.
Dieser Vorfall ist Teil eines Experiments zur Finanzierung der Arbeit des Maintainers, das seit Januar 2023 auch in anderen von ihm betreuten Open-Source-Projekten durchgeführt wird.
Bedenken zur Supply-Chain-Sicherheit und Paketintegrität von Moq
Der Fall Moq ist ein weiteres Beispiel für Bedenken hinsichtlich der Supply-Chain-Sicherheit von Open-Source-Bibliotheken und deren weitreichende Folgen. Hintergrund ist die rasant zunehmende Nutzung von Open Source in Unternehmen und Entwickler-Ökosystemen.
Anders als bei Sicherheitslücken macht dieser NuGet-Paketvorfall deutlich, dass Open-Source-Maintainer eine unverhältnismäßig große Verantwortung tragen, wenn sie für ihre Arbeit Sponsoren, Finanzierung und Anerkennung suchen.
Moq benachrichtigte die Entwickler, die die Bibliothek nutzten, möglicherweise in guter Absicht mit einer „Vielen Dank für Ihre Unterstützung“-Meldung in der Konsole. Doch ohne deren Einwilligung griff der Maintainer zusätzlich ihre E-Mail-Adressen ab – personenbezogene Daten – und übermittelte sie an den Drittanbieterdienst SponsorLink.
Der Kommentar des Maintainers auf GitHub sagt alles:

Ausmaß der Auswirkungen von Moq
Obwohl Version 4.20.0 aus der NuGet-Registry entfernt wurde, veranschaulichen die historischen Download-Statistiken die mögliche Reichweite dieser Version. In weniger als 24 Stunden war sie bereits 10.356-mal installiert worden.
Beachtenswert ist, dass der Maintainer in seinem Beitrag vom Januar 2023 bestätigte, dass die E-Mail-Adressen nicht im Klartext übertragen, sondern mit dem Einweg-Hashverfahren SHA256 gehasht werden.
Die vorherige Moq-Version 4.18.4, die das Verhalten zum Ausschleusen von Daten nicht aufweist, wurde in den vergangenen sechs Wochen 6.765.006-mal heruntergeladen. Das zeigt, welches Ausmaß eine Datenschutzverletzung hätte annehmen können, wenn ein Entwickler das Problem nicht bemerkt und die Community darauf aufmerksam gemacht hätte.
Zu den Projekten, die von diesem Vorfall betroffen waren, zählen Microsoft PowerToys, Jellyfin und tausend weitere Projekt-Repositories, die Moq für Tests nutzten, sich dessen aber vermutlich nicht bewusst waren.

Moq-Vorfall: Was sollten Sie jetzt tun?
Kurz zusammengefasst:
Wenn Sie Moq-Version 4.20.0 nicht verwendet haben, waren Sie nicht vom Ausschleusen personenbezogener E-Mail-Daten durch die Moq-Bibliothek betroffen.
Version 4.20.0 wurde aus der NuGet-Registry entfernt.
Der Pull Request Nr. 1375 wurde erstellt und zusammengeführt. In welchem Umfang dadurch das Ausschleusen von Nutzerdaten rückgängig gemacht wurde, ist jedoch unklar.
Es wurden neuere Moq-Versionen veröffentlicht, darunter Version 4.20.2. Wir raten jedoch von deren Installation ab, da nicht bestätigt wurde, dass keine Daten ausgeschleust werden.
Was Sie tun sollten:
Entfernen Sie die Abhängigkeit von Version 4.20.0, um das Ausschleusen von Daten zu verhindern.
Sperren Sie diese Abhängigkeit in den Paketverwaltungstools Ihrer Organisation, etwa Artifactory oder Nexus, damit andere Entwickler sie nicht versehentlich installieren.
Erwägen Sie, DNS-Einträge im Zusammenhang mit SponsorLink umzuleiten, um versehentliche Datenlecks zu verhindern.
Integrieren Sie Snyk in Ihre CI- oder Build-Workflows und Git-Repositories, um die anfällige Moq-Version 4.20.0 sowie weitere Sicherheitslücken, schädliche Bibliotheken und mögliche Datenlecks in Softwarebibliotheken zu erkennen.
Snyk ist ein Anbieter von Sicherheitstools für Entwickler und bietet .NET-Entwicklern Werkzeuge, um Abhängigkeiten ihrer .NET-Projekte auf Probleme zu untersuchen – etwa Sicherheitslücken oder unerwünschtes Verhalten wie im Moq-Vorfall. Starten Sie hier mit den Abhängigkeiten Ihrer NuGet- und Paket-Projekte.
Snyk Code ist ein Tool zur statischen Analyse, das C#-Entwicklern hilft, unsicheren Code in ihren Code-Projekten zu finden.



