
layerleak – o Scanner de Segredos do Docker Hub
Layerleak é um scanner de segredos em imagens OCI somente leitura. Ele resolve referências públicas de imagens sem um daemon Docker, verifica o conteúdo baixado em relação aos digests OCI, reconstrói o estado das camadas, inspeciona artefatos excluídos e metadados da imagem, e retorna descobertas redigidas e ricas em proveniência.
Ele suporta Docker Hub, GHCR, Quay, GCR, MCR, Amazon ECR Public e outros registries compatíveis com OCI. Os resultados podem ser salvos como JSON e persistidos no PostgreSQL para a API incluída.
Esta árvore de desenvolvimento documenta a linha 3.0.0 no caminho do módulo github.com/brumbelow/layerleak/v3. O comando de release candidate mostrado abaixo só se torna instalável depois que essa tag exata for publicada. Os rótulos 3.0.0 no changelog e no documento OpenAPI são intencionalmente congelados para que um release candidate aceito possa ser promovido a partir do mesmo commit de origem.
O Layerleak escaneia conteúdo de imagem não confiável, portanto seus padrões são intencionalmente limitados e falham de forma segura:
partial ou failed, nunca como uma varredura limpa.O Layerleak não verifica se uma credencial detectada está ativa. A API não possui modelo de autorização: ela é aberta por padrão, e a verificação opcional de token compartilhado LAYERLEAK_API_BEARER_TOKENS é defesa em profundidade para os caminhos /api/, não controle de acesso. Exponha-a apenas em uma rede confiável ou atrás de um gateway autenticado de qualquer forma.
O Layerleak requer Go 1.27.1 ou mais recente.```bash go install github.com/brumbelow/layerleak/v3@latest layerleak --version layerleak --help
O caminho do módulo `/v3` é o alvo de instalação canónico; o binário instalado
continua a chamar-se `layerleak`. Fixe uma versão estável ou um release candidate
explicitamente quando a reprodutibilidade for importante:```bash
go install github.com/brumbelow/layerleak/[email protected]
go install github.com/brumbelow/layerleak/[email protected]
@latest no caminho /v3 seleciona a versão v3 publicada mais alta. O Go
exclui pré-lançamentos do @latest assim que existe uma versão estável, então enquanto apenas
release candidates são publicados, @latest resolve para o candidato mais recente.
O caminho raiz github.com/brumbelow/layerleak sem /v3 permanece em v1.0.0
para sempre; sempre inclua /v3. Builds de checkout reportam uma versão de desenvolvimento
derivada do VCS, incluindo um marcador de worktree sujo, ou dev sem informações de VCS.
Binários instalados a partir de release reportam a versão do módulo resolvida através de
layerleak --version.
Cada release também anexa arquivos CLI pré-compilados, então nenhum toolchain Go é
necessário: layerleak_<version>_<os>_<arch>.tar.gz para linux e darwin em
amd64 e arm64 (contendo layerleak, LICENSE e
THIRD_PARTY_NOTICES.md) e layerleak_<version>_windows_amd64.zip
(layerleak.exe). Cada release carrega um layerleak_<version>_checksums.txt
assinado sem chave pelo workflow de release
(layerleak_<version>_checksums.txt.sigstore.json) e uma atestação de proveniência de build
para cada arquivo. Verifique antes de executar:```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
A assinatura prova que o arquivo de checksums veio do fluxo de trabalho de release deste repositório em `main`, o checksum vincula o arquivo ao referido arquivo, e a atestação vincula independentemente o arquivo à execução do fluxo de trabalho que o construiu.
`release-manifest.json` na release lista cada arquivo e o digest do binário dentro dele. Uma release estável reconstrói o commit da release candidate aceita com a string de versão estável e recusa-se a publicar a menos que a reconstrução reproduza os binários da candidate byte a byte, pelo que `layerleak version` reporta exatamente a tag que descarregou.
### GitHub Action