Vuls

Vuls – El escáner de vulnerabilidades sin agente para infraestructuras modernas

Descripción del programa Vuls

Vuls es un escáner de vulnerabilidades de código abierto y sin agente, diseñado específicamente para ayudar a administradores de sistemas y equipos de seguridad a identificar y gestionar de forma proactiva las vulnerabilidades en su infraestructura. El proyecto fue iniciado por Future Architect y está escrito en Go, lo que le permite ser multiplataforma, rápido y fácil de desplegar.

Su principal fortaleza reside en su arquitectura sin agente. A diferencia de otros escáneres que requieren instalar software en cada máquina objetivo, Vuls se conecta de forma remota mediante SSH (o se ejecuta localmente) para analizar el sistema, lo que simplifica enormemente el mantenimiento y el despliegue en entornos con cientos o miles de servidores.

Está diseñado para resolver el problema diario de los administradores que, para evitar tiempos de inactividad, deshabilitan las actualizaciones automáticas y se enfrentan a la abrumadora tarea de rastrear manualmente bases de datos de vulnerabilidades como la NVD (National Vulnerability Database).

Vuls es compatible con una amplísima gama de sistemas operativos, incluyendo las principales distribuciones de Linux (Ubuntu, Debian, CentOS, RHEL, AlmaLinux, Rocky Linux, Amazon Linux, etc.), FreeBSD, Windows y macOS. También puede escanear entornos modernos como contenedores Docker, middleware, bibliotecas de lenguajes de programación y dispositivos de red, lo que lo convierte en una herramienta integral para cualquier infraestructura.

¿Necesitas automatizar la detección de vulnerabilidades en tus servidores Linux, Windows o contenedores sin instalar agentes pesados y con la posibilidad de integrarlo en tus pipelines de CI/CD?

Características clave de Vuls

1. Arquitectura sin agente con tres modos de escaneo

La característica más distintiva de Vuls es su capacidad para operar sin necesidad de instalar software en los sistemas objetivo. Utiliza tres modos de escaneo principales, que se adaptan a diferentes necesidades de profundidad y permisos:

Modo de EscaneoDescripciónCaso de uso
Fast ScanEscaneo sin necesidad de permisos de administrador (root). No requiere software adicional en el objetivo.Ideal para escaneos iniciales o cuando no se tienen privilegios elevados.
Fast Root ScanEscaneo con permisos de administrador (root). Permite detectar procesos que requieren reinicio tras una actualización.Escaneos de rutina con mayor profundidad.
Deep ScanEscaneo detallado que puede incluir comprobaciones adicionales (actualmente similar a Fast Root).Auditorías de seguridad completas.

2. Escaneo local y remoto mediante SSH

Vuls ofrece una flexibilidad excepcional en cómo se conecta a los sistemas objetivo:

  • Remote Scan Mode: Configuras Vuls en una máquina central (master) y se conecta a otros servidores de forma remota mediante SSH. Es el modo más común para administrar grandes flotas de servidores.
  • Local Scan Mode: Ejecutas Vuls directamente en cada servidor que deseas escanear, sin necesidad de conexiones SSH.
  • Server Mode: Vuls se ejecuta como un servidor HTTP. Los sistemas objetivo envían su información de paquetes a través de HTTP y Vuls devuelve los resultados en formato JSON.

3. Soporte multiplataforma y para contenedores

Vuls es compatible con una lista impresionante de sistemas operativos y entornos:

CategoríaSistemas/Entornos Soportados
LinuxUbuntu (14.04 a 24.04), Debian (8 a 12), RHEL (5 a 9), CentOS (6 a 8), AlmaLinux (8,9), Rocky Linux (8,9), Fedora, Amazon Linux, Oracle Linux, openSUSE, Alpine
Unix-likeFreeBSD (versiones 10 y 11)
Otros SOWindows (cliente y servidor), macOS
ContenedoresDocker y otros entornos containerizados
Lenguajes/BibliotecasMiddleware y bibliotecas que no son gestionadas por el gestor de paquetes del sistema operativo

4. Análisis dinámico de procesos (Need Restart)

Una de las funcionalidades más valoradas de Vuls es su capacidad de análisis dinámico. Después de aplicar parches de seguridad, muchos servicios deben reiniciarse para que la actualización surta efecto. Vuls puede:

  • Conectarse a los servidores vía SSH y verificar en tiempo real qué procesos se ejecutan con versiones antiguas de librerías.
  • Avisar sobre procesos que fueron actualizados pero no se han reiniciado.
  • Utilizar herramientas como checkrestart (Debian/Ubuntu) o yum-ps (Red Hat) para esta funcionalidad.

5. Integración con múltiples fuentes de vulnerabilidades

Para ofrecer una cobertura completa, Vuls se integra con varias bases de datos de vulnerabilidades:

  • NVD (National Vulnerability Database): La base de datos estándar de vulnerabilidades de EE.UU.
  • JVN (Japan Vulnerability Notes): Base de datos de vulnerabilidades japonesa.
  • OVAL (Open Vulnerability and Assessment Language): Proporciona información detallada sobre vulnerabilidades específicas de cada distribución.
  • Exploit Database: Base de datos de exploits públicos.
  • RHSA/ALAS/ELSA/FreeBSD-SA: Boletines de seguridad específicos de distribuciones.

6. Interfaz de usuario en terminal (TUI) y reportes

Vuls incluye una interfaz de usuario basada en terminal (TUI) que facilita la visualización de los resultados de los escaneos. La vista se organiza en cuatro paneles:

PanelContenido
Scanned machinesLista de las máquinas escaneadas (superior izquierda)
Found vulnerabilitiesLista de vulnerabilidades encontradas (superior derecha)
Detailed informationInformación detallada de la vulnerabilidad seleccionada (inferior izquierda)
Affected packagesPaquetes afectados y si hay versión corregida disponible (inferior derecha)

Además, puede generar reportes en formatos como JSON, CSV, Slack y correo electrónico, facilitando la integración con otros sistemas de ticketing o SIEM.

7. Notificaciones automáticas y programación

Vuls puede integrarse con Slack y el correo electrónico para enviar notificaciones automáticas cuando se detectan nuevas vulnerabilidades. Utilizando herramientas de programación como CRON, se pueden ejecutar escaneos periódicos (diarios, semanales) y recibir alertas sin intervención manual.

Explicación detallada del funcionamiento

La arquitectura de Vuls se compone de varios componentes que trabajan en conjunto:

  1. Vuls Core: El motor principal escrito en Go que orquesta los escaneos. Se conecta a los sistemas objetivo (localmente o por SSH), recopila la lista de paquetes instalados y los compara con las bases de datos de vulnerabilidades.
  2. go-cve-dictionary: Una herramienta auxiliar que descarga y almacena en una base de datos local (SQLite3, MySQL, Redis) la información de la NVD y JVN. Vuls consulta esta base de datos para correlacionar los paquetes con las vulnerabilidades conocidas.
  3. goval-dictionary: Similar a go-cve-dictionary, pero para datos OVAL. Proporciona información de vulnerabilidades específica para cada distribución de Linux, como la información de parches de seguridad de Ubuntu.
  4. go-exploitdb: Descarga y almacena información de exploits públicos, permitiendo a Vuls indicar si existe un exploit conocido para una vulnerabilidad detectada.

El flujo de trabajo típico del programa es el siguiente:

Fase 1: Preparación de la base de datos de vulnerabilidades
Antes del primer escaneo, el administrador ejecuta go-cve-dictionary y goval-dictionary para descargar los datos de vulnerabilidades y OVAL de los años deseados. Esta descarga inicial puede ser larga (hasta varias horas) y requiere espacio en disco (varios GB).

Fase 2: Configuración de objetivos
El administrador crea un archivo de configuración config.toml en el que define los servidores a escanear. Para el acceso remoto, se especifica la dirección IP, el puerto SSH, el usuario y la ruta a la clave privada SSH. Ejemplo de configuración:

[servers]

[servers.remote_host]

host = «192.168.1.100» port = «22» user = «vuls» keyPath = «/home/vuls/.ssh/id_rsa» scanMode = [«fast»]

Fase 3: Ejecución del escaneo
El administrador ejecuta el comando vuls scan. Vuls se conecta a los servidores definidos, recopila la lista de paquetes instalados y sus versiones, y consulta las bases de datos locales (go-cve-dictionary, goval-dictionary) para identificar vulnerabilidades asociadas.

Fase 4: Análisis de resultados
Una vez completado el escaneo, el administrador puede ejecutar vuls tui para abrir la interfaz interactiva y explorar los resultados. Las vulnerabilidades se muestran clasificadas por severidad y se proporciona información detallada, incluyendo el impacto y las soluciones recomendadas.

Fase 5: Programación y notificaciones
Utilizando CRON, se puede programar la ejecución periódica de Vuls. Por ejemplo, un escaneo diario a las 2 AM, con notificaciones automáticas a Slack si se detectan nuevas vulnerabilidades críticas.

Descarga e instalación de Vuls

  • Desarrollador: Future Architect
  • Página oficial: https://vuls.io / https://github.com/future-architect/vuls
  • Versión actual: 0.38.6 (marzo de 2026)
  • Tamaño: Aproximadamente 43-44 MB (binario compilado)
  • Sistemas operativos compatibles: Linux (Ubuntu, Debian, CentOS, RHEL, Rocky Linux, AlmaLinux, Amazon Linux, etc.), FreeBSD, Windows, macOS
  • Requisitos previos:
  • Go (versión 1.20 o superior) para compilar desde el código fuente
  • Git para clonar el repositorio
  • SQLite3 (u otra base de datos soportada) para las bases de datos auxiliares
  • Licencia: GNU General Public License v3.0 (código abierto)
  • Idiomas: Inglés (la interfaz y los reportes están en inglés)

Instalación en Debian/Ubuntu:

# 1. Instalar dependencias
sudo apt update
sudo apt install -y debian-goodies reboot-notifier

# 2. Instalar Go (si no está instalado)
sudo apt install -y golang-go

# 3. Configurar variables de entorno Go
export PATH=$PATH:$HOME/go/bin

# 4. Instalar go-cve-dictionary
go install github.com/vulsio/go-cve-dictionary@latest

# 5. Descargar datos de vulnerabilidades (ejemplo: desde 2002 hasta el año actual)
for i in `seq 2002 $(date +"%Y")`; do
    go-cve-dictionary fetchnvd -years $i
done

# 6. Instalar Vuls
go install github.com/future-architect/vuls@latest

# 7. Verificar la instalación
vuls --help

Instalación mediante script (recomendada para usuarios noveles):

bash <(curl -s https://raw.githubusercontent.com/vulsio/vulsctl/master/install-host/install.sh)

Instalación en FreeBSD (mediante ports):

pkg install vuls

Instalación en Red Hat/Rocky Linux (mediante paquetes RPM):

dnf install vuls

Cómo usar Vuls

Advertencia de seguridad: Vuls es una herramienta de auditoría de seguridad. Debe utilizarse únicamente en sistemas que poseas o para los que tengas autorización explícita.

Paso 1: Configurar las bases de datos auxiliares (solo una vez)
Antes del primer escaneo, es necesario descargar las bases de datos de vulnerabilidades:

# Crear un directorio para las bases de datos
mkdir -p /var/lib/vuls

# Descargar datos CVE (ejemplo para los últimos 5 años)
for i in 2020 2021 2022 2023 2024; do
    go-cve-dictionary fetchnvd -dbpath /var/lib/vuls/cve.sqlite3 -years $i
done

# Descargar datos OVAL (ejemplo para Ubuntu 24.04)
goval-dictionary fetch-ubuntu -dbpath /var/lib/vuls/oval.sqlite3 24.04

Paso 2: Configurar el archivo config.toml
Crea un archivo de configuración en /etc/vuls/config.toml o en un directorio de trabajo:

[cveDict]
type = "sqlite3"
SQLite3Path = "/var/lib/vuls/cve.sqlite3"

[ovalDict]
type = "sqlite3"
SQLite3Path = "/var/lib/vuls/oval.sqlite3"

[servers]

[servers.localhost] host = «localhost» port = «local» scanMode = [«fast»] # «fast», «fast-root» o «deep»

[servers.remote_server]

host = «192.168.1.100» port = «22» user = «vuls» keyPath = «/home/vuls/.ssh/id_rsa» scanMode = [«fast», «fast-root»]

Paso 3: Validar la configuración

vuls configtest

Paso 4: Ejecutar un escaneo

# Escanear todos los servidores definidos
vuls scan

# Escanear un servidor específico
vuls scan remote_server

Paso 5: Visualizar los resultados en TUI

vuls tui

Utiliza las teclas de flecha para navegar por los resultados y Enter para seleccionar una vulnerabilidad y ver los detalles.

Paso 6: Generar reportes

# Reporte en formato JSON
vuls report -format-json

# Reporte resumido en la terminal
vuls report -format-one-line

Paso 7: Programar escaneos periódicos (con CRON)
Añade una entrada a crontab para ejecutar Vuls automáticamente:

# Editar crontab
crontab -e

# Ejecutar Vuls diariamente a las 2 AM y enviar reporte por correo
0 2 * * * /usr/local/bin/vuls scan && /usr/local/bin/vuls report -format-json | mail -s "Vuls Report" admin@example.com

Observaciones sobre el programa Vuls

Vuls vs. OpenVAS vs. Nessus

Frente a otros escáneres de vulnerabilidades como OpenVAS o Nessus, Vuls se posiciona como una herramienta complementaria con un enfoque diferente.

CaracterísticaVulsOpenVASNessus
ArquitecturaSin agente (SSH)Sin agente (red)Sin agente (red)
Enfoque principalEscaneo de paquetes y sistemas (local checks)Escaneo de red y servicios (remote checks)Escaneo de red y servicios
CoberturaSistemas operativos, contenedores, middlewareDispositivos de red, sistemas operativos, aplicaciones webAmplia cobertura (red, web, cloud)
Detección de «Need Restart»Sí (análisis dinámico de procesos)LimitadoLimitado
InstalaciónLigera (Go binary)Compleja (múltiples componentes)Simple (pero requiere licencia)
CódigoAbierto (GPLv3)Abierto (GPL)Cerrado (comercial)
CostoGratuitoGratuitoDesde $3,590/año (Professional)

Análisis de la Benchmark 2024: En un estudio comparativo de escáneres de vulnerabilidades de red realizado en 2024, se analizaron herramientas como Nessus, OpenVAS, Qualys y Nuclei contra 167 entornos vulnerables.

Aunque Vuls no fue incluido en esta benchmark específica por su naturaleza de «local checks» (mientras que el estudio se centró en «remote checks» desde una perspectiva de atacante externo), el estudio destacó que las herramientas comerciales como Nessus tienen una brecha significativa entre su «disponibilidad de detección» reportada y su «precisión de detección» real.

Esto subraya la importancia de complementar los escáneres de red tradicionales (que ven el sistema desde fuera) con herramientas de escaneo local como Vuls (que analizan el sistema desde dentro) para obtener una imagen completa de la postura de seguridad.

Casos de uso y aplicaciones prácticas

  • Entornos de producción con actualizaciones manuales: Muchos administradores deshabilitan las actualizaciones automáticas por miedo a causar tiempo de inactividad. Vuls automatiza la detección de vulnerabilidades, permitiendo a los equipos priorizar qué parches aplicar y cuándo.
  • Infraestructuras multi-cloud y heterogéneas: Con soporte para AWS, Azure, y múltiples distribuciones de Linux, Vuls es ideal para equipos que gestionan una mezcla de servidores en diferentes nubes y sistemas operativos.
  • Integración en pipelines de CI/CD: Vuls puede integrarse en pipelines de CI/CD para escanear contenedores antes de su despliegue, garantizando que las imágenes base no contengan vulnerabilidades conocidas.
  • Cumplimiento normativo (PCI-DSS, HIPAA, ISO 27001): Aunque Vuls no incluye plantillas de cumplimiento predefinidas, sus reportes detallados pueden utilizarse como evidencia en auditorías de seguridad.

Limitaciones importantes

  • No realiza escaneos de red: Vuls no escanea puertos ni servicios desde una perspectiva de atacante externo. Se centra en los paquetes instalados en el sistema. Para una evaluación completa, se debe combinar con OpenVAS o Nessus.
  • Dependencia de SSH: El modo remoto requiere que los servidores objetivo tengan SSH habilitado y que se configuren las claves de acceso adecuadamente. En entornos muy restrictivos, esto puede ser un obstáculo.
  • Base de datos inicial grande: La descarga inicial de los feeds de vulnerabilidades (NVD, OVAL, etc.) puede ocupar varios GB y tardar horas. Esto debe tenerse en cuenta en la planificación de la capacidad de almacenamiento.
  • Configuración manual para múltiples distribuciones: Si se gestionan diferentes distribuciones de Linux, es necesario configurar adecuadamente los paths de OVAL y las herramientas de «need restart» para cada una.
  • No incluye interfaz web nativa: A diferencia de OpenVAS o Nessus, Vuls no tiene una interfaz web integrada. Los resultados se visualizan a través de la TUI o se exportan a otros formatos.

Vuls y la automatización de la gestión de vulnerabilidades

Vuls está diseñado para integrarse en flujos de trabajo automatizados. Algunas integraciones posibles:

  • Integración con Jira/ServiceNow: Utilizando los reportes en JSON, se pueden crear tickets automáticamente para cada vulnerabilidad detectada.
  • Integración con Slack: Configurar webhooks para recibir notificaciones en canales de Slack cuando se detectan vulnerabilidades críticas.
  • Integración con SIEM: Enviar logs y resultados a sistemas de gestión de eventos e información de seguridad (SIEM) para una correlación centralizada.
  • Automatización con Ansible: Utilizar Ansible para desplegar Vuls en múltiples servidores y ejecutar escaneos de forma orquestada.

Alternativa recomendada

Si buscas alternativas a Vuls para análisis de vulnerabilidades, considera las siguientes opciones según tu perfil:

OpenVAS (Greenbone Community Edition) (gratuito, código abierto): Escáner de vulnerabilidades de red completo, ideal para escanear desde una perspectiva externa. Tiene una interfaz web, soporta escaneos autenticados y no autenticados, y es compatible con una amplia gama de dispositivos de red. Su instalación es más compleja y consume más recursos que Vuls.

Nessus Essentials (gratuito, hasta 16 IPs): La versión gratuita de Nessus, el estándar de la industria para escaneo de vulnerabilidades. Es más fácil de instalar y configurar que OpenVAS, y ofrece una interfaz web muy pulida. Está limitado a 16 direcciones IP, lo que lo hace adecuado para pequeñas empresas o uso doméstico.

Wazuh (gratuito, código abierto): Plataforma de seguridad que integra capacidades de detección de vulnerabilidades (utilizando feeds de NVD), análisis de integridad de archivos, monitorización de logs y respuesta a incidentes. Es una solución más completa que Vuls, pero también más compleja de desplegar.

Lynis (gratuito, código abierto): Escáner de seguridad para sistemas Unix-like que se centra en la auditoría de configuración del sistema, no en vulnerabilidades de software. Complementa a Vuls verificando aspectos como permisos de archivos, contraseñas débiles, y configuraciones de red inseguras.

Trivy (gratuito, código abierto): Escáner de vulnerabilidades específico para contenedores. Es muy rápido y se integra fácilmente en pipelines de CI/CD. Ideal si tu infraestructura está basada en contenedores Docker y Kubernetes.

Vuls es la herramienta de referencia para administradores de sistemas y equipos de DevOps que necesitan automatizar la detección de vulnerabilidades en sus servidores Linux, FreeBSD, Windows y contenedores, sin la complejidad de los escáneres de red tradicionales. Su arquitectura sin agente, su ligereza y su capacidad para integrarse en pipelines de CI/CD lo convierten en un aliado indispensable para mantener la seguridad de la infraestructura sin ralentizar los procesos de desarrollo. Puedes descargarlo desde su repositorio de GitHub o instalarlo a través de los gestores de paquetes de tu distribución.

Sección FAQ

¿Vuls es gratis o de pago?

Vuls es completamente gratuito y de código abierto bajo la licencia GPLv3. No tiene versiones de pago ni funcionalidades bloqueadas. Puedes descargarlo, modificarlo y utilizarlo sin coste alguno.

¿Funciona en Linux, macOS, Windows 10 y Windows 11?

Sí, Vuls es multiplataforma. Es compatible con Linux (todas las distribuciones principales), FreeBSD, Windows (cliente y servidor) y macOS (incluyendo macOS X, macOS X Server y macOS Server). Los agentes también pueden ejecutarse en contenedores Docker.

¿Qué diferencia a Vuls de OpenVAS?

La principal diferencia es el enfoque. Vuls se centra en el análisis de paquetes y software instalado en el sistema (local checks), utilizando SSH para conectarse a los servidores. OpenVAS se centra en el escaneo de red desde una perspectiva externa (remote checks), analizando puertos abiertos, servicios expuestos y aplicaciones web. Son herramientas complementarias: Vuls te dice qué vulnerabilidades tienen los paquetes que tienes instalados, mientras que OpenVAS te dice qué servicios vulnerables están expuestos en tu red.

¿Cómo puedo integrar Vuls con Slack?

Vuls puede enviar notificaciones a Slack configurando un webhook en el archivo config.toml:

[slack]
webhook = "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
channel = "#security-alerts"
username = "vuls"

Luego, al ejecutar vuls scan con la opción -slack, se enviarán los resultados al canal configurado.

¿Qué ha pasado con el desarrollo de Vuls?

El desarrollo de Vuls es muy activo. El proyecto tiene versiones frecuentes, con la última versión estable 0.38.6 lanzada en marzo de 2026. El repositorio de GitHub tiene una comunidad activa de contribuyentes y el proyecto recibe actualizaciones regulares para añadir soporte a nuevas distribuciones de Linux, mejorar la detección de vulnerabilidades y corregir errores. La versión 0.37.0 introdujo mejoras en el soporte para encoding/json y correcciones en el empaquetado RPM.