
layerleak lo scanner di segreti di Docker Hub
Layerleak è uno scanner di segreti per immagini OCI in sola lettura. Risolve riferimenti a immagini pubbliche senza un daemon Docker, verifica il contenuto scaricato rispetto ai digest OCI, ricostruisce lo stato dei layer, ispeziona artefatti eliminati e metadati delle immagini, e restituisce risultati redatti e ricchi di provenienza.
Supporta Docker Hub, GHCR, Quay, GCR, MCR, Amazon ECR Public e altri registry compatibili con OCI. I risultati possono essere salvati come JSON e persistiti in PostgreSQL per l'API inclusa.
Questo albero di sviluppo documenta la linea 3.0.0 sul
percorso del modulo github.com/brumbelow/layerleak/v3. Il comando della release candidate
mostrato di seguito diventa installabile solo dopo la pubblicazione di quel tag esatto. Le
etichette 3.0.0 nel changelog e nel documento OpenAPI sono intenzionalmente congelate così
che una release candidate accettata possa essere promossa dallo stesso commit sorgente.
Layerleak analizza contenuto di immagini non attendibile, quindi i suoi valori predefiniti sono intenzionalmente limitati e falliscono in modo sicuro:
partial o failed, mai come una scansione
pulita.Layerleak non verifica se una credenziale rilevata sia attiva. L'API non ha un
modello di autorizzazione: è aperta per impostazione predefinita, e il controllo opt-in
LAYERLEAK_API_BEARER_TOKENS con token condiviso è difesa in profondità per i
percorsi /api/, non controllo degli accessi. Esponila solo su una rete attendibile o
dietro un gateway autenticato in ogni caso.
Layerleak richiede Go 1.27.1 o versioni successive.```bash go install github.com/brumbelow/layerleak/v3@latest layerleak --version layerleak --help
Il percorso del modulo `/v3` è il target di installazione canonico; il binario installato è
comunque denominato `layerleak`. Fissa esplicitamente una versione stabile o una release candidate quando
la riproducibilità è importante:```bash
go install github.com/brumbelow/layerleak/[email protected]
go install github.com/brumbelow/layerleak/[email protected]
@latest sul percorso /v3 seleziona la release v3 pubblicata più alta. Go
esclude le prerelease da @latest una volta che esiste una versione stabile, quindi mentre
vengono pubblicate solo release candidate @latest si risolve alla candidata più recente.
Il percorso radice github.com/brumbelow/layerleak senza /v3 rimane a v1.0.0
per sempre; includi sempre /v3. Le build da checkout riportano una versione di sviluppo
derivata dal VCS, incluso un marcatore di worktree sporco, oppure dev senza informazioni VCS.
I binari installati da release riportano la versione del modulo risolta tramite
layerleak --version.
Ogni release allega anche archivi CLI precompilati, quindi non serve alcun
toolchain Go: layerleak_<version>_<os>_<arch>.tar.gz per linux e darwin su
amd64 e arm64 (contenente layerleak, LICENSE e
THIRD_PARTY_NOTICES.md) e layerleak_<version>_windows_amd64.zip
(layerleak.exe). Ogni release porta un layerleak_<version>_checksums.txt
firmato senza chiave dal workflow di release
(layerleak_<version>_checksums.txt.sigstore.json) e un'attestazione di provenienza
della build per ogni archivio. Verifica prima di eseguire:```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
La firma dimostra che il file dei checksum proviene dal workflow di rilascio di questo repository su `main`, il checksum lega l'archivio a quel file, e l'attestazione lega indipendentemente l'archivio all'esecuzione del workflow che lo ha costruito. `release-manifest.json` nella release elenca ogni archivio e il digest del binario al suo interno. Una release stabile ricostruisce il commit della release candidate accettata con la stringa di versione stabile e rifiuta di pubblicare a meno che la ricostruzione riproduca i binari della candidate byte per byte, quindi `layerleak version` riporta esattamente il tag che hai scaricato.
### GitHub Action