Skip to main content

Alerta para desenvolvedores .NET: pacote Moq no NuGet exfiltra e-mails de usuários do Git

Escrito por
blog feature pypi spoof

9 de agosto de 2023

0 minutos de leitura

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

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:

Comentário no GitHub em modo escuro de kzu sobre o SponsorLink, a reformulação do Moq, preocupações com privacidade, GDPR e sustentabilidade, com 178 reações de desaprovação.

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.

Tabela com cinco repositórios populares do GitHub que dependem do Moq, com os nomes dos repositórios e o número de estrelas.

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.

Leia mais

Blog

Modelos de ponta encontraram as vulnerabilidades. Só o atacante encontrou as cadeias.

A análise estática encontrou as falhas, mas só os testes de ataque em aplicações ativas provaram como elas poderiam ser encadeadas para causar invasões. Uma comparação entre Evo COS, Claude Security e Claude Code Security.

feature insights context
Blog

Os ataques autônomos já chegaram. A defesa precisa acompanhar o ritmo.

Os atacantes autônomos estão reduzindo o tempo disponível para a defesa. Saiba como a descoberta, a correção, a validação e a prevenção contínuas ajudam as equipes de segurança a acompanhar esse ritmo.

Blog

Por que agentes de programação com IA continuam criando falhas de controle de acesso

Agentes de programação com IA podem gerar uma lógica de autorização que compila e passa pela revisão, mas permite que um tenant acesse os dados de outro. Saiba por que é difícil detectar falhas de controle de acesso e como evitá-las.