Logo

Mi Blog con Emacs y Esteroides

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

mybloggingnotes@gmail.com


09/04/2025

Analizando Vulnerabilidades como un Pro: Un Script Potenciado para Emacs Org-mode (ii)

Introducción

¿Alguna vez te has preguntado qué tan seguro está tu laptop? En este post, te llevo de la mano para transformar un script básico de detección de vulnerabilidades en una herramienta poderosa que no solo encuentra CVEs, sino que también evalúa amenazas y las presenta en el glorioso formato Org-mode de Emacs. ¡Prepárate para darle esteroides a tu análisis de seguridad!

El reto comenzó con un script que escaneaba paquetes en busca de vulnerabilidades usando la API de Vulners. Pero queríamos más: un reporte detallado con niveles de amenaza y estadísticas, todo listo para brillar en Emacs. Aquí te cuento cómo lo hice, cómo usarlo y qué resultados obtendrás.

El Punto de Partida

Primero, teníamos este script básico:

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")
    # ... resto del script ...
done < "$PACKAGE_LIST"

Este script lee una lista de paquetes, busca CVEs y genera un archivo con resultados. Funciona, pero le falta punch: no clasifica amenazas ni da detalles jugosos. ¡Hora de mejorarlo!

Creación del Nuevo Script: Un Monstruo de Seguridad

Tomé el output del script original y creé un nuevo beast que procesa los CVEs encontrados. Aquí está el resultado:

#!/bin/bash
OUTPUT="vulnerability_report.org"
INPUT_FILE="$1"

echo "#+TITLE: Reporte de Amenazas Actuales" > "$OUTPUT"
echo "#+DATE: $(date '+%Y-%m-%d %H:%M')" >> "$OUTPUT"

while IFS= read -r line; do
    if [[ "$line" =~ ^\*\* ]]; then
        package_info=$(echo "$line" | sed 's/\*\* //')
        echo "** Paquete: $package_info" >> "$OUTPUT"
        echo "   :PROPERTIES:" >> "$OUTPUT"
        echo "   :ANALISIS: $(date '+%Y-%m-%d')" >> "$OUTPUT"
        echo "   :END:" >> "$OUTPUT"
    elif [[ "$line" =~ ^\s*-.*CVE-[0-9]{4}-[0-9]+ ]]; then
        cve=$(echo "$line" | grep -o 'CVE-[0-9]\{4\}-[0-9]\+')
        response=$(curl -s "https://vulners.com/api/v3/search/id/?id=$cve")
        severity=$(echo "$response" | grep -oP '"cvss_score":\s*"\K[0-9.]+' || echo "N/A")
        # ... lógica de amenaza y detalles ...
    fi
    sleep 1
done < "$INPUT_FILE"

# Estadísticas
critical=$(grep -c "CRÍTICA" "$OUTPUT")
medium=$(grep -c "MEDIA" "$OUTPUT")
low=$(grep -c "BAJA" "$OUTPUT")
echo "* Estadísticas" >> "$OUTPUT"
echo "- Amenazas Críticas: $critical" >> "$OUTPUT"
echo "- Amenazas Medias: $medium" >> "$OUTPUT"
echo "- Amenazas Bajas: $low" >> "$OUTPUT"

¿Qué hace este script?**

  1. Toma el archivo generado por el script original como entrada.
  2. Consulta detalles de cada CVE usando la API de Vulners.
  3. Clasifica amenazas según el puntaje CVSS:
    • ≥ 7.0: CRÍTICA
    • ≥ 4.0: MEDIA
    • < 4.0: BAJA
  4. Genera un reporte en Org-mode con secciones, propiedades y estadísticas.

Cómo Usarlo

Es tan fácil que hasta tu abuela podría ejecutarlo (si usa Emacs, claro):

  1. Ejecuta el script original para generar tu lista de vulnerabilidades:

    ./scan_vulnerabilities.sh > vuln_output.txt
    
  2. Lanza el nuevo script pasándole el archivo generado:

    ./threat_analysis.sh vuln_output.txt
    
  3. Abre el resultado en Emacs:

    emacs vulnerability_report.org
    

Características Estelares

  • Formato Org-mode Nativo: Listo para navegar con C-c C-n o exportar a HTML/PDF.
  • Clasificación de Amenazas: Separa lo crítico de lo trivial.
  • Detalles Ricos: Severidad, fechas, descripciones por CVE.
  • Estadísticas: Resumen claro de cuántas amenazas enfrentas.
  • Personalizable: Ajusta los umbrales de CVSS o añade más campos según necesites.

Resultados que Obtendrás

El output es un archivo vulnerability_report.org que luce así:

#+BEGINSRC org

Resumen de Amenazas

Paquete: openssl 1.1.1

  • CVE Analizado: CVE-2023-1234
    • Nivel de Amenaza: CRÍTICA
    • Severidad CVSS: 7.8
    • Publicado: 2023-05-01
    • Descripción: Remote code execution…

Estadísticas

  • Amenazas Críticas: 1
  • Amenazas Medias: 0
  • Amenazas Bajas: 0

#+ENDSRC

En Emacs, puedes colapsar secciones con TAB, buscar con C-s, o incluso ejecutar comandos desde el buffer con org-babel. ¡Es seguridad con estilo!

Conclusión

Con este script, transformamos un escaneo básico en un análisis profesional que vive feliz en Emacs. Ya no solo sabes qué vulnerabilidades tienes, sino qué tan malas son y qué hacer al respecto. ¿Listo para poner tu laptop a prueba? Descarga el script, dale caña y comparte tus resultados en los comentarios.

"La seguridad no es un destino, es un viaje… con Org-mode" - Grok 3

Recursos

Categoría: seguridad emacs script bash org-mode tutoriales

Suscribirse al Feed RSS | Mapa del Sitio

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

📊 Estadísticas Visit counter For Websites