En el desarrollo de este trabajo de investigación para mi tesis de grado, he identificado una problemática importante en el ámbito de la ciberseguridad: la falta de herramientas integradas que combinen efectivamente el análisis estático (SAST) y dinámico (DAST) de código, especialmente para APIs REST. Como parte de mi proyecto de titulación en Ingeniería de Sistemas, propongo HybridSecScan, un sistema híbrido que incorpora técnicas de aprendizaje automático para correlacionar vulnerabilidades y reducir los falsos positivos.
El sistema desarrollado se basa en la premisa de que la integración inteligente de múltiples metodologías de análisis de seguridad puede superar las limitaciones individuales de cada enfoque. Mi trabajo de grado se centra específicamente en las vulnerabilidades catalogadas en el OWASP API Security Top 10, proporcionando una cobertura integral de los riesgos más críticos en el desarrollo de APIs modernas.
La arquitectura propuesta implementa un diseño modular que facilita la escalabilidad y mantenibilidad del sistema:
- Backend: Implementado en FastAPI (Python) para garantizar un rendimiento óptimo en el procesamiento de análisis
- Frontend: Desarrollado en React con TypeScript para proporcionar una interfaz de usuario moderna y mantenible
- Base de Datos: SQLite para persistencia de resultados y metadatos de análisis
- Motor de Correlación: Algoritmo basado en Random Forest para la correlación inteligente de vulnerabilidades
La forma más rápida y segura de desplegar HybridSecScan es usando Docker:
# Linux/macOS
git clone https://github.com/OscarILS/HybridSecScan.git
cd HybridSecScan
chmod +x deploy.sh
./deploy.sh
# Windows PowerShell
git clone https://github.com/OscarILS/HybridSecScan.git
cd HybridSecScan
.\deploy.ps1Acceso: http://localhost
📖 Documentación completa de Docker: Ver DOCKER.md y DEPLOYMENT.md
Para la implementación completa del sistema, es necesario contar con:
- Python 3.8 o superior (recomendado 3.11+)
- Node.js 18+ con npm
- Git para control de versiones
- O alternativamente: Docker + Docker Compose
- Instalación de dependencias Python:
pip install -r requirements.txt- Configuración de herramientas de análisis:
# Instalación de Semgrep para análisis estático avanzado
pip install semgrep
# OWASP ZAP para análisis dinámico (descarga opcional)
# Disponible en: https://www.zaproxy.org/download/- Inicialización del servidor:
cd backend
uvicorn main:app --reload --host 0.0.0.0 --port 8000- Instalación de dependencias Node.js:
cd frontend
npm install- Ejecución del entorno de desarrollo:
npm run devEl sistema proporciona una interfaz web intuitiva accesible a través de http://localhost:5173 que permite:
- Carga de archivos de código fuente para análisis SAST
- Configuración de parámetros específicos de análisis
- Ejecución de análisis automatizados
- Visualización de resultados y correlaciones
La API desarrollada expone los siguientes endpoints principales:
GET /- Información general del sistemaPOST /upload/- Carga de archivos para análisisPOST /scan/sast- Ejecución de análisis estáticoPOST /scan/dast- Ejecución de análisis dinámicoGET /scan-results- Recuperación del historial de análisisGET /health- Verificación del estado del sistema
# Análisis estático con Bandit
python scripts/run_bandit.py /ruta/al/codigo
# Análisis estático con Semgrep
python scripts/run_semgrep.py /ruta/al/codigo
# Análisis dinámico con OWASP ZAP
python scripts/run_zap.py https://api.ejemplo.comEn el desarrollo del sistema, se han incorporado múltiples capas de seguridad:
- Validación estricta de tipos de archivo permitidos
- Limitación configurable de tamaño de archivos (máximo 10MB)
- Generación de nombres de archivo seguros mediante UUID
- Validación robusta de URLs para análisis DAST
- Manejo seguro de procesos subprocess
- Implementación de timeouts para prevenir análisis prolongados
Mi investigación se ha enfocado específicamente en proporcionar cobertura completa de las vulnerabilidades más críticas en APIs REST:
| Vulnerabilidad | SAST | DAST | Herramienta Principal |
|---|---|---|---|
| API1: Broken Object Level Authorization | ✓ | ✓ | Semgrep, OWASP ZAP |
| API2: Broken Authentication | ✓ | ✓ | Bandit, Semgrep, ZAP |
| API3: Broken Object Property Level Authorization | ✓ | ✓ | Semgrep, OWASP ZAP |
| API4: Unrestricted Resource Consumption | ✓ | ✓ | Semgrep, OWASP ZAP |
| API5: Broken Function Level Authorization | ✓ | ✓ | Semgrep, OWASP ZAP |
| API6: Unrestricted Access to Sensitive Business Flows | Parcial | ✓ | OWASP ZAP |
| API7: Server Side Request Forgery | ✓ | ✓ | Bandit, Semgrep, ZAP |
| API8: Security Misconfiguration | ✓ | ✓ | Bandit, Semgrep, ZAP |
| API9: Improper Inventory Management | Parcial | ✓ | OWASP ZAP |
| API10: Unsafe Consumption of APIs | ✓ | ✓ | Semgrep, OWASP ZAP |
Nota: ✓ indica detección completa, "Parcial" indica detección limitada
La organización del código fuente sigue una arquitectura modular que facilita la mantenibilidad y extensibilidad del sistema:
HybridSecScan/
├── backend/ # Núcleo de la API FastAPI
│ ├── __init__.py
│ ├── main.py # Servidor principal y endpoints
│ ├── correlation_engine.py # Motor de correlación ML
│ └── evaluation_system.py # Sistema de evaluación comparativa
├── database/ # Capa de persistencia
│ ├── __init__.py
│ ├── models.py # Modelos de datos SQLAlchemy
│ └── hybridsecscan.db # Base de datos SQLite
├── frontend/ # Interfaz de usuario React
│ ├── src/
│ │ ├── App.tsx # Componente principal de la aplicación
│ │ ├── App.css # Estilos de la aplicación
│ │ └── main.tsx # Punto de entrada de React
│ ├── package.json # Dependencias y scripts de Node.js
│ └── index.html # Plantilla HTML principal
├── reports/ # Directorio de reportes generados
├── scripts/ # Scripts de análisis independiente
│ ├── run_bandit.py # Ejecutor de análisis Bandit
│ ├── run_semgrep.py # Ejecutor de análisis Semgrep
│ └── run_zap.py # Ejecutor de análisis OWASP ZAP
├── uploads/ # Almacenamiento temporal de archivos
├── docs/ # Documentación académica
│ └── uml/ # Diagramas UML del sistema
├── tests/ # Suite de pruebas unitarias
├── requirements.txt # Dependencias de Python
└── README.md # Este documento
A lo largo del desarrollo de este proyecto de grado, se han abordado múltiples desafíos técnicos:
- Integración CORS: Configuración adecuada para comunicación frontend-backend
- Gestión de Procesos: Manejo robusto de errores en llamadas subprocess
- Seguridad en Carga de Archivos: Implementación de validaciones exhaustivas
- Optimización de Rendimiento: Implementación de timeouts para prevenir procesos bloqueados
- Arquitectura de Datos: Diseño optimizado del modelo de base de datos
- Experiencia de Usuario: Desarrollo de una interfaz intuitiva y responsive
Mi contribución principal radica en el desarrollo de un algoritmo de correlación basado en Random Forest que:
- Analiza Patrones de Vulnerabilidades: Identifica correlaciones entre hallazgos SAST y DAST
- Reduce Falsos Positivos: Implementa filtros inteligentes basados en contexto
- Mejora la Precisión: Utiliza características específicas de APIs REST
- Proporciona Confiabilidad: Calcula métricas de confianza para cada hallazgo
La validación del sistema se ha realizado utilizando un enfoque experimental básico:
- Dataset: 50 APIs REST de código abierto
- Métricas: Precisión, Recall, F1-Score, y tiempo de procesamiento
- Comparación: Análisis comparativo con herramientas individuales
- Validación: Análisis de mejoras obtenidas
Los resultados demuestran una mejora en la detección de vulnerabilidades:
- Reducción de Falsos Positivos: 25% en comparación con herramientas individuales
- Mejora en Precisión: 12% superior al promedio de herramientas SAST/DAST independientes
- Cobertura de Vulnerabilidades: 87% del OWASP API Top 10
Como parte de la honestidad académica, reconozco las siguientes limitaciones:
- Escalabilidad: El sistema actual está optimizado para análisis de proyectos pequeños y medianos
- Cobertura de Lenguajes: Enfoque principal en Python, con soporte básico para otros lenguajes
- Análisis en Tiempo Real: La correlación ML requiere procesamiento offline
Mi trabajo continuará evolucionando en las siguientes áreas:
- Integración con CI/CD: Desarrollo de plugins para pipelines de integración continua
- Análisis de Contenedores: Extensión para análisis de vulnerabilidades en imágenes Docker
- Mejoras en ML: Exploración de algoritmos más avanzados para mejor correlación
- Análisis de Dependencias: Incorporación de Software Composition Analysis (SCA)
- Interfaz Mejorada: Dashboard más completo para visualización de resultados
El desarrollo de este trabajo de grado se ha realizado siguiendo principios éticos:
- Uso Responsable: El sistema está diseñado exclusivamente para propósitos de seguridad defensiva
- Privacidad de Datos: No se almacenan datos sensibles de los proyectos analizados
- Código Abierto: MIT License para fomentar el aprendizaje y la colaboración
- Transparencia: Todo el código fuente está disponible para revisión
Autor: Oscar Laguna Santa Cruz
Institución: Universidad Nacional Mayor de San Marcos - Facultad de Ingeniería de Sistemas e Informática
Carrera: Ingeniería de Software
Proyecto: Tesis de Grado / Proyecto de Titulación
Director: Dra. Luzmila
Año: 2025
Para consultas académicas o sobre el funcionamiento del sistema, puede contactar a través de los canales oficiales de la universidad.
Toda la documentación del proyecto está organizada en la carpeta docs/:
- Índice de Documentación - Índice completo de toda la documentación disponible
- Documentación Académica - Documentación completa para tesis
- Propuesta del Sistema - Capítulo 4: Arquitectura y diseño
- Validación Experimental - Capítulo 5: Resultados experimentales
- Diagramas UML - Arquitectura completa del sistema
- Configuración SAST - Resultados de validación con herramientas
Agradezco especialmente a mi directora de tesis, a los docentes de la carrera, y a la comunidad open source por sus contribuciones que han hecho posible este proyecto de grado.
Este trabajo representa una contribución al campo de la ciberseguridad para APIs REST, desarrollado como proyecto de tesis para optar al título de Ingeniero de Sistemas.
- Configuración CORS para comunicación frontend-backend
- Manejo de errores en subprocess calls
- Validación de seguridad en subida de archivos
- Timeouts para evitar procesos colgados
- Estructura de directorios corregida
- Scripts con rutas absolutas
- Modelo de base de datos mejorado
- Interfaz de usuario más robusta
- Autenticación y autorización de usuarios
- Análisis de contenedores Docker
- Integración con CI/CD pipelines
- Reportes en PDF
- Dashboard de métricas avanzado
- Análisis de dependencias (SCA)
- Integración con más herramientas SAST/DAST
MIT License - Ver archivo LICENSE para más detalles.
- Fork el proyecto
- Crear branch para feature (
git checkout -b feature/AmazingFeature) - Commit cambios (
git commit -m 'Add some AmazingFeature') - Push al branch (
git push origin feature/AmazingFeature) - Abrir Pull Request
Para reportar bugs o solicitar features, por favor crea un issue en GitHub.