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.

Go leva segurança a sério! Features como checksum database, GOVCS e GOAUTH trabalham juntas para proteger o seu código.

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

VCS
Comando
Segurança

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

Provedor
Exemplo

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=$GOPRIVATE

  • GONOSUMDB=$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.sum garante consistência

  • retract marca versões comprometidas

Exemplo:

2. Dependency Confusion

Proteções:

  • GOPRIVATE previne 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.mod em PRs

  • ✅ Usar ferramentas de linting

  • ✅ Verificar checksums

4. Code Injection via VCS

Proteções:

  • GOVCS limita 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

Last updated