
osv-scanner v2.5.0
Escáner de vulnerabilidades escrito en Go que utiliza los datos proporcionados por https://osv.dev
Usa OSV-Scanner para encontrar vulnerabilidades existentes que afecten a las dependencias de tu proyecto. OSV-Scanner proporciona un frontend oficialmente compatible con la base de datos OSV y una interfaz CLI para OSV-Scalibr que conecta la lista de dependencias de un proyecto con las vulnerabilidades que las afectan.
OSV-Scanner admite una amplia gama de tipos de proyectos, gestores de paquetes y funcionalidades, incluyendo pero no limitándose a:
- Lenguajes: C/C++, Dart, Elixir, Go, Java, Javascript, PHP, Python, R, Ruby, Rust.
- Gestores de paquetes: npm, pip, yarn, maven, go modules, cargo, gem, composer, nuget y otros.
- Sistemas operativos: Detecta vulnerabilidades en paquetes del SO en sistemas Linux.
- Contenedores: Escanea imágenes de contenedores para detectar vulnerabilidades en sus imágenes base y paquetes incluidos.
- Remediación guiada: Proporciona recomendaciones para actualizaciones de versiones de paquetes basadas en criterios como profundidad de dependencia, severidad mínima, estrategia de corrección y retorno de inversión.
OSV-Scanner utiliza la biblioteca extensible OSV-Scalibr internamente para proporcionar esta funcionalidad. Si un lenguaje o gestor de paquetes no es compatible actualmente, por favor crea una solicitud de funcionalidad.
Base de datos subyacente
La base de datos subyacente, OSV.dev, tiene varios beneficios en comparación con bases de datos de avisos y escáneres de código cerrado:
- Cubriendo la mayoría de los ecosistemas de lenguajes de código abierto y SO (incluyendo Git), es completa.
- Cada aviso proviene de una fuente abierta y autorizada (por ejemplo, GitHub Security Advisories, RustSec Advisory Database, Ubuntu security notices)
- Cualquier persona puede sugerir mejoras a los avisos, lo que resulta en una base de datos de muy alta calidad.
- El formato OSV almacena de forma inequívoca información sobre versiones afectadas en un formato legible por máquina que se asigna precisamente a la lista de paquetes de un desarrollador.
Todo lo anterior resulta en notificaciones de vulnerabilidades precisas y procesables, lo que reduce el tiempo necesario para resolverlas. ¡Echa un vistazo a OSV.dev para más detalles!
Instalación básica
Para instalar OSV-Scanner, por favor consulta la sección de instalación de nuestra documentación. Las versiones de OSV-Scanner se pueden encontrar en la página de versiones del repositorio de GitHub. El método recomendado es descargar un binario precompilado para tu plataforma. Alternativamente, puedes usar
go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest para compilarlo desde el código fuente.
Funcionalidades clave
Para más información, por favor lee nuestra documentación detallada para aprender a usar OSV-Scanner. Para información detallada sobre cada funcionalidad, haz clic en sus títulos en este README.
Ten en cuenta: Estas son las instrucciones para la última versión beta de OSV-Scanner V2. Si estás usando V1, consulta el README y la documentación de V1.
Escaneo de un directorio fuente
$ osv-scanner scan source -r /path/to/your/dir
Este comando escaneará recursivamente el directorio especificado en busca de cualquier archivo de paquetes compatible, como package.json, go.mod, pom.xml, etc., y mostrará cualquier vulnerabilidad descubierta.
OSV-Scanner tiene la opción de usar análisis de llamadas para determinar si una función vulnerable se está utilizando realmente en el proyecto, lo que resulta en menos falsos positivos y alertas procesables.
OSV-Scanner también puede detectar código C/C++ empaquetado (vendored) para escaneo de vulnerabilidades. Consulta aquí para más detalles.
Lockfiles compatibles
OSV-Scanner admite 11+ ecosistemas de lenguajes y 19+ tipos de lockfiles. Para verificar si tu ecosistema está cubierto, consulta nuestra documentación detallada.
Escaneo de contenedores
OSV-Scanner también admite escaneo completo, consciente de capas, para imágenes de contenedores con el fin de detectar vulnerabilidades en los siguientes paquetes del sistema operativo y dependencias específicas de lenguajes.
| Soporte de distribuciones | Soporte de artefactos de lenguaje |
|---|---|
| Alpine OS | Go |
| Debian | Java |
| Ubuntu | Node |
| Python |
Consulta la documentación completa para detalles sobre el soporte.
Uso:
$ osv-scanner scan image my-image-name:tag

Escaneo de licencias
Revisa las licencias de tus dependencias usando datos de deps.dev. Para un resumen:
osv-scanner --licenses path/to/repository
Para verificar contra una lista de licencias permitidas (formato SPDX):
osv-scanner --licenses="MIT,Apache-2.0" path/to/directory
Escaneo sin conexión
Escanea tu proyecto contra una base de datos OSV local. No se requiere conexión de red después de la descarga inicial de la base de datos. La base de datos también se puede descargar manualmente.
osv-scanner --offline --download-offline-databases ./path/to/your/dir
Remediación guiada (Experimental)
[!WARNING] La remediación guiada (el comando
fix) puede ser arriesgada cuando se ejecuta en proyectos no confiables. Puede hacer que el gestor de paquetes ejecute scripts o siga registros externos especificados en el proyecto. Asegúrate de confiar en el código fuente y los artefactos antes de proceder.
OSV-Scanner proporciona remediación guiada, una funcionalidad que sugiere actualizaciones de versiones de paquetes basadas en criterios como profundidad de dependencia, severidad mínima, estrategia de corrección y retorno de inversión. Actualmente soportamos la remediación de vulnerabilidades en los siguientes archivos:
| Ecosistema | Formato de archivo (Tipo) | Estrategias de remediación compatibles |
|---|---|---|
| npm | package-lock.json (lockfile) | in-place |
| npm | package.json (manifiesto) | relock |
| Maven | pom.xml (manifiesto) | override |
Esto está disponible como un comando CLI sin interfaz gráfica, así como un modo interactivo.
Ejemplo (para npm)
$ osv-scanner fix \
--max-depth=3 \
--min-severity=5 \
--ignore-dev \
--strategy=in-place \
-L path/to/package-lock.json
Modo interactivo (para npm)
$ osv-scanner fix \
-M path/to/package.json \
-L path/to/package-lock.json
Fuentes de datos y privacidad
OSV-Scanner se comunica con los siguientes servicios externos durante su funcionamiento:
API de OSV.dev
La fuente de datos principal para información de vulnerabilidades. OSV-Scanner consulta esta API para verificar paquetes en busca de vulnerabilidades conocidas e identificar dependencias C/C++ empaquetadas (vendored). Los datos enviados incluyen nombres de paquetes, versiones, ecosistemas y hashes de archivos. Usa el modo --offline para deshabilitar solicitudes de red y escanear contra una base de datos local.
API de deps.dev
Se utiliza para información complementaria de paquetes:
- Resolución de dependencias: Resuelve grafos de dependencias para escaneo de vulnerabilidades y remediación
- Escaneo de imágenes de contenedores: Consulta metadatos de imágenes de contenedores para detección de vulnerabilidades
- Escaneo de licencias (bandera
--licenses): Recupera información de licencias para paquetes - Desaprobación de paquetes: Verifica si los paquetes están desaprobados
Los datos enviados incluyen nombres de paquetes, versiones y ecosistemas. No se transmite código fuente.
Registros de paquetes
Cuando se utiliza el registro nativo para la resolución de dependencias (en lugar de deps.dev), OSV-Scanner puede consultar:
| Registro | URL | Usado para |
|---|---|---|
| Maven Central | repo.maven.apache.org/maven2 | Metadatos de paquetes Maven y POMs |
| npm Registry | registry.npmjs.org | Metadatos de paquetes npm |
| PyPI | pypi.org | Metadatos de paquetes Python |
Contribuir
Reportar problemas
Si tienes lo que parece ser un error, por favor utiliza el sistema de seguimiento de incidencias de GitHub. Antes de reportar una incidencia, busca en las incidencias existentes para ver si la tuya ya está cubierta.
Contribuir código a osv-scanner
Consulta CONTRIBUTING.md para obtener documentación sobre cómo contribuir código.