Alerta para desenvolvedores .NET: pacote Moq no NuGet exfiltra e-mails de usuários do Git
9 de agosto de 2023
0 minutos de leituraNota do editor: 10 de agosto de 2023
Esta publicação do blog foi atualizada para refletir novas informações sobre essa situação em andamento. Fique de olho para acompanhar as próximas atualizações.
Resumo
Em 8 de agosto de 2023, a comunidade .NET foi informada de que a biblioteca de testes Moq exfiltra os e-mails dos desenvolvedores de suas máquinas de desenvolvimento e os envia para servidores remotos de terceiros.
A Snyk já publicou um aviso de segurança e alertará os desenvolvedores que fazem a varredura e monitoram seus projetos .NET com a Snyk.
Comece a resolver desafios de capture the flag
Aprenda a resolver desafios de capture the flag assistindo sob demanda ao nosso workshop virtual introdutório.
Atualizações de 10 de agosto de 2023:
O pacote NuGet Devlooped.SponsorLink foi denunciado à equipe do registro NuGet.
Vários forks do Moq foram criados. Use com cautela:
Recomendamos que você avalie outros pacotes da mesma conta de mantenedor.
Sobre a biblioteca de testes Moq para .NET
Moq é uma biblioteca de testes para desenvolvedores .NET e se descreve como “a biblioteca de mocking mais popular e amigável para .NET”. De fato, conquistou o apoio da comunidade, como demonstram seus impressionantes 475 milhões de downloads acumulados desde o lançamento e as 5,3 mil estrelas no GitHub.
O que aconteceu? Moq coleta e-mails de desenvolvedores
A partir da versão 4.20.0, o mantenedor do Moq introduziu um novo comportamento durante o build, que executa um comando `git config` para localizar e extrair o endereço de e-mail configurado no perfil de usuário Git do desenvolvedor.
Depois de extrair o e-mail do desenvolvedor, uma solicitação HTTP HEAD é enviada a um serviço de armazenamento de blobs do Azure, com o endereço de e-mail em hash na URL. Esse endpoint remoto se comunica com um serviço de terceiros chamado SponsorLink para determinar se o desenvolvedor instalou o app do GitHub.
Embora o processo descrito acima tenha como objetivo determinar se o desenvolvedor é um patrocinador ativo do projeto Moq, dados pessoais identificáveis (PII), na forma do endereço de e-mail, são explicitamente exfiltrados e compartilhados com o endpoint de um serviço de terceiros.
Esse incidente, descoberto recentemente, faz parte de um experimento para financiar o trabalho do mantenedor, realizado desde janeiro de 2023 em outros projetos de código aberto mantidos por ele.
Segurança da cadeia de suprimentos e integridade do pacote Moq
O caso Moq é mais um exemplo de preocupação com a segurança da cadeia de suprimentos causada por bibliotecas de código aberto e seu amplo impacto, em razão do crescimento acelerado da adoção de código aberto em empresas e ecossistemas de desenvolvimento.
Diferentemente das vulnerabilidades de segurança, esse incidente com o pacote NuGet evidencia o desequilíbrio de responsabilidades que recai sobre os mantenedores de software de código aberto, que precisam buscar patrocínio, financiamento e reconhecimento pelo trabalho que realizam.
Talvez com boas intenções, o Moq enviou aos desenvolvedores que usam a biblioteca uma mensagem de “agradecemos seu apoio” no console. Porém, sem o consentimento deles, também coletou seus endereços de e-mail — informações que permitem identificá-los pessoalmente — e os enviou ao serviço de terceiros SponsorLink.
O comentário do mantenedor no GitHub diz tudo:

Impacto do Moq
Embora a versão 4.20.0 tenha sido removida do registro NuGet, as estatísticas históricas de downloads ajudam a visualizar o alcance dessa versão: apesar de ter ficado disponível por menos de 24 horas, ela já havia sido instalada 10.356 vezes.
Vale observar que, em sua publicação de janeiro de 2023, o mantenedor reconheceu que os endereços de e-mail não são enviados em texto simples, mas sim protegidos por hash usando o algoritmo unidirecional SHA256.
A versão anterior do Moq, 4.18.4, que não tem o comportamento de exfiltração, registrou 6.765.006 downloads nas últimas seis semanas. Isso demonstra o alcance potencial de uma violação de privacidade caso um desenvolvedor não tivesse percebido o problema e alertado a comunidade.
Entre os projetos afetados por esse incidente estão os desenvolvedores do PowerToys da Microsoft, o Jellyfin e outros mil repositórios de projetos que dependiam do Moq para testes, mas provavelmente não sabiam do problema.

Incidente com o Moq: o que fazer agora?
Resumo rápido:
Se você não usava a versão 4.20.0 do Moq, não foi afetado pela exfiltração de dados pessoais identificáveis (PII), como e-mails de usuários, pela biblioteca.
A versão 4.20.0 foi removida do registro NuGet.
Um pull request #1375 foi criado e integrado. No entanto, ainda não foi determinado até que ponto ele reverteu a exfiltração de dados dos usuários.
Versões mais recentes do Moq, como a 4.20.2, foram publicadas. No entanto, não recomendamos instalá-las, pois ainda não há confirmação de que não ocorram exfiltrações de dados.
O que fazer:
Remova a dependência da versão 4.20.0 para evitar a exfiltração de dados.
Bloqueie essa dependência nas ferramentas de gerenciamento de pacotes da sua organização, como Artifactory ou Nexus, para evitar que outros desenvolvedores a instalem por engano.
Considere redirecionar os registros DNS associados ao SponsorLink para evitar vazamentos acidentais de dados.
Adicione a Snyk aos seus fluxos de trabalho de CI ou build e aos repositórios Git para detectar a versão vulnerável 4.20.0 do Moq, além de outras vulnerabilidades de segurança, bibliotecas maliciosas e possíveis vazamentos de dados em bibliotecas de software.
A Snyk é uma empresa que oferece ferramentas de segurança para desenvolvedores. Para desenvolvedores .NET, disponibiliza ferramentas para analisar dependências de projetos .NET e detectar problemas como vulnerabilidades de segurança e comportamentos indesejados, como o incidente com o Moq. Comece aqui a analisar as dependências dos seus projetos NuGet e Paket.
Snyk Code é uma ferramenta de análise estática que ajuda desenvolvedores de C# a encontrar código inseguro em seus projetos.



