Pular para o conteúdo principal

📂 Controlo de Registos e Origem de Pacotes

🌟 Objetivo

Assegurar que todas as dependências de terceiros são obtidas a partir de origens controladas, auditadas e confiáveis, minimizando o risco de ataques via registos públicos ou fontes não verificadas.

⚠️ O simples ato de instalar um pacote de um repositório público pode executar código malicioso sem qualquer alerta. Este controlo é crítico.


🔢 Conceito de repositório confiável

Um repositório é considerado confiável quando:

  • É interno ou proxyizado, controlado pela organização
  • Permite auditar o histórico de pacotes utilizados
  • Implementa políticas de replicação, caching e quarentena
  • Evita acesso direto a fontes externas sem validação

🏠 Opções técnicas para registo interno

TecnologiaLinguagens / FormatosCaracterísticas principais
Verdaccionpm / Yarn (Node.js)Docker-ready, simples, caching + fallback controlado
Sonatype NexusMaven, npm, PyPI, DockerEnterprise-ready, RBAC, auditoria e integração CI
JFrog ArtifactoryMúltiplos ecosistemasEscalável, policies de retenção e replicadores
GitHub Packagesnpm, Maven, ContainerIntegração com GitHub Actions

🚀 Estratégia de fallback controlado

  1. O repositório tenta obter o pacote localmente.
  2. Se não existir, tenta fonte externa sob validação de política (whitelist de domínios ou GPG keys).
  3. O pacote é cacheado localmente para builds futuros.
  4. Todos os acessos são auditados e rastreados.

Esta abordagem reduz drasticamente a exposição a pacotes comprometidos.


📝 Recomendações de configuração

  • Desativar --registry externo por defeito
  • Fornecer .npmrc, .pip.conf, settings.xml com origem predefinida
  • Proibir instalação com latest ou sem versionamento fixo
  • Validar hashes ou assinaturas de pacotes (quando suportado)

✅ Benefícios adicionais

  • Reprodutibilidade dos builds
  • Menor dependência de disponibilidade externa (resiliência)
  • Tempo de build mais rápido com caching local
  • Conformidade com exigências de auditoria (CRA, NIS2, ISO 27001)

🔗 Ligações com outros ficheiros

DocumentoLigação com registos de origem
06-risco-supply-chain.mdMitiga typosquatting e downloads de origem desconhecida
04-integracao-ci-cd.mdPipelines devem usar registos confiáveis apenas
03-governanca-libs-terceiros.mdDefine quem aprova pacotes e quais podem ser replicados

🔒 O uso de repositórios internos com fallback controlado é uma medida de segurança estrutural, não opcional. Deve ser parte da baseline de qualquer pipeline seguro.