Alerta para desarrolladores .NET: el paquete NuGet Moq extrae correos electrónicos de usuarios de git
9 de agosto de 2023
0 minutos de lecturaNota del editor: 10 de agosto de 2023
Esta publicación del blog se actualizó para reflejar nueva información sobre esta situación en curso. Mantente al tanto de futuras actualizaciones.
En resumen
El 8 de agosto de 2023, la comunidad .NET fue informada de que la biblioteca de pruebas Moq extraía los correos electrónicos de los desarrolladores de sus equipos de desarrollo y los enviaba a servidores remotos de terceros.
Snyk ya publicó un aviso de seguridad y alertará a los desarrolladores que analicen y monitoreen sus proyectos .NET con Snyk.
Empieza con los desafíos de Capture the Flag
Aprende a resolver desafíos de captura la bandera con nuestro taller virtual introductorio a pedido.
Actualizaciones al 10 de agosto de 2023:
El paquete NuGet Devlooped.SponsorLink se reportó al equipo del registro de NuGet.
Se crearon varias bifurcaciones de Moq; úsalas con precaución:
Te recomendamos evaluar otros paquetes de la misma cuenta de mantenimiento.
Acerca de la biblioteca de pruebas Moq para .NET
Moq es una biblioteca de pruebas para desarrolladores de .NET y se describe como “la biblioteca de simulación más popular y amigable para .NET”. Sin duda, se ganó el apoyo de la comunidad, como lo demuestran sus extraordinarias 475 millones de descargas acumuladas desde su lanzamiento y sus 5,3 mil estrellas en GitHub.
¿Qué ocurrió? Moq recopila correos electrónicos de desarrolladores
A partir de la versión 4.20.0, la persona que mantiene Moq introdujo un nuevo comportamiento durante la compilación que ejecuta un comando `git config` para encontrar y extraer la dirección de correo electrónico configurada en el perfil de usuario de git del desarrollador.
Una vez extraído el correo electrónico del desarrollador, se envía una solicitud HTTP HEAD a un servicio de almacenamiento de blobs de Azure, con la dirección de correo electrónico cifrada mediante hash en la URL. Este servicio remoto interactúa con un servicio de terceros llamado SponsorLink para determinar si el desarrollador instaló su aplicación de GitHub.
Aunque el proceso mencionado busca determinar si el desarrollador es un patrocinador activo del proyecto Moq, los datos de identificación personal (PII) —en este caso, su dirección de correo electrónico— se extraen y comparten explícitamente con un endpoint de servicio de terceros.
Este incidente descubierto forma parte de un experimento para financiar el trabajo de la persona que mantiene el proyecto, que lleva adelante desde enero de 2023 en otros proyectos de código abierto que mantiene.
Problemas de seguridad de la cadena de suministro y estado del paquete Moq
La historia de Moq es otro caso de un problema de seguridad de la cadena de suministro relacionado con bibliotecas de código abierto y su amplio impacto, consecuencia del enorme crecimiento de la adopción del código abierto en las empresas y los ecosistemas de desarrollo.
A diferencia de lo que ocurre con las vulnerabilidades de seguridad, este incidente con un paquete NuGet pone de relieve el desequilibrio de responsabilidades que enfrentan quienes mantienen software de código abierto al buscar patrocinio, financiamiento y reconocimiento por su trabajo.
Quizás con buenas intenciones, Moq notificó a los desarrolladores que usaban la biblioteca con un mensaje de agradecimiento por su apoyo en la consola. Sin embargo, sin su consentimiento, también había recopilado sus direcciones de correo electrónico —información de identificación personal— y las había enviado al servicio de terceros SponsorLink.
El comentario en GitHub de la persona que mantiene el proyecto lo dice todo:

Alcance del impacto de Moq
Aunque la versión 4.20.0 se retiró del registro de NuGet, las estadísticas históricas de descargas nos permiten dimensionar el alcance de esta versión: estuvo disponible menos de 24 horas, pero ya se había instalado 10.356 veces.
Cabe señalar que, en una publicación de enero de 2023, la persona que mantiene el proyecto reconoció que las direcciones de correo electrónico no se envían en texto plano, sino que se les aplica el algoritmo unidireccional SHA256.
La versión anterior de Moq, la 4.18.4, que no incluye el comportamiento de extracción, registró 6.765.006 descargas en las últimas seis semanas. Esto demuestra el posible alcance de una vulneración de la privacidad si un desarrollador no hubiera detectado el problema y alertado a la comunidad.
Entre los proyectos afectados por este incidente se encuentran los de los desarrolladores de PowerToys de Microsoft, Jellyfin y otros mil repositorios de proyectos que dependían de Moq para sus pruebas, probablemente sin saberlo.

Incidente de Moq: ¿qué hacer ahora?
Resumen rápido:
Si no usabas la versión 4.20.0 de Moq, evitaste que la biblioteca extrajera los correos electrónicos de usuarios, que son datos de identificación personal (PII).
La versión 4.20.0 se retiró del registro de NuGet.
Se creó y fusionó el pull request #1375. Sin embargo, no se ha determinado hasta qué punto revirtió la extracción de datos de usuarios.
Se publicaron versiones más recientes de Moq, como la 4.20.2. Sin embargo, recomendamos no instalarlas, ya que no se ha confirmado que no haya extracción de datos.
Qué hacer:
Elimina la dependencia de la versión 4.20.0 para evitar la extracción de datos.
Bloquea esta dependencia en las herramientas de administración de paquetes de tu organización, como Artifactory o Nexus, para que otros desarrolladores no la instalen por accidente.
Considera redirigir los registros DNS asociados con SponsorLink para evitar filtraciones accidentales de datos.
Agrega Snyk a tus flujos de trabajo de CI o compilación y a tus repositorios Git para detectar la versión vulnerable 4.20.0 de Moq, así como otras vulnerabilidades de seguridad, bibliotecas maliciosas y posibles filtraciones de datos en bibliotecas de software.
Snyk es una empresa que ofrece herramientas de seguridad para desarrolladores. Proporciona a quienes desarrollan en .NET herramientas para analizar las dependencias de sus proyectos .NET y detectar problemas, como vulnerabilidades de seguridad y comportamientos no deseados, como el incidente de Moq. Empieza aquí con las dependencias de tus proyectos NuGet y Paket.
Snyk Code es una herramienta de análisis estático que ayuda a los desarrolladores de C# a encontrar código inseguro en sus proyectos.



