
layerleak el escáner de secretos de Docker Hub
Layerleak es un escáner de secretos en imágenes OCI de solo lectura. Resuelve referencias de imágenes públicas sin necesidad de un demonio Docker, verifica el contenido descargado contra los digests OCI, reconstruye el estado de las capas, inspecciona artefactos eliminados y metadatos de la imagen, y devuelve hallazgos redactados y con información de procedencia.
Es compatible con Docker Hub, GHCR, Quay, GCR, MCR, Amazon ECR Public y otros registros compatibles con OCI. Los resultados se pueden guardar como JSON y persistir en PostgreSQL para la API incluida.
Este árbol de desarrollo documenta la línea 3.0.0 en la ruta del módulo
github.com/brumbelow/layerleak/v3. El comando de release candidate que se
muestra a continuación solo se podrá instalar después de que se publique esa
etiqueta exacta. Las etiquetas 3.0.0 en el registro de cambios y el documento
OpenAPI están congeladas intencionalmente para que un release candidate
aceptado pueda promoverse desde el mismo commit de origen.
Layerleak escanea contenido de imágenes no confiables, por lo que sus valores predeterminados están intencionalmente acotados y fallan de forma segura:
partial o failed, nunca como un escaneo limpio.Layerleak no verifica si una credencial detectada está activa. La API no tiene
modelo de autorización: está abierta de forma predeterminada, y la comprobación
opcional de token compartido LAYERLEAK_API_BEARER_TOKENS es una defensa en
profundidad para las rutas /api/, no un control de acceso. Expóngala solo en
una red confiable o detrás de una puerta de enlace autenticada en cualquier
caso.
Layerleak requiere Go 1.27.1 o posterior.```bash go install github.com/brumbelow/layerleak/v3@latest layerleak --version layerleak --help
La ruta del módulo `/v3` es el objetivo de instalación canónico; el binario instalado
sigue llamándose `layerleak`. Fija explícitamente una versión estable o un release candidate cuando
la reproducibilidad sea importante:```bash
go install github.com/brumbelow/layerleak/[email protected]
go install github.com/brumbelow/layerleak/[email protected]
@latest en la ruta /v3 selecciona la versión v3 publicada más alta. Go
excluye las versiones preliminares de @latest una vez que existe una versión estable, por lo que mientras solo
se publican candidatas de versión, @latest se resuelve a la candidata más reciente.
La ruta raíz github.com/brumbelow/layerleak sin /v3 permanece en v1.0.0
para siempre; incluye siempre /v3. Las compilaciones desde checkout reportan una versión de desarrollo
derivada del VCS, incluido un marcador de árbol de trabajo con cambios sin confirmar, o dev sin información del VCS.
Los binarios instalados desde una release reportan la versión resuelta del módulo mediante
layerleak --version.
Cada release también adjunta archivos CLI precompilados, por lo que no se
necesita un toolchain de Go: layerleak_<version>_<os>_<arch>.tar.gz para linux y darwin en
amd64 y arm64 (que contienen layerleak, LICENSE y
THIRD_PARTY_NOTICES.md) y layerleak_<version>_windows_amd64.zip
(layerleak.exe). Cada release incluye un layerleak_<version>_checksums.txt
firmado sin clave por el flujo de trabajo de release
(layerleak_<version>_checksums.txt.sigstore.json) y una atestación de procedencia de compilación
para cada archivo. Verifica antes de ejecutar:```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 demuestra que el archivo de sumas de verificación proviene del flujo de trabajo de publicación de este repositorio en `main`, la suma de verificación vincula el archivo con ese fichero, y la atestación vincula de forma independiente el archivo con la ejecución del flujo de trabajo que lo construyó. `release-manifest.json` en la publicación enumera cada archivo y el digest del binario que contiene. Una publicación estable reconstruye el commit de la versión candidata aceptada con la cadena de versión estable y se niega a publicar a menos que la reconstrucción reproduzca los binarios de la candidata byte a byte, por lo que `layerleak version` informa exactamente de la etiqueta que descargaste.
### GitHub Action