Security Features
Features de segurança em Go Modules - GOVCS, GOAUTH, e melhores práticas
Introdução
O sistema de módulos do Go incorpora diversas camadas de segurança para proteger contra supply chain ataques, código malicioso e comprometimento de dependências.
Camadas de segurança
1. Checksum Database (Go 1.13+)
Garante integridade global dos módulos.
Como funciona:
Todos os módulos públicos têm checksums em
sum.golang.org.Detecta alterações maliciosas em módulos.
Previne ataques direcionados.
Ver capítulo completo: Checksum Database
2. GOVCS (Go 1.16+)
Controla quais sistemas de controle de versão o Go pode usar.
Por quê?: Previne que código malicioso em go.mod execute comandos arbitrários via VCS inseguros.
Configuração GOVCS
Regras de padrão
VCS suportados
git
git
✅ Seguro
hg
hg
✅ Seguro
svn
svn
⚠️ Menos seguro
bzr
bzr
⚠️ Menos seguro
fossil
fossil
⚠️ Menos seguro
3. GOAUTH (Go 1.24+)
Sistema de autenticação para módulos privados.
O que resolve:
Autenticação em repositórios privados
Tokens de acesso gerenciados centralmente
Suporte a múltiplos provedores
Configuração
Provedores suportados
git
git:echo username=token:$GITHUB_TOKEN
netrc
netrc (usa ~/.netrc)
command
command:/caminho/para/script
off
off (desabilita auth)
Exemplo prático
4. GOPRIVATE (Go 1.13+)
Define módulos privados que não devem usar proxy ou checksum database.
Implica em:
GONOPROXY=$GOPRIVATEGONOSUMDB=$GOPRIVATE
Quando usar:
✅ Repositórios privados da empresa
✅ Código proprietário
✅ Módulos internos
Melhores Práticas de Segurança
✅ Verificação de Dependências
1. Auditar Dependências
2. Usar Ferramentas de Segurança
✅ Versionamento Seguro
✅ Módulos Privados Seguros
✅ Verificar Checksums
Proteção Contra Ataques
1. Supply Chain Attacks
Proteções:
✅ Checksum database detecta alterações
✅
go.sumgarante consistência✅
retractmarca versões comprometidas
Exemplo:
2. Dependency Confusion
Proteções:
✅
GOPRIVATEprevine vazamento de nomes✅ Proxies privados tem precedência
Configuração:
3. Typosquatting
Proteções:
⚠️ Não há proteção automática (em desenvolvimento)
Mitigação:
✅ Revisar
go.modem PRs✅ Usar ferramentas de linting
✅ Verificar checksums
4. Code Injection via VCS
Proteções:
✅
GOVCSlimita VCS permitidos
Exemplo seguro:
CI/CD Seguro
GitHub Actions
Variáveis de Ambiente Seguras
Checklist de Segurança
Setup Inicial
Durante Desenvolvimento
Antes de Release
Ferramentas de Segurança
govulncheck (Oficial)
nancy (Sonatype)
gosec (Security Scanner)
Recursos Adicionais
Conclusão
Segurança em Go Modules é multi-camadas:
🔒 Checksum Database - Integridade global
🔐 GOVCS - Controle de VCS
🔑 GOAUTH - Autenticação moderna
🛡️ GOPRIVATE - Proteção de privados
✅ go mod verify - Verificação local
Segurança é responsabilidade compartilhada! Use todas as ferramentas disponíveis e mantenha dependências atualizadas.
Last updated