Empresa adota proxy de registry que segura novos pacotes do npm e do PyPI por uma semana
Aprofundamento CEVIU
Aprofundamento
O autor colocou um proxy entre a empresa e os registries públicos e fixou uma regra: versão nova de npm ou PyPI espera sete dias antes de chegar a qualquer pessoa. Na prática, pacotes pub esperam três dias, Maven e Go só passam por cache, e algumas coisas nem passam pelo gate. A ferramenta é o git-pkgs/proxy, um binário em Go (v0.10, GPL-3, sem login próprio, por isso há um serviço de tokens e login Google na frente). Ele traz cooldown e blocklist embutidos.
A escolha dos sete dias vem de cinco ataques de 2026 com linha do tempo conhecida. Axios 1.14.1 ficou no ar cerca de três horas, lightning 2.6.2 e 2.6.3 no PyPI, 42 minutos, e litellm 1.107.0, 1 hora e 43 minutos. Todas as versões foram retiradas em menos de cinco horas. O estrago acontece antes: a Huntress viu a primeira infecção por axios 89 segundos após a publicação. Build assinado também não protege, já que as versões maliciosas de TanStack e keyv saíram dos próprios workflows de release, com provenance válido.
Nos 12 dias de 20 de outubro a 1º de novembro, o gate serviu 81.710 downloads de 14 contas e escondeu 6.116 versões das listas por serem novas. Recusou 71 downloads de lockfiles que já fixavam versão jovem demais (vite 8.3.5, rollup 4.65.1, @swc/core 1.16.20, caniuse-lite e electron-to-chromium). A blocklist segue com zero entradas. O log amarra cada download a uma conta, token ou runner, então saber quem instalou algo vira uma consulta no Grafana.
Há arestas. Yarn 1 usa a URL gravada no yarn.lock, o bun.lockb antigo tem URLs do npmjs fixas, uv sync --frozen baixa direto do host de arquivos do PyPI e Poetry precisa de source no pyproject.toml. O pnpm 11 lê PNPM_CONFIG_REGISTRY. O Dependabot precisa de cooldown com default-days: 7, e prereleases podem escapar via npx. Se o gate cair, o CI para. E o cooldown só funciona se alguém notar na semana: o xz-utils levou 34 dias para ser descoberto.
O que mudou
A ideia de esperar uma semana já aparecia na cobertura do CEVIU. Em 5 de março de 2026, o CEVIU noticiou "Gerenciadores de Pacotes Precisam Diminuir o Ritmo", e em 17 de abril de 2026, "Idade Mínima de Release: Uma Defesa Subestimada na Cadeia de Suprimentos", com a recomendação de minimumReleaseAge de 7 dias no gerenciador. Em 28 de julho de 2026, o CEVIU registrou que GitHub e PyPI passaram a adotar defesas temporizadas, com o Dependabot retendo pull requests de atualização por padrão.
O que esta notícia traz de novo é a camada central: em vez de configurar cada gerenciador, um proxy aplica a regra para toda a empresa, com blocklist e log de downloads, e o autor mostra números reais de operação.
Por que isso importa
Para quem cuida de uma base com vários ecossistemas, a leitura é que configuração por repositório deixa buracos (Dockerfile esquecido, notebook de colega). Um ponto único de passagem fecha isso e ainda responde quem instalou o quê. O custo é operacional: lockfiles quebrados, Dependabot alinhado e um gate que vira peça crítica do CI.
Linha do tempo
CEVIU noticia a defesa de esperar cerca de uma semana antes de instalar versões novas.
CEVIU noticia a idade mínima de release como defesa subestimada, com minimumReleaseAge de 7 dias.
GitHub e PyPI anunciam defesas temporizadas, com Dependabot retendo PRs por padrão.
Empresa descreve proxy que segura novos pacotes do npm e do PyPI por sete dias.
Perguntas frequentes
Por que esperar sete dias para instalar pacotes novos?
Nos cinco ataques de 2026 analisados, as versões maliciosas foram retiradas em menos de cinco horas. Uma espera de sete dias cobre essa janela com folga. Um blogger citado na fonte estimou que ela teria bloqueado cerca de 85% de 1.336 pacotes npm sequestrados.
Um proxy é melhor que a configuração de cooldown do gerenciador?
Depende do objetivo. A configuração protege só o repositório onde está, enquanto o proxy é um ponto único para npm, PyPI, pub, Maven e Go. Só ele oferece blocklist e log de quem baixou o quê.
O que acontece com lockfiles que fixam versão recém-publicada?
O gate recusa o download com erro 404 até a versão completar a espera. A saída é configurar o cliente e resolver de novo, ou esperar. Foram 71 casos em 12 dias.
O cooldown protege de qualquer ataque?
Não. Ele só olha datas de publicação e depende de alguém notar o problema dentro da semana. O backdoor do xz-utils levou 34 dias para ser achado, e uma versão envenenada que passe uma semana despercebida entra no dia oito.
Fontes
- brunoj.comfonte original
- Categoria
- CEVIU Web Dev
- Publicado
- 02 de novembro de 2026
- Editoria
- CEVIU Web Dev

