| name | vps-image-vulnerability-sbom-auditor |
| description | Audita CVE y SBOM de imágenes Docker presentes en un VPS con trivy/grype/syft solo si están instalados, en modo lectura y sin descargar, transmitir ni modificar imágenes ni contenedores ni leer credenciales. |
VPS Image Vulnerability & SBOM Auditor
Usa esta skill cuando el usuario quiera revisar la postura de vulnerabilidades (CVE) y el SBOM de imágenes Docker ya presentes en un VPS autorizado. Confirma host, alcance, baseline de imágenes y ventana de auditoría antes de inspeccionar. Toda la auditoría es read-only y opera exclusivamente sobre imágenes materializadas localmente.
Alcance
Cubre tres actividades, siempre contra imágenes ya presentes en el host:
- Detección de scanners: verifica con
command -v, which o whereis si trivy, grype y/o syft están instalados. Usa solo los existentes; no instala, descarga ni actualiza binarios. Si ninguno existe, reporta INFO: no local scanner available y termina sin escanear.
- CVE de imagen: ejecuta trivy/grype contra la imagen local en modo offline (sin contacto a registries ni descarga de imagen). Trata los hallazgos como evidencia local, no como verificación criptográfica de cadena de suministro.
- SBOM de imagen: ejecuta syft (o trivy SBOM) contra la imagen local, sin transmitirla ni extraer credenciales de registry.
Reglas de seguridad
- No hagas
docker pull, docker push, docker build, docker load, docker save, docker export, docker import, docker commit, docker tag, docker rmi, docker image prune ni docker image rm.
- No mutas contenedores: sin
docker run, docker exec, docker create, docker start, docker stop, docker restart, docker rm, docker kill, docker pause, docker unpause, docker update ni equivalentes de docker compose.
- No transmites imágenes ni contactas registries: sin
skopeo copy/sync/inspect, crane copy/push/manifest/config, oras push/copy, ctr image pull/push, docker manifest inspect, docker buildx imagetools inspect. Audita solo imágenes locales; no resuelves refs remotos.
- No escanes imágenes remotas: prohíbe
trivy server, trivy client, trivy repo, trivy image --remote, grype registry://, syft registry://. Escanea solo referencias locales resueltas por digest.
- No leas credenciales: sin
docker login, cat .docker/config.json, ~/.docker/config*, password=, token=, api_key=, secret=, headers Authorization/Bearer. Reporta presencia de DOCKER_CONFIG o .docker/config.json (nombre), nunca el contenido.
- Ejecuta scanners offline cuando exista la opción:
trivy image --skip-db-update --skip-java-db-update --offline-scan <image>; si la DB de CVE no existe local, reporta WARNING: vulnerability DB not present en lugar de descargarla.
- No firmas, retagueas, eliminas, reemplazas ni reconstruyes imágenes; no editas
.env, Compose, manifests ni políticas durante la auditoría.
- Redacta cualquier token, digest de registry privado si está marcado sensible, y separa evidencia observada de remediación propuesta.
Flujo
- Confirma el host/alias SSH, usuario y alcance con el plugin VPS SSH Manager; lista imágenes presentes con
docker image ls y resuelve RepoDigests con docker inspect (sin hacer pull ni contactar registry).
- Detecta scanners disponibles:
command -v trivy grype syft y registra cuáles existen. No intenta descargarlos ni instalarlos.
- Para cada imagen local elegida, resuelve digest local y arquitectura con
docker inspect y docker image history --no-trunc; registra el artifact como evidencia.
- CVE: si
trivy existe, ejecuta trivy image --skip-db-update --skip-java-db-update --offline-scan -f json <image>; si grype existe, ejecuta grype <image> -o json. Prefiere trivy si ambos existen; no los dupliques sin necesidad. Si la DB CVE no está local, reporta WARNING y no descargues.
- SBOM: si
syft existe, ejecuta syft <image> -o json; si solo trivy existe, usa trivy image --format cyclonedx --scanners sbom --skip-db-update --offline-scan <image>. No transmitas la imagen.
- Correlaciona hallazgos: paquete, versión,
CVE/ID, severidad, fixedVersion, path y capa. No consideres los resultados como prueba criptográfica de autenticidad.
- Resume hallazgos por imagen con timestamp UTC, imagen, digest local, scanner usado, severidad, conteos, controles y remediación propuesta. Para remediar, genera un plan separado y pide confirmación explícita; no apliques fixes desde esta skill.
Comandos permitidos (ejemplos)
command -v trivy grype syft || true
which trivy grype syft
docker image ls --format '{{.Repository}}:{{.Tag}} {{.ID}} {{.Digest}}'
docker inspect --format '{{.Id}} {{.RepoDigests}} {{.Architecture}} {{.Created}}' alpine:3.20
docker image history --no-trunc alpine:3.20
trivy image --skip-db-update --skip-java-db-update --offline-scan -f json alpine:3.20
grype alpine:3.20 -o json
syft alpine:3.20 -o json
trivy image --format cyclonedx --scanners sbom --skip-db-update --offline-scan alpine:3.20
No ejecutes trivy repo, trivy server, grype registry://, syft registry://, docker manifest inspect, skopeo inspect, ni ningún comando que contacte un registry para transferir imágenes, leer manifiestos remotos o autenticarse.
Validación
Ejecuta python scripts/validate_image_vulnerability_scope.py --command-file <archivo> cuando se prepare una lista de comandos. Debe terminar con PASSED; cualquier mutación de Docker, contacto a registry, transmisión de imagen, lectura de credenciales o scanner remoto queda bloqueado.