logo hsb.horse
← Retour au blog

Blog

Analyser les dépendances incluses dans un artefact de build

Les binaires compilés avec Go embarquent des informations sur les dépendances utilisées et les paramètres de build.

Publié: Mis à jour:

Les binaires compilés avec Go embarquent des informations sur les dépendances utilisées et les paramètres de build. Avec la commande go version -m, vous pouvez extraire ces informations directement depuis le binaire, même sans code source.

Cas d’usage

  • Vérifier les dépendances d’un binaire en production
  • Contrôler la présence éventuelle de bibliothèques vulnérables
  • Vérifier les paramètres de build (GOOS, GOARCH, etc.)
  • Identifier le commit à l’origine du binaire

Utilisation

Terminal window
go version -m <chemin-du-binaire>

Lire la sortie

La sortie est divisée en plusieurs sections.

PréfixeSignification
pathChemin d’import du module
modModule principal. (devel) indique un build local
depModule de dépendance avec version et checksum
buildParamètres de build et informations VCS

Principaux éléments de la section build :

CléDescription
-compilerCompilateur utilisé (généralement gc)
CGO_ENABLEDActivation/désactivation de CGO
GOOS / GOARCHOS / architecture cible
vcs.revisionHash du commit source
vcs.timeHorodatage du commit
vcs.modifiedIndique s’il y avait des changements non commités

Exemple d’exécution

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

Dans cet exemple, le binaire a été compilé pour Linux/amd64, avec CGO désactivé, à partir du commit 39792fd..., et avec des changements non commités (vcs.modified=true).

Liens connexes

  • go version - vérifier la version de Go
  • go list -m all - lister les dépendances depuis le code source