Skip to main content

Alerta para desarrolladores .NET: el paquete NuGet Moq extrae correos electrónicos de usuarios de git

Escrito por
blog feature pypi spoof

9 de agosto de 2023

0 minutos de lectura

Nota 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:

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:

Comentario de GitHub en modo oscuro de kzu sobre SponsorLink, la renovación de Moq, preocupaciones por la privacidad, el RGPD y la sostenibilidad, con 178 reacciones negativas.

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.

Tabla con cinco repositorios populares de GitHub que dependen de Moq, con los nombres de los repositorios y la cantidad de estrellas.

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.

Leer más

Blog

Los modelos de frontera encontraron las vulnerabilidades. Solo el atacante encontró las cadenas.

El análisis estático encontró las fallas, pero solo las pruebas de ataque en vivo demostraron cómo podían encadenarse para provocar brechas. Una comparación de Evo COS, Claude Security y Claude Code Security.

feature insights context
Blog

Los ataques autónomos ya están aquí. La defensa debe estar a su altura.

Los atacantes autónomos están reduciendo el tiempo disponible para defenderse. Descubre cómo el descubrimiento, la corrección, la validación y la prevención continuos pueden ayudar a los equipos de seguridad a seguirles el ritmo.

Blog

Por qué los agentes de programación con IA siguen generando fallas de control de acceso

Los agentes de programación con IA pueden generar lógica de autorización que compila y supera la revisión, pero expone los datos de un inquilino a otro. Descubre por qué es difícil detectar el control de acceso roto y cómo prevenirlo.