Pular para o conteúdo
Skillpedia
Segurança35 mil · #5658

detecting-dependency-confusion

Faz seu agente detectar e prevenir confusão de dependências em pacotes de software. Ele verifica nomes de pacotes para evitar que código malicioso seja incluído.

O que ela faz

Esta ferramenta ajuda a proteger seus projetos de software contra um tipo de ataque chamado 'confusão de dependência'. Ela verifica se pacotes internos que sua empresa usa podem ser 'roubados' por atacantes publicando pacotes com o mesmo nome no registro público.

Quando usar

  • ✓Ao iniciar um novo projeto de segurança para sua empresa.
  • ✓Quando seus sistemas de construção usam fontes de pacotes públicas e privadas juntas.
  • ✓Após uma falha de segurança onde nomes de pacotes internos podem ter sido expostos.

Exemplo do que pedir para a IA

“Verifique se algum dos nossos pacotes internos pode ser alvo de confusão de dependência.”

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-dependency-confusion/SKILL.md

Mensagem pronta para colar

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

A ferramenta verifica os nomes dos pacotes internos usados em seus projetos. Em seguida, ela consulta os registros públicos para ver se um atacante poderia publicar um pacote com o mesmo nome. Se um nome interno não estiver registrado publicamente, ele pode ser 'reivindicado' defensivamente.

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-dependency-confusion

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/detecting-dependency-confusion/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 Confusão de Dependência

Aviso Legal: Esta habilidade destina-se apenas a testes de segurança autorizados, engenharia defensiva e fins educacionais. Registrar ou reivindicar namespaces de pacotes que você não possui, ou testar pipelines de build sem autorização por escrito, pode ser ilegal e violar os termos de serviço de registros públicos. Execute atividades de reivindicação de namespace ou teste de resolução apenas contra nomes e infraestrutura que você controla ou para os quais está explicitamente autorizado a avaliar.

Visão Geral

A confusão de dependência (também chamada de ataque de substituição ou sombreamento de namespace) foi popularizada por Alex Birsan em 2021, quando ele forçou código malicioso nos sistemas de build internos da Apple, Microsoft, PayPal e dezenas de outras empresas. A causa raiz é que muitos gerenciadores de pacotes, quando configurados para resolver de um registro interno/privado e um público, preferirão a cópia que tiver o número de versão mais alto em vez de honrar a origem. Um atacante que descobre o nome de um pacote interno (@acme/internal-utils, acme-billing-sdk) pode publicar um pacote malicioso com o mesmo nome no registro público (npmjs.com, PyPI, Maven Central) com uma versão muito alta (por exemplo, 99.0.0). Quando o runner de CI/CD da vítima ou uma máquina de desenvolvedor resolve as dependências, ele puxa o pacote público do atacante, executa seus scripts de instalação e a cadeia de suprimentos é comprometida.

Esta habilidade abrange ambas as partes do problema: detecção — enumerando nomes de pacotes internos que não estão registrados (reservados defensivamente) em registros públicos e, portanto, podem ser reivindicados, usando confused e OWASP dep-scan — e prevenção — fixando escopos/namespaces em registros privados, registrando pacotes de placeholder e aplicando restrições de origem em .npmrc, pip.conf/pyproject.toml e Maven settings.xml. Nomes de pacotes internos vazam constantemente: em lockfiles commitados, sourcemaps, bundles JS públicos, camadas Docker e rastros de pilha de erros, então isso é tratado como um problema de gerenciamento de superfície de ataque, não uma verificação única.

Quando Usar

  • Ao integrar um repositório ou organização a um programa de segurança de cadeia de suprimentos e você precisa estabelecer uma linha de base de quais pacotes internos podem ser reivindicados em registros públicos.
  • Quando pipelines de CI/CD resolvem dependências de registros privados e públicos (feeds mistos/híbridos).
  • Após qualquer incidente em que nomes de pacotes internos possam ter sido expostos (código-fonte vazado, bundle público, repositório comprometido).
  • Ao auditar arquivos package.json, requirements.txt, pom.xml, composer.json ou Gemfile.lock em busca de dependências confusas.
  • Como um controle recorrente agendado para detectar pacotes internos recém-adicionados que ainda não foram registrados defensivamente.

Pré-requisitos

  • Go 1.20+ para instalar confused:
    go install github.com/visma-prodsec/confused@latest
    # binary lands in $(go env GOPATH)/bin/confused
    
  • Python 3.10+ para OWASP dep-scan:
    pip install owasp-depscan
    # or container: docker pull ghcr.io/owasp-dep-scan/dep-scan
    
  • Node.js + npm (para remediação de .npmrc e npm config) e acesso ao seu registro privado (Artifactory, Nexus, Azure Artifacts, GitHub Packages, AWS CodeArtifact).
  • Acesso de leitura aos repositórios / lockfiles que estão sendo avaliados e acesso de gravação ao seu registro privado para registro defensivo.

Objetivos

  • Enumerar todas as dependências internas declaradas nos manifestos de projeto em npm, PyPI, Maven, Composer e RubyGems.
  • Determinar quais nomes internos não estão presentes no registro público correspondente e, portanto, podem ser reivindicados.
  • Distinguir exposição real de falsos positivos (pacotes com escopo, nomes já espelhados).
  • Aplicar controles de fixação de registro e restrição de escopo que tornam a substituição pública impossível.
  • Registrar defensivamente pacotes de placeholder para nomes internos não reivindicados.
  • Estabelecer um controle de detecção recorrente em CI para capturar dependências confusas recém-introduzidas.

Mapeamento MITRE ATT&CK

ID da Técnica Nome da Técnica Relevância
T1195.001 Compromisso da Cadeia de Suprimentos: Compromisso de Dependências de Software e Ferramentas de Desenvolvimento Técnica principal — o atacante substitui um pacote público malicioso por uma dependência interna.
T1195.002 Compromisso da Cadeia de Suprimentos: Compromisso da Cadeia de Suprimentos de Software Categoria mais ampla que abrange os artefatos de build comprometidos produzidos após o sucesso da confusão.

…

Perguntas frequentes

O que é 'confusão de dependência'?

É um ataque onde um invasor publica um pacote malicioso com o mesmo nome de um pacote interno da sua empresa em um registro público. Se o sistema de construção da sua empresa preferir a versão pública (por ter um número de versão maior), ele pode baixar e executar o código malicioso.

Por que isso é um problema?

Pode levar à execução de código malicioso dentro dos sistemas da sua empresa, comprometendo dados, sistemas e a cadeia de suprimentos de software.

Como a ferramenta protege contra isso?

Ela identifica quais nomes de pacotes internos não estão registrados publicamente e são, portanto, vulneráveis. Ela também ajuda a configurar suas ferramentas para sempre usar os pacotes internos corretos, mesmo que existam pacotes públicos com o mesmo nome.

Detalhes

Descrição original do autor

Detect and prevent dependency confusion (public-over-private package name resolution) in npm, PyPI, and Maven by enumerating claimable internal package names with tools like `confused` and OWASP `dep-scan`, then enforcing source restrictions via `.npmrc`, `pip.conf`/`pyproject.toml`, and Maven `settings.xml`. Use when onboarding a repo to a supply-chain security program, auditing lockfiles/manifes

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#5658
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