Este site está em constante desenvolvimento. Novo conteúdo e funcionalidades em breve!
Segurança da Informação

Ataque de Supply Chain no npm (Set/2025)

O maior ataque já registrado ao npm comprometeu 18 pacotes populares (chalk, debug, ansi-styles, duckdb, entre outros), somando 2,6 bilhões de downloads semanais.

Celeiro Dev
10 de setembro de 2025
7 min de leitura
Ataque de Supply Chain no npm (Set/2025)

🚨 Ataque de Supply Chain no npm (Set/2025)

O maior ataque já registrado ao npm comprometeu 18 pacotes populares (chalk, debug, ansi-styles, duckdb, entre outros), somando 2,6 bilhões de downloads semanais.

Esse incidente expõe milhões de desenvolvedores e empresas a riscos imediatos de comprometimento de aplicações, principalmente via dependências transitivas (pacotes de pacotes).


⚡ O que aconteceu?

Um mantenedor legítimo caiu em golpe de phishing, permitindo que hackers publicassem versões maliciosas.

Os pacotes infectados monitoravam transações em carteiras Web3 (Ethereum, BTC, Solana).

A escala é absurda: o ataque representa 207 vezes o volume semanal do Next.js e 61 vezes o do React.

📌 Importante:

Josh Junon → mantenedor de pacotes como debug e chalk, foi a vítima do phishing.

Guillermo Rauch → CEO da Vercel e criador do Next.js, relatou que sua equipe recebeu a mesma tentativa de phishing, mas não caiu no golpe.

Como verificar agora

1. Auditoria rápida

bash
npm ls debug@4.4.2 chalk@5.6.1 ansi-styles@6.2.2 duckdb@1.3.3

Se houver saída, sua aplicação usa uma versão comprometida.

2. Script celeiro.dev (auditoria local) - SUGESTÃO

📌 Para que serve

Este script deve ser usado em um repositório local.
Ele varre package-lock.json, yarn.lock, pnpm-lock.yaml e package.json, além de buscar IoCs no código-fonte.
O resultado é um CSV com os pacotes e arquivos comprometidos encontrados.

bash
#!/usr/bin/env bash
set -euo pipefail   # Modo estrito: encerra ao menor erro, evita variáveis não definidas

ROOT="${1:-.}"      # Diretório alvo (padrão: diretório atual)
FOUND=0             # Flag de achados (0 = limpo, 1 = comprometido)
OUT="${2:-scan-npm-supplychain-2025-09.csv}"  # Nome do relatório CSV de saída

# Lista de pacotes@versão maliciosos identificados no ataque de Set/2025
read -r -d '' MALICIOUS <<'EOF'
debug@4.4.2
chalk@5.6.1
ansi-styles@6.2.2
ansi-regex@6.2.1
supports-color@10.2.1
wrap-ansi@9.0.1
slice-ansi@7.1.1
strip-ansi@7.1.1
has-ansi@6.0.1
chalk-template@1.1.1
supports-hyperlinks@4.1.1
color@5.0.1
color-convert@3.1.1
color-string@2.1.1
color-name@2.0.1
backslash@0.2.1
is-arrayish@0.3.3
simple-swizzle@0.2.3
error-ex@1.3.3
duckdb@1.3.3
@duckdb/node-api@1.3.3
@duckdb/node-bindings@1.3.3
@duckdb/duckdb-wasm@1.29.2
EOF

# Indicadores de Compromisso (IoCs) encontrados dentro do código malicioso
IOC_REGEX='checkethereumw|newdlocal|websocket-api2\.publicvm\.com'

echo "path,type,match" > "$OUT"   # Cabeçalho do CSV de saída

# Funções que verificam lockfiles, package.json e IoCs...
# (mesmo conteúdo já explicado acima)

📊 Saída: scan-npm-supplychain-2025-09.csv listando lockfiles, package.json ou IoCs encontrados. 🔴 Código de saída 2 = indicadores encontrados.

IMPORTANTE: Se você tem líder e/ou equipe, converse antes de seguir com o procedimento.


3. Script celeiro.dev (auditoria organizacional via GitHub) - SUGESTÃO

📌 Para que serve

Este script deve ser usado em uma organização do GitHub.
Ele lista todos os repositórios com o gh (GitHub CLI), clona cada repo em paralelo e executa o scanner local.
Ideal para times com dezenas ou centenas de projetos.

bash
#!/usr/bin/env bash
set -euo pipefail

# Uso: ./scan-org-npm-supplychain-2025-09.sh <ORG>
ORG="${1:?Uso: $0 <ORG>}"
BASE_WORK="${BASE_WORK:-/tmp/scan-org-npm-$$}"

mkdir -p "$BASE_WORK"
echo "[i] Workspace: $BASE_WORK"

SCANNER="security/npm-2025-09/tools/scan-npm-supplychain-2025-09.sh"

# Lista até 200 repositórios da organização usando GitHub CLI
mapfile -t REPOS < <(gh repo list "$ORG" --limit 200 --json sshUrl -q '.[].sshUrl')

echo "[i] Total de repos: ${#REPOS[@]}"

process_repo() {
  local repo_ssh="$1"
  local reponame="${repo_ssh##*/}"; reponame="${reponame%.git}"
  local workdir="$BASE_WORK/$reponame"

  echo "[i] Clonando $reponame"
  git clone --depth 1 "$repo_ssh" "$workdir" >/dev/null 2>&1 || { echo "[!] Falha clone $reponame"; return 0; }

  local csv="$workdir/scan-npm-supplychain-2025-09.csv"
  (cd "$workdir" && "$SCANNER" . "$csv") || status=$? || true
  status=${status:-0}

  if [[ "$status" -eq 2 ]]; then
    echo "[!] Indicadores encontrados em $reponame"
    # Aqui pode-se abrir issue automática usando GitHub CLI
  else
    echo "[i] Sem indicadores em $reponame"
  fi

  rm -rf "$workdir"
}

export -f process_repo
export BASE_WORK SCANNER

# Executa em paralelo se o comando 'parallel' existir
if command -v parallel >/dev/null 2>&1; then
  printf '%s\n' "${REPOS[@]}" | parallel -j 4 process_repo {}
else
  for r in "${REPOS[@]}"; do process_repo "$r"; done
fi

echo "[✓] Finalizado."

IMPORTANTE: Se você tem líder e/ou equipe, converse antes de seguir com o procedimento.


O que fazer se encontrou algo

Limpe caches:

npm cache clean --force

Recrie dependências:

rm -rf node_modules package-lock.json && npm ci

Rotacione segredos de pipelines.

Reconstrua e publique artefatos confiáveis.

IMPORTANTE: Se você tem líder e/ou equipe, converse antes de seguir com o procedimento.


🔮 Até o momento, como se proteger - SUGESTÃO

Sempre use npm ci em CI/CD.

Bloqueie versões maliciosas em proxy interno.

Implemente SCA/SBOM (Syft, CycloneDX, Semgrep).

Adote assinatura/verificação de pacotes (Sigstore/cosign).

Treine mantenedores contra phishing.


⚠️ Observação crítica

Se você faz parte de uma equipe, converse imediatamente com colegas de segurança.
Se você é a própria equipe mas depende de terceirizados, discuta o tema com eles urgente e registre oficialmente (e-mails, atas, contratos).


Fontes:

FonteConteúdo
TabNewsNotícia detalhada em português sobre o ataque e volumes de downloads
DesbugadosReflexão sobre confiança digital no ecossistema JavaScript
Dark ReadingReportagem internacional sobre o ataque e impacto em 18 pacotes
CSO OnlineCobertura técnica, phishing de 2FA e bilhões de downloads afetados
Bleeping ComputerDetalhes sobre phishing e impacto global no ecossistema npm
Vercel (Blog)Resposta oficial da Vercel ao ataque e medidas adotadas
Aikido SecurityAnálise técnica e explicação do payload voltado a Web3
SemgrepRegras de detecção e recomendações de mitigação

celeiro.dev – Um Celeiro de Ideias

Gostou da notícia? 🎉

Sua opinião é importante para nós! Interaja com o conteúdo:

📢 Compartilhe com seus colegas:

Celeiro.dev Logo

Não perca as próximas notícias!

Receba conteúdo exclusivo sobre segurança da informação, tutoriais práticos e as últimas tendências em tecnologia.

Conteúdo semanal

💡 Sem spam. Cancele quando quiser. Seus dados estão seguros conosco.

Sistema de Comentários

Em breve você poderá comentar e discutir sobre as notícias!

Funcionalidade em desenvolvimento

Continue Explorando

Descubra mais conteúdos sobre Segurança da Informação e outros temas relacionados.

Ver todas as notícias

Notícias Relacionadas