logo hsb.horse
← Zur Blog-Übersicht

Blog

Abhängigkeiten in Build-Artefakten analysieren

In mit Go gebauten Binärdateien sind Informationen zu verwendeten Abhängigkeiten und Build-Einstellungen eingebettet.

Veröffentlicht: Aktualisiert:

In mit Go gebauten Binärdateien sind Informationen zu verwendeten Abhängigkeiten und Build-Einstellungen eingebettet. Mit dem Befehl go version -m lassen sich diese Informationen auch ohne Quellcode direkt aus dem Binary auslesen.

Einsatzfälle

  • Abhängigkeiten eines in Produktion laufenden Binaries prüfen
  • Prüfen, ob Bibliotheken mit bekannten Sicherheitslücken enthalten sind
  • Build-Einstellungen wie GOOS und GOARCH verifizieren
  • Nachvollziehen, aus welchem Commit ein Binary gebaut wurde

Verwendung

Terminal window
go version -m <binary-pfad>

Ausgabe verstehen

Die Ausgabe ist in mehrere Abschnitte unterteilt.

PräfixBedeutung
pathImport-Pfad des Moduls
modHauptmodul. (devel) bedeutet lokaler Build
depAbhängigkeitsmodul inkl. Version und Checksumme
buildBuild-Einstellungen und VCS-Informationen

Wichtige Felder im Abschnitt build:

SchlüsselBeschreibung
-compilerVerwendeter Compiler (normalerweise gc)
CGO_ENABLEDOb CGO aktiviert ist
GOOS / GOARCHZiel-OS / Ziel-Architektur
vcs.revisionCommit-Hash, aus dem gebaut wurde
vcs.timeZeitstempel des Commits
vcs.modifiedOb beim Build uncommittete Änderungen vorlagen

Ausführungsbeispiel

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

In diesem Beispiel wurde für Linux/amd64 gebaut, CGO war deaktiviert und der Build stammt aus Commit 39792fd..., allerdings mit uncommitteten Änderungen (vcs.modified=true).

Verwandt

  • go version - Go-Version prüfen
  • go list -m all - Abhängigkeiten aus dem Quellcode auflisten