Guías de seguridad
Instalar y usar osv-scanner: encuentra CVE en tus dependencias
osv-scanner es una herramienta gratuita que lee tus lockfiles y revisa tus dependencias en busca de CVE conocidos. Cómo instalarlo, escanear lockfiles o contenedores, integrarlo en CI y cuándo usarlo frente a npm/pnpm audit y Dependabot.
Para: cualquiera que quiera comprobar si las dependencias de su aplicación esconden vulnerabilidades conocidas (CVE), especialmente "lo construí con ayuda de la IA, no estoy seguro de la seguridad de las dependencias". Aquí no hay pasos de ataque — solo defensa: inspeccionar tu propio terreno (tus propios lockfiles).
La visión de este sitio: la herramienta correcta la decide TU configuración
Sinceramente, este sitio usa pnpm audit, no osv-scanner (este sitio no mantiene repositorio en GitHub y su árbol es un único npm, así que el audit incluido basta). osv-scanner pasa a ser la decisión correcta cuando tienes ① varios ecosistemas (npm + PyPI + Go…) ② necesidad de un escaneo independiente sin dependencia de GitHub ③ imágenes de contenedor que inspeccionar. Elígelo porque encaja con tu configuración — no porque sea popular.
1. Qué es osv-scanner
Un escáner de código abierto creado por Google y escrito en Go. Sus datos de vulnerabilidades provienen de OSV.dev, una base de datos abierta de vulnerabilidades multilenguaje. La diferencia clave frente a una herramienta específica de un lenguaje como npm audit es la amplitud: lee lockfiles de npm, PyPI (Python), Go, Rust, Maven (Java) y más.
El mecanismo es simple: lista las versiones realmente resueltas en tu lockfile, coteja cada paquete+versión contra OSV y devuelve los CVE relevantes y las versiones corregidas. El hecho de que lea el lockfile, no el manifiesto (el piso ^ de package.json) importa — se alinea con el principio de juzgar por la versión en ejecución.
2. Instálalo
Elige lo que encaje con tu SO y tus gustos — todos tienen soporte oficial.
Homebrew (macOS / Linux)
brew install osv-scannerScoop (Windows)
scoop install osv-scannerGo
go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latestBinario / Docker
descarga desde releases, o ghcr.io/google/osv-scannerSi prefieres no instalar nada y usarlo solo en CI, ejecútalo directamente desde la imagen de Docker.
# confirma que está instalado
osv-scanner --version3. Ejecútalo
Lo más habitual es o bien "escanear recursivamente todo un directorio" o "nombrar un lockfile".
# escanea todo el proyecto de forma recursiva (autodetecta lockfiles)
osv-scanner scan -r ./
# nombra un lockfile (npm / pnpm / yarn, etc.)
osv-scanner scan -L pnpm-lock.yaml
# emite JSON (para alimentar CI u otra herramienta)
osv-scanner scan -L package-lock.json --format json
# inspecciona una imagen de contenedor
osv-scanner scan image my-app:latestEjecutándolo vía Docker (sin instalación):
docker run --rm -v "$(pwd):/src" ghcr.io/google/osv-scanner:latest scan -r /srcLeer la salida
Por cada coincidencia obtienes el nombre del paquete, la versión actual, el ID del CVE/aviso y la versión corregida. Hay una sola tarea: subir a la versión corregida o superior, actualizar el lockfile y volver a ejecutar para confirmar que ya no está. Para profundizar en un CVE (severidad, estado de explotación), pega el ID en la consulta de CVE/KEV para ver el CVSS y si está siendo explotado activamente (KEV) en una sola pantalla.
No tienes que arreglarlo todo de golpe
Una lista grande no significa soltarlo todo. Prioriza por "¿se está explotando activamente (KEV)?" multiplicado por "¿qué tan alto es el CVSS?". Una puntuación media bajo explotación activa supera a una puntuación alta de una vía que nunca alcanzas. El enfoque completo para corregir está expuesto en higiene de CVE en Next.js.
4. Hazlo continuo (intégralo en CI / cron)
Ejecutarlo una vez a mano no sirve de nada. Funciona cuando se ejecuta antes de cada build o a diario vía cron. osv-scanner sale con código distinto de cero cuando encuentra una vulnerabilidad, así que ponerlo en un paso de CI detiene el build en el momento en que se cuela una dependencia peligrosa.
Añádelo como un paso de CI
osv-scanner scan -r ./ junto a tus pruebas. Una salida distinta de cero falla la canalización — las dependencias peligrosas se detienen antes del merge.En GitHub, la Action oficial también funciona
google/osv-scanner-action es una opción. Pero la ejecución independiente y sin GitHub es justo la ventaja de osv-scanner.¿Sin GitHub? Usa cron
5. Elegir entre las herramientas
La jugada correcta no es "siempre osv-scanner" — es lo que sea más natural para tu configuración.
osv-scanner encaja cuando
- mezclas más que npm (PyPI / Go / Rust / Java, multilenguaje)
- quieres un escaneo independiente sin GitHub (cron, cualquier CI)
- quieres inspeccionar una imagen de contenedor
- quieres quedarte en lo gratuito, sobre una fuente de datos abierta (OSV.dev)
No tienes que forzarlo
- proyecto único npm/pnpm → el
npm audit/pnpm auditincluido suele bastar - trabajo centrado en GitHub → Dependabot hasta te abre los PR
- "porque es popular" → eso no es una razón de selección
En resumen, osv-scanner, pnpm audit y Dependabot no son competidores — cumplen roles distintos. ¿Necesitas amplitud multilenguaje y sin dependencia de GitHub? osv-scanner. ¿Un único npm? el audit incluido. ¿Centrado en GitHub? Dependabot — y puedes apilarlos. Lo que importa es "ejecutar siempre al menos uno de ellos, de forma automática". Contra el envenenamiento de la cadena de suministro (como la brecha de Codecov o la puerta trasera de xz-utils), las comprobaciones continuas de dependencias son la primera línea de defensa.
Qué hace este sitio
Este sitio ejecuta su autoauditoría de dependencias vía pnpm audit antes de cada despliegue, más un cron diario (high/critical falla el build y dispara un correo). No elegimos osv-scanner porque este sitio no mantiene repositorio en GitHub y su árbol es un único npm — "gratis, sin binario extra, sin dependencia de GitHub" ya lo cumple pnpm audit. Ese es el estándar que escribimos aplicado a nosotros mismos, y es parte de la credibilidad del producto. Y si solo quieres probarlo una vez, ahora mismo, sin instalar nada, también ofrecemos un escáner de vulnerabilidades de dependencias que funciona solo en el navegador (pega un lockfile, nada sale de la página).
Sigue leyendo
- Stack: higiene de CVE en Next.js (juzgar por la versión en ejecución, monitoreo por máquina)
- Glosario: CVE · CVSS
- Incidente: Codecov — envenenamiento de la cadena de suministro
- Herramientas: escáner de dependencias (solo navegador) · consulta de CVE/KEV
FAQ
Q¿Qué hace osv-scanner?
Lee los lockfiles de tu proyecto (package-lock.json / pnpm-lock.yaml, etc.) y luego comprueba las versiones de dependencias resueltas frente a la base de datos OSV.dev de Google en busca de vulnerabilidades conocidas (CVE). No es una herramienta de ataque — inspecciona tu propio terreno, de forma defensiva.
Q¿En qué se diferencia de Dependabot?
Dependabot es una función exclusiva de GitHub que asume que tu repositorio vive allí y abre PR para los CVE que coinciden. osv-scanner es un binario independiente sin dependencia de GitHub — ejecútalo en local, en cualquier CI o desde cron. Encaja en configuraciones sin GitHub y en árboles multilenguaje.
Q¿No basta con npm audit / pnpm audit?
Para un único proyecto npm/pnpm, el audit incluido suele bastar. osv-scanner brilla cuando mezclas npm, PyPI, Go, Rust, etc., o quieres un escaneo independiente sin herramientas extra y sin dependencia de GitHub. Su fuente de datos (OSV.dev) también es gratuita.