0Pricing
Cyber Security Academy · Aula

Ameaças à cadeia de suprimentos

Entenda como dependências se tornam vetores de ataque.

Ameaças à cadeia de suprimentos é uma aula grátis de Cyber Security Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cyber Security Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cyber Security Academy inclui 4 aulas no total.

O que é um ataque à cadeia de fornecimento

Um ataque à cadeia de fornecimento de software compromete uma organização não ao violá-la diretamente, mas ao corromper algo em que ela confia e que utiliza: uma biblioteca, uma ferramenta de compilação, uma imagem base de contêiner ou um servidor de atualização.

Como o software moderno é montado a partir de centenas de componentes de terceiros, uma única ligação envenenada é herdada por todos os consumidores posteriores. O invasor investe uma vez e alcança muitas vítimas.

  • Inversão da confiança — a fronteira de segurança se desloca para fora do seu próprio código
  • Alcance do impacto transitivo — um pacote comprometido chega a milhares de compilações

O icebergue das dependências

Quando você adiciona uma dependência direta, geralmente inclui dezenas de dependências transitivas que nunca escolheu. Um aplicativo típico em Node ou Python declara alguns pacotes, mas acaba resolvendo centenas.

Liste a árvore completa de dependências resolvida, não apenas o manifesto, para ver o que você realmente distribui:

# npm: full resolved dependency tree
npm ls --all

# Python: pinned transitive closure
pip freeze

# count transitive nodes
npm ls --all --parseable | wc -l

Falsificação por erro de digitação e confusão

Invasores publicam pacotes maliciosos com nomes parecidos com os de pacotes populares, apostando em um erro de digitação fatal.

  • Falsificação por erro de digitação — reqeusts em vez de requests
  • Falsificação por combinação — python-requests imitando o nome real
  • Confusão de dependências — publicação de um pacote público com o mesmo nome do seu pacote privado interno, fazendo com que um resolvedor configurado incorretamente baixe a versão do invasor

Proteja-se fixando um registro interno confiável e usando pacotes privados com escopo ou espaço de nomes.

Comprometimento de conta e tomada de controle pelo mantenedor

Um pacote legítimo e amplamente confiável pode se tornar malicioso se a conta do mantenedor for comprometida ou se um colaborador malicioso obtiver permissões de publicação.

Incidentes recentes do mundo real mostram invasores roubando credenciais de mantenedores por meio de mensagens fraudulentas e depois publicando uma versão de correção envenenada que extrai credenciais durante a instalação.

  • Exija autenticação de dois fatores em todas as contas de publicação
  • Prefira pacotes com credenciais de publicação restritas a um escopo e lançamentos protegidos
  • Monitore o surgimento inesperado de novos mantenedores em dependências críticas

Rotinas maliciosas de instalação

Muitos ecossistemas executam código durante a instalação, antes que seu aplicativo seja executado. Um npm install pode executar um gancho postinstall que rouba variáveis de ambiente ou chaves SSH.

Desative rotinas de instalação arbitrárias na integração contínua e audite qualquer pacote que precise delas:

# npm: block lifecycle scripts during install
npm ci --ignore-scripts

# inspect what a package would run
npm view <package> scripts

# pnpm equivalent
pnpm install --ignore-scripts

Ferramentas de compilação comprometidas

O próprio ambiente de compilação é um alvo de alto valor. Se um invasor envenenar um compilador, uma imagem do executor de integração contínua ou um complemento de compilação, todo artefato produzido por ele conterá uma porta dos fundos, mesmo quando seu código-fonte estiver limpo.

O exemplo clássico é um mecanismo de atualização com cavalo de Troia que assina software malicioso com uma chave legítima de assinatura de código, fazendo com que as vítimas o aceitem como autêntico.

  • Trate a infraestrutura de compilação como um ambiente de produção, com reforço de segurança completo
  • Use executores de compilação efêmeros e reproduzíveis
  • Separe as chaves de assinatura do servidor de compilação

Arquivos de bloqueio e resumos criptográficos de integridade

Um arquivo de bloqueio fixa versões exatas e resumos criptográficos do conteúdo, para que uma nova resolução não possa substituir silenciosamente um artefato por outro. Sempre inclua esse arquivo no repositório e deixe a integração contínua verificá-lo, em vez de resolver as dependências novamente sem restrições.

O campo de integridade armazena um resumo criptográfico; se o arquivo compactado baixado não corresponder, a instalação falhará.

# package-lock.json integrity entry
# "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
# "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA=="

# CI must install from lock, never re-resolve
npm ci
yarn install --frozen-lockfile

Varredura de vulnerabilidades das dependências

Versões com vulnerabilidades conhecidas (rastreadas como CVEs) são a fragilidade mais comum da cadeia de fornecimento. As ferramentas de Análise de Composição de Software (SCA) comparam suas dependências resolvidas com bases de dados de vulnerabilidades.

Execute varreduras na integração contínua e faça as compilações falharem diante de achados críticos:

# npm built-in audit
npm audit --audit-level=high

# OSV scanner across ecosystems
osv-scanner --lockfile=package-lock.json

# Trivy for filesystem and images
trivy fs --severity HIGH,CRITICAL .

Fixação de versões e incorporação de dependências

Intervalos de versões flutuantes (^1.2.0) permitem que novas versões sejam incorporadas automaticamente. Isso é conveniente, mas expõe você a uma correção maliciosa.

  • Fixe versões exatas e analise as atualizações de forma deliberada
  • Fixe pelo resumo criptográfico as imagens de contêiner, não por identificadores mutáveis como latest
  • Incorpore as dependências críticas ao seu próprio repositório ou espelho, para que uma exclusão no projeto de origem não possa interromper nem contaminar seu sistema
# pin a container image by immutable digest
FROM python:3.12-slim@sha256:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613f

Monitoramento contínuo e procedência

Proteger a cadeia de fornecimento é uma atividade contínua, não uma varredura única. Você precisa saber o que distribui, de onde veio e quando se torna vulnerável.

  • Gere um SBOM para cada lançamento (próxima lição)
  • Registre a procedência da compilação para poder comprovar como um artefato foi produzido
  • Assine alertas para que uma CVE recém-divulgada desencadeie uma nova avaliação das compilações já distribuídas

Modelagem de ameaças do fluxo de entrega

Mapeie cada etapa em que entra uma entrada não confiável: máquinas dos desenvolvedores, controle de código-fonte, registros de dependências, o sistema de compilação, o armazenamento de artefatos e o canal de atualização. Cada uma é um possível ponto de injeção.

Para cada etapa, pergunte: quem pode gravar aqui, o que um comprometimento permitiria fazer e como eu poderia detectá-lo? Isso produz uma lista priorizada de controles, em vez de uma lista de verificação genérica.

Verificação rápida: confusão de dependências

Verifique sua compreensão de uma classe comum de ataque à cadeia de fornecimento.

Recapitulação: ameaças à cadeia de fornecimento

Você aprendeu por que as dependências são vetores de ataque e como reduzir essa exposição.

  • Inversão da confiança significa que sua segurança depende de terceiros que você não controla
  • Principais ameaças: falsificação por erro de digitação, confusão de dependências, tomada de controle pelo mantenedor, rotinas maliciosas de instalação e ferramentas de compilação comprometidas
  • Principais defesas: arquivos de bloqueio com resumos criptográficos de integridade, varredura com SCA, fixação exata por resumo criptográfico, autenticação de dois fatores para publicadores e monitoramento contínuo

A seguir, você fará um inventário exato do conteúdo do seu software com um SBOM.

Perguntas Frequentes

A aula “Ameaças à cadeia de suprimentos” é grátis?

Sim — o texto completo de “Ameaças à cadeia de suprimentos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cyber Security Academy, atualize para CoddyKit PRO. O curso de Cyber Security Academy inclui 4 aulas no total.

O que vou aprender em “Ameaças à cadeia de suprimentos”?

Entenda como dependências se tornam vetores de ataque. Você pratica Cyber Security Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cyber Security Academy?

Nenhuma experiência prévia é necessária. Cyber Security Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Ameaças à cadeia de suprimentos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cyber Security Academy?

Sim. Cada aula de Cyber Security Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Ameaças à cadeia de suprimentos
  2. Lista de materiais de software (SBOM)
  3. Assinatura de dependências e artefatos
  4. Protegendo pipelines de CI/CD
← Voltar para Cyber Security Academy