Logo

Mi Blog con Emacs y Esteroides

Emacs, IA y Linux: Poder y Simplicidad en tu Flujo de Trabajo

mybloggingnotes@gmail.com


08/04/2025

Detección de Vulnerabilidades en Linux con Bash y Org Mode

Introducción

En la administración de sistemas Linux, una de las tareas más críticas es mantener actualizado el sistema y mitigar cualquier vulnerabilidad presente. Una vulnerabilidad es una debilidad en el sistema que puede ser explotada para ganar acceso no autorizado, ejecutar código malicioso o afectar la disponibilidad y confidencialidad del sistema.

Este artículo documenta un método simple pero efectivo para identificar vulnerabilidades conocidas (CVE) en paquetes instalados en una distribución basada en Debian/Ubuntu, utilizando:

  • Herramientas de línea de comandos (Bash, `dpkg`, `curl`)
  • Consulta a la API de Vulners.com
  • Documentación automática en formato Org Mode para su exportación a PDF o HTML

Herramientas necesarias

Antes de comenzar, asegúrate de tener instaladas las siguientes utilidades:

  • `dpkg` (instalado por defecto en Ubuntu)
  • `curl` para realizar peticiones web
  • Editor Emacs con soporte para Org Mode

Puedes instalar `curl` así:

sudo apt update
sudo apt install curl

Extracción del listado de software instalado

Primero generamos un listado de los paquetes instalados con sus versiones:

dpkg-query -W -f='${binary:Package} ${Version}\n' > paquetes_instalados.txt

Este archivo será leído por nuestro script de análisis de vulnerabilidades.

Script de análisis con Bash

A continuación, presentamos el script en Bash que se encarga de:

  1. Leer el archivo de paquetes instalados
  2. Buscar cada paquete en la API pública de Vulners
  3. Extraer posibles CVEs relacionados
  4. Generar automáticamente un informe en formato Org Mode
#!/bin/bash

OUTPUT="vulnerabilidades.org"
PACKAGE_LIST="paquetes_instalados.txt"

# Verifica dependencias
if ! command -v curl &> /dev/null; then
    echo "Este script requiere 'curl'. Instálalo con: sudo apt install curl"
    exit 1
fi

# Título del archivo Org
echo "#+TITLE: Análisis de Vulnerabilidades del Sistema" > "$OUTPUT"
echo "#+DATE: $(date '+%Y-%m-%d')" >> "$OUTPUT"
echo "* Resultados de escaneo de vulnerabilidades" >> "$OUTPUT"

# Obtener lista de paquetes instalados
echo "[*] Obteniendo lista de paquetes..."
dpkg-query -W -f='${binary:Package} ${Version}\n' > "$PACKAGE_LIST"

# Buscar vulnerabilidades por paquete
while IFS= read -r line; do
    nombre=$(echo "$line" | awk '{print $1}')
    version=$(echo "$line" | awk '{print $2}')
    echo "[+] Buscando CVEs para: $nombre $version"

    query="${nombre}%20${version}"
    response=$(curl -s "https://vulners.com/api/v3/search/lucene/?query=$query&size=3")

    echo "** $nombre $version" >> "$OUTPUT"

    if echo "$response" | grep -q '"cvelist":'; then
        echo "   → Vulnerabilidades encontradas."
        echo "   - Vulnerabilidades encontradas:" >> "$OUTPUT"
        echo "$response" | grep -oP '"id":\s*"\K(CVE-[0-9\-]+)' | uniq | sed 's/^/     - /' >> "$OUTPUT"
    else
        echo "   → Sin vulnerabilidades encontradas."
        echo "   - Sin vulnerabilidades encontradas." >> "$OUTPUT"
    fi

    sleep 1  # Para no sobrecargar el servidor
done < "$PACKAGE_LIST"

echo "[✔] Análisis completado. Archivo generado: $OUTPUT"

Para usarlo:

chmod +x check_vulnerabilities_org.sh
./check_vulnerabilities_org.sh

Ejemplo de resultados

A continuación se muestra un extracto real generado automáticamente con el script:

#+beginexample

openssl 3.0.2-0ubuntu1.15

  • Vulnerabilidades encontradas:
    • CVE-2022-0778
    • CVE-2023-0464
    • CVE-2023-2650

firefox 124.0

  • Vulnerabilidades encontradas:
    • CVE-2024-29943
    • CVE-2024-29944

vlc 3.0.16

  • Sin vulnerabilidades encontradas.

#+endexample

Exportar resultados a PDF o HTML

Desde Emacs, abre el archivo generado `vulnerabilidades.org` y presiona:

  • `C-c C-e l o` → Exportar a PDF
  • `C-c C-e h o` → Exportar a HTML

Esto genera un informe profesional que puedes archivar, compartir o añadir a tu blog.

Recomendaciones

  • Ejecutar este script regularmente como parte de tus tareas de mantenimiento.
  • Configurar alertas automáticas de CVE con herramientas como `apticron`, `unattended-upgrades` o `lynis`.
  • Complementar con escáneres más avanzados como OpenVAS o Lynis para auditorías completas.

Conclusión

La seguridad no es un estado, es un proceso. Automatizar la detección de vulnerabilidades con herramientas simples como Bash, APIs públicas y Org Mode nos permite mantenernos al tanto de riesgos sin depender de soluciones comerciales complejas.

Este enfoque demuestra el poder de las herramientas libres combinadas: un sistema Linux, un script Bash y la flexibilidad de Emacs.

Recursos

Categoría: linux seguridad bash emacs orgmode tutoriales

Suscribirse al Feed RSS | Mapa del Sitio

© 2025 M.Castillo | Hecho con ❤️ en Emacs y org-static-blog

Visit counter For Websites