
layerleak – der Docker Hub Secret Scanner
Layerleak ist ein schreibgeschützter OCI-Image-Secret-Scanner. Er löst öffentliche Image-Referenzen ohne Docker-Daemon auf, verifiziert heruntergeladene Inhalte anhand von OCI-Digests, rekonstruiert den Layer-Zustand, untersucht gelöschte Artefakte und Image-Metadaten und liefert redigierte, herkunftsreiche Befunde.
Er unterstützt Docker Hub, GHCR, Quay, GCR, MCR, Amazon ECR Public und andere OCI-kompatible Registries. Ergebnisse können als JSON gespeichert und für die mitgelieferte API in PostgreSQL persistiert werden.
Dieser Entwicklungszweig dokumentiert die 3.0.0-Linie auf dem Modulpfad github.com/brumbelow/layerleak/v3. Der unten gezeigte Release-Candidate-Befehl wird erst installierbar, nachdem genau dieser Tag veröffentlicht wurde. Die 3.0.0-Bezeichnungen im Changelog und im OpenAPI-Dokument sind absichtlich eingefroren, damit ein akzeptierter Release Candidate aus demselben Quell-Commit befördert werden kann.
Layerleak scannt nicht vertrauenswürdige Image-Inhalte, daher sind seine Standardeinstellungen absichtlich begrenzt und fail-closed:
partial oder failed gemeldet, niemals als sauberer Scan.Layerleak überprüft nicht, ob ein erkanntes Credential aktiv ist. Die API hat kein Autorisierungsmodell: Sie ist standardmäßig offen, und die optionale LAYERLEAK_API_BEARER_TOKENS-Shared-Token-Prüfung ist Defense in Depth für die /api/-Pfade, keine Zugriffskontrolle. Stellen Sie sie in jedem Fall nur in einem vertrauenswürdigen Netzwerk oder hinter einem authentifizierten Gateway bereit.
Layerleak erfordert Go 1.27.1 oder neuer.```bash go install github.com/brumbelow/layerleak/v3@latest layerleak --version layerleak --help
Der Modulpfad `/v3` ist das kanonische Installationsziel; die installierte Binärdatei
heißt weiterhin `layerleak`. Pinnen Sie explizit eine stabile Version oder einen Release Candidate, wenn
Reproduzierbarkeit wichtig ist:```bash
go install github.com/brumbelow/layerleak/[email protected]
go install github.com/brumbelow/layerleak/[email protected]
@latest im Pfad /v3 wählt die höchste veröffentlichte v3-Version aus. Go
schließt Vorabversionen von @latest aus, sobald eine stabile Version existiert, sodass @latest,
solange nur Release Candidates veröffentlicht sind, auf den neuesten Candidate verweist.
Der Root-Pfad github.com/brumbelow/layerleak ohne /v3 bleibt für immer bei v1.0.0;
fügen Sie immer /v3 hinzu. Checkout-Builds melden eine vom VCS abgeleitete Entwicklungs-
version, einschließlich einer Dirty-Worktree-Markierung, oder dev ohne VCS-Informationen.
Über Releases installierte Binärdateien melden die aufgelöste Modulversion über
layerleak --version.
Jedes Release hängt außerdem vorgebaute CLI-Archive an, sodass keine Go-Toolchain
benötigt wird: layerleak_<version>_<os>_<arch>.tar.gz für linux und darwin auf
amd64 und arm64 (enthält layerleak, LICENSE und
THIRD_PARTY_NOTICES.md) sowie layerleak_<version>_windows_amd64.zip
(layerleak.exe). Jedes Release enthält eine layerleak_<version>_checksums.txt,
die schlüssellos vom Release-Workflow signiert wird
(layerleak_<version>_checksums.txt.sigstore.json), und eine Build-Provenance-
Attestierung für jedes Archiv. Verifizieren Sie, bevor Sie ausführen:```bash
version=v3.0.0
archive="layerleak_${version}linux_amd64.tar.gz"
checksums="layerleak${version}_checksums.txt"
base="https://github.com/brumbelow/layerleak/releases/download/${version}"
curl --fail --location --proto '=https' --tlsv1.2 --remote-name-all
"${base}/${archive}" "${base}/${checksums}" "${base}/${checksums}.sigstore.json"
sha256sum --check --ignore-missing "${checksums}"
cosign verify-blob
--bundle "${checksums}.sigstore.json"
--certificate-identity 'https://github.com/Brumbelow/layerleak/.github/workflows/container-release.yml@refs/heads/main'
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com'
"${checksums}"
gh attestation verify "${archive}" --repo Brumbelow/layerleak
--signer-workflow Brumbelow/layerleak/.github/workflows/container-release.yml
--source-ref refs/heads/main --deny-self-hosted-runners
tar -xzf "${archive}" layerleak ./layerleak version
Die Signatur beweist, dass die Prüfsummendatei aus dem Release-Workflow
dieses Repositorys auf `main` stammt, die Prüfsumme bindet das Archiv an diese
Datei, und die Attestierung bindet das Archiv unabhängig an den Workflow-Lauf,
der es erstellt hat. `release-manifest.json` im Release listet jedes Archiv und
den Digest der darin enthaltenen Binärdatei auf. Ein stabiles Release baut den
Commit des akzeptierten Release-Kandidaten mit der stabilen Versionszeichenfolge
neu und verweigert die Veröffentlichung, es sei denn, der Neubau reproduziert
die Binärdateien des Kandidaten Byte für Byte, sodass `layerleak version` genau
das Tag meldet, das Sie heruntergeladen haben.
### GitHub Action