logo hsb.horse
← Voltar para o índice do blog

Blog

Analisar dependências incluídas em artefatos de build

Binários compilados com Go incorporam metadados sobre dependências e configurações de build.

Publicado: Atualizado:

Binários compilados com Go incorporam metadados sobre dependências e configurações de build. Com o comando go version -m, é possível extrair essas informações diretamente de um binário, mesmo sem o código-fonte.

Casos de uso

  • Verificar dependências incluídas em um binário rodando em produção
  • Confirmar se bibliotecas vulneráveis estão incluídas
  • Validar configurações de build como GOOS e GOARCH
  • Identificar de qual commit um binário foi gerado

Uso

Terminal window
go version -m <caminho-do-binario>

Como ler a saída

A saída é dividida em várias seções.

PrefixoSignificado
pathCaminho de importação do módulo
modMódulo principal. (devel) indica build local/de desenvolvimento
depMódulo de dependência com versão e checksum
buildConfigurações de build e informações de VCS

Chaves importantes na seção build:

ChaveDescrição
-compilerCompilador usado (normalmente gc)
CGO_ENABLEDSe o CGO está habilitado
GOOS / GOARCHSO alvo / arquitetura alvo
vcs.revisionHash do commit usado no build
vcs.timeTimestamp do commit
vcs.modifiedSe havia mudanças não commitadas no momento do build

Exemplo

Terminal window
go version -m ./output
./output: go1.19
path github.com/mktbsh/output
mod github.com/mktbsh/output (devel)
dep github.com/aws/aws-lambda-go v1.34.1 h1:M3a/uFYBjii+...
dep github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6...
...
build -compiler=gc
build CGO_ENABLED=0
build GOARCH=amd64
build GOOS=linux
build vcs.revision=39792fdacec6dc82b3f6335cb6b921c138f37625
build vcs.time=2022-08-18T08:50:08Z
build vcs.modified=true

Neste exemplo, o binário foi compilado para Linux/amd64, com CGO desabilitado, a partir do commit 39792fd..., com alterações não commitadas presentes (vcs.modified=true).

Relacionado

  • go version - Verificar a versão do Go
  • go list -m all - Listar dependências a partir do código-fonte