Mais 123% CVE comunicadas por dia em 2026 do que no ano passado.

Cadeia de abastecimento

O que é typosquatting?

O typosquatting é um ataque que regista um nome próximo de um nome popular e espera que alguém o escreva mal. Começou com os domínios de sites. No software, os atacantes publicam pacotes maliciosos com nomes como crossenv em vez de cross-env, e um único erro de escrita num comando de instalação executa o código deles na máquina de um programador ou num pipeline de CI.

Atualizado a

Como funciona o typosquatting de pacotes

  1. Escolher um alvo. O atacante escolhe um pacote popular, onde até uma pequena taxa de erros de escrita se acumula.
  2. Registar um nome próximo. Difere numa letra, num hífen em falta, num carácter trocado ou num sufixo plausível.
  3. Esconder a carga maliciosa. O pacote envolve muitas vezes o verdadeiro, pelo que tudo continua a funcionar e nada parece errado.
  4. Executar na instalação. Os gestores de pacotes podem executar scripts durante a instalação, pelo que o código corre antes de alguém o chamar, com acesso a variáveis de ambiente e tokens.
  5. Roubar e propagar. As credenciais roubadas permitem ao atacante publicar mais pacotes ou chegar a mais sistemas.

Técnicas comuns de typosquatting

Técnica Pacote real Imitação
Separador em falta cross-env crossenv
Sufixo acrescentado jquery jquery.js
Letras trocadas ffmpeg ffmepg
Letra omitida mongoose mongose
Prefixo acrescentado sqlite node-sqlite

Todas as imitações acima vêm de uma única campanha real, descrita a seguir.

Um exemplo real: crossenv

Em 2017, um utilizador do npm chamado hacktask publicou crossenv, imitando o popular cross-env. Mantinha o comportamento do pacote verdadeiro e enviava também as variáveis de ambiente de quem o instalava para o servidor do atacante. Num build, é nas variáveis de ambiente que estão os tokens. A análise do Snyk concluiu que era um de mais de 30 pacotes maliciosos da mesma conta e que passou despercebido durante cerca de duas semanas, até um engenheiro o detetar.

Porque é que os assistentes de programação com IA agravam o problema

Um assistente de IA pode sugerir um pacote que não existe. Se um atacante registar esse nome, a pessoa seguinte que aceitar a sugestão instala o malware. A isto chama-se por vezes slopsquatting. Os agentes automatizados que instalam dependências sem que uma pessoa leia o nome aumentam ainda mais o risco.

Typosquatting vs confusão de dependências

Ambos exploram a forma como os nomes de pacotes são resolvidos, mas o erro é diferente.

Typosquatting Confusão de dependências
De quem é o erro Uma pessoa escreve mal um nome Um sistema de build escolhe o registo errado
O nome Próximo de um pacote público Idêntico a um pacote privado interno
Como tem êxito Alguém o instala por acidente Uma versão pública com um número mais alto tem prioridade
Principal defesa Lockfiles e revisão das novas dependências Pacotes com scope e uma configuração do registo que mantém privados os nomes internos

A confusão de dependências tornou-se famosa em 2021, quando o investigador Alex Birsan a usou para executar código em mais de 35 organizações, entre elas a Apple, a Microsoft e o PayPal, ao abrigo de programas de bug bounty ou com autorização.

Como evitar o typosquatting

  • Instale a partir de um lockfile na CI. Use npm ci e os seus equivalentes. Um erro de escrita só pode então chegar através de uma alteração revista. Consulte o que um lockfile faz e não faz.
  • Reveja as novas dependências nos pull requests. Olhe para o próprio nome e leia o diff do lockfile em vez de o saltar.
  • Verifique antes de instalar. Compare o nome com a documentação do próprio projeto e desconfie de um pacote com poucas descargas, uma primeira publicação recente ou sem ligação a um repositório.
  • Limite os scripts de instalação. Desative-os sempre que o seu build o permita.
  • Aguarde antes de adotar novos pacotes. Os pacotes maliciosos são muitas vezes encontrados e removidos pouco depois de surgirem.
  • Limite o que um build pode alcançar. Um build que só pode comunicar com hosts conhecidos não consegue enviar os seus segredos a um atacante, mesmo que um pacote malicioso seja executado. Consulte a política de egress do GitHub Actions.
  • Verifique cada sugestão de IA. Confirme que o pacote existe e que é o pretendido antes de o instalar.

Tenha presente que um typosquat não tem CVE no dia em que surge, pelo que uma análise SCA baseada em avisos de segurança não o assinala. Para saber mais, consulte as boas práticas de segurança da cadeia de abastecimento de software.

Typosquatting de domínios

A forma original do ataque, também chamada URL hijacking, regista um domínio como o de um banco ou de uma página de início de sessão com um erro ortográfico. Os visitantes que escrevem mal o endereço vão parar a uma cópia do site criada para roubar credenciais ou distribuir malware. As defesas são diferentes: registe erros ortográficos comuns dos seus próprios domínios, monitorize registos de nomes semelhantes e use um gestor de palavras-passe, que não preenche automaticamente no domínio errado.

Como o CRACI limita os danos

O CRACI não deteta novos pacotes maliciosos pelo comportamento nem pela reputação, pelo que deve usar uma firewall de pacotes ou uma ferramenta de análise de comportamento para isso. O que faz é contê-los. Como seu runner de GitHub Actions, aplica uma política de egress que bloqueia as ligações de que o seu build não precisa, pelo que um pacote que rouba segredos não tem para onde os enviar, mesmo quando ninguém viu o ataque antes. Cada pacote que um job obteve fica registado, pelo que, assim que um ataque é conhecido, pode ver que builds o trouxeram, e as versões com uma CVE publicada são assinaladas e podem ser bloqueadas por policy gates. Consulte o que é um ataque à cadeia de abastecimento.

Typosquatting: perguntas frequentes

O que é typosquatting, em termos simples?

É registar um nome quase igual a um nome popular, como um pacote ou um site, e esperar que alguém o escreva mal. A imitação entrega então malware ou rouba credenciais.

Qual é um exemplo de typosquatting?

Em 2017, o pacote npm crossenv imitou o popular cross-env. Funcionava como o pacote verdadeiro e enviava também as variáveis de ambiente dos utilizadores para o servidor do atacante.

Qual é a diferença entre typosquatting e confusão de dependências?

O typosquatting depende de uma pessoa escrever mal o nome de um pacote público. A confusão de dependências usa o nome exato de um pacote privado e depende de um sistema de build obter, em vez dele, uma versão pública.

O typosquatting é ilegal?

Publicar malware ou roubar credenciais é ilegal na maioria dos países. O typosquatting de domínios pode também violar a legislação sobre marcas, como o Anticybersquatting Consumer Protection Act dos EUA.

O que é slopsquatting?

Uma variante em que um atacante regista um nome de pacote que os assistentes de IA tendem a inventar. Quem instalar o pacote sugerido recebe o código do atacante.

Como detetar o typosquatting?

Reveja as novas dependências pelo nome e pelos metadados, e use uma ferramenta que compare os nomes dos pacotes com os de pacotes populares ou que analise o comportamento. Os scanners baseados em avisos de segurança só ajudam depois de o pacote ter sido reportado.

Contenha o pacote que não apanhou

Bloqueie as ligações de saída de que os seus builds não precisam e mantenha um registo de cada pacote que obtiveram.

Marcar demo