Pular para o conteúdo
Skillpedia
Agentes35 mil · #5721

detecting-typosquatting-packages-in-npm-pypi

Ajuda seu agente a encontrar pacotes perigosos em registros como npm e PyPI. Ele verifica nomes parecidos com os de pacotes conhecidos para evitar ataques.

O que ela faz

Esta ferramenta verifica se existem pacotes com nomes muito parecidos com os de pacotes populares nos repositórios npm e PyPI. Ela procura por nomes que parecem erros de digitação ou variações intencionais para enganar os usuários.

Quando usar

  • ✓Ao verificar os pacotes que seu projeto usa para garantir que não há nenhum 'falso'.
  • ✓Para monitorar se alguém está tentando criar um pacote 'falso' com o nome da sua empresa.
  • ✓Quando você suspeita que um desenvolvedor instalou um pacote incorreto por engano.

Exemplo do que pedir para a IA

“Verifique se há pacotes com nomes parecidos com 'react' no npm e PyPI.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/detecting-typosquatting-packages-in-npm-pypi/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/detecting-typosquatting-packages-in-npm-pypi/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta compara os nomes dos pacotes usando métricas de similaridade de texto e analisa quando eles foram criados e quantos downloads têm. Pacotes com nomes parecidos, criados recentemente e com poucos downloads são sinalizados como suspeitos.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill detecting-typosquatting-packages-in-npm-pypi

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/detecting-typosquatting-packages-in-npm-pypi/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Detecção de Pacotes Typosquatting em npm e PyPI

Quando Usar

  • Auditoria de dependências de projetos para identificar pacotes cujos nomes são suspeitos de serem semelhantes a bibliotecas populares
  • Verificação proativa de registros de pacotes em busca de pacotes recém-publicados que possam ser typosquats de pacotes da sua organização
  • Investigação de um possível comprometimento da cadeia de suprimentos onde um desenvolvedor instalou um nome de pacote com erro de digitação
  • Criação de monitoramento automatizado que alerta quando novos pacotes aparecem com nomes próximos a dependências críticas
  • Avaliação do perfil de risco de pacotes desconhecidos antes de adicioná-los à árvore de dependências de um projeto

Não use como única determinação de intenção maliciosa; a semelhança de nome por si só não prova que um pacote é malicioso. Não use para solicitações de remoção automatizadas em massa sem revisão manual dos pacotes sinalizados. Não use contra registros privados sem autorização.

Pré-requisitos

  • Python 3.9+ com requests e python-Levenshtein (ou rapidfuzz) pacotes instalados
  • Acesso à rede para https://pypi.org/pypi/<package>/json (API JSON do PyPI) e https://registry.npmjs.org/<package> (API do registro npm)
  • Uma lista de pacotes populares ou críticos para monitorar (por exemplo, os 1000 pacotes PyPI mais baixados, lista de dependências da organização)
  • Compreensão de padrões comuns de typosquatting: omissão de caracteres, transposição, inserção, substituição e manipulação de hifens/sublinhados

Fluxo de Trabalho

Etapa 1: Construir a Lista de Observação de Pacotes Alvo

Estabeleça o conjunto de pacotes legítimos para monitorar typosquats:

  • Extrair dependências do projeto: Analise requirements.txt, Pipfile.lock, package.json ou package-lock.json para extrair todos os nomes de dependências diretas e transitivas
  • Incluir pacotes populares: Complemente com alvos de alto valor dos 1000 downloads PyPI mais baixados (disponíveis em https://hugovk.github.io/top-pypi-packages/) ou os pacotes npm mais populares por contagem de downloads
  • Adicionar pacotes da organização: Inclua quaisquer pacotes publicados pela sua organização que atacantes possam ter como alvo com typosquats para interceptar instalações internas
  • Normalizar nomes: O PyPI trata hifens, sublinhados e pontos como equivalentes (normalização PEP 503: re.sub(r"[-_.]+", "-", name).lower()). Nomes de pacotes npm diferenciam maiúsculas de minúsculas, mas pacotes com escopo usam o formato @scope/name. Normalize antes da comparação.

Etapa 2: Gerar Nomes Candidatos a Typosquat

Produza variantes potenciais de typosquat para cada pacote alvo:

  • Omissão de caracteres: Remova cada caractere um por um (requests -> rquests, requets, reqests)
  • Transposição de caracteres: Troque caracteres adjacentes (requests -> erquests, rqeuests, reques ts)
  • Substituição de caracteres: Substitua caracteres por teclas adjacentes no teclado usando um mapa de distância QWERTY (requests -> rrquests, requesta)
  • Inserção de caracteres: Insira caracteres comuns em cada posição (requests -> rrequests, reqquests)
  • Manipulação de separadores: Para nomes com hifen, tente remover, duplicar ou substituir separadores (my-package -> mypackage, my--package, my_package)
  • Ataques de prefixo/sufixo comuns: Adicione strings comuns no início ou no fim (python-requests, requests-python, requests2, requests-lib)

Etapa 3: Consultar APIs de Registro para Pacotes Candidatos

Verifique se os nomes candidatos gerados realmente existem no registro:

  • API JSON do PyPI: Envie GET https://pypi.org/pypi/<candidate>/json para cada candidato. Uma resposta 200 significa que o pacote existe; 404 significa que não existe. Extraia da resposta: info.name, info.version, info.author, info.summary, info.home_page, info.project_urls e releases (indexados por versão com carimbos de data/hora upload_time_iso_8601).
  • API do registro npm: Envie GET https://registry.npmjs.org/<candidate> com Accept: application/json. Extraia: name, description, dist-tags.latest, time.created, time.modified, maintainers e versions.
  • Limitação de taxa: O PyPI não tem limites de taxa publicados, mas respeite taxas de solicitação razoáveis (1-2 solicitações/segundo). O registro npm retorna 429 quando a taxa é limitada; implemente backoff exponencial.
  • Otimização em lote: Para listas de candidatos grandes, paralelize as solicitações com pool de conexões (requests.Session) e limite a concorrência para evitar acionar proteções contra abuso.

Etapa 4: Analisar Metadados do Pacote em Busca de Sinais de Suspeita

Pontue cada pacote candidato existente em relação a múltiplos sinais heurísticos:

…

Perguntas frequentes

O que é 'typosquatting'?

É quando alguém registra um nome de domínio ou pacote na internet que é muito parecido com um já existente, com a intenção de enganar as pessoas e fazê-las pensar que é o original.

Por que isso é perigoso?

Pacotes maliciosos podem ser usados para roubar informações, danificar sistemas ou espalhar vírus. Usar um pacote 'falso' por engano pode comprometer a segurança do seu projeto.

A ferramenta garante que um pacote é malicioso?

Não. A ferramenta apenas sinaliza pacotes suspeitos com base no nome e em algumas características. É importante fazer uma análise manual antes de confirmar se um pacote é realmente perigoso.

Detalhes

Descrição original do autor

Detects typosquatting attacks in npm and PyPI package registries by analyzing package name similarity using Levenshtein distance and other string metrics, examining publish date heuristics to identify recently created packages mimicking established ones, and flagging download count anomalies where suspicious packages have disproportionately low usage compared to their legitimate targets. The analy

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#5721
Licença
Apache-2.0
Atualizada em
31/08/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas