# 🔒 Nota de Seguridad - Vulnerabilidad XLSX **Última actualización:** 2 de Diciembre de 2025 --- ## 📋 Resumen Al ejecutar `npm audit`, aparece una vulnerabilidad en la librería **xlsx** (SheetJS): ``` xlsx: Prototype Pollution + ReDoS Severity: high Status: No fix available ``` --- ## ❓ ¿Qué significa esto? ### Vulnerabilidades Reportadas 1. **Prototype Pollution** (GHSA-4r6h-8v6p-xvw6) - Tipo: Ataque de contaminación de prototipos - Impacto: Potencial ejecución de código malicioso 2. **Regular Expression Denial of Service (ReDoS)** (GHSA-5pgg-2g8v-p4x9) - Tipo: Ataque de denegación de servicio - Impacto: La aplicación podría congelarse con ciertos inputs --- ## 🛡️ Contexto y Mitigación ### ¿Afecta a Beyond Diagnostic? **Impacto directo:** BAJO / MEDIO **Razones:** 1. ✅ Las vulnerabilidades requieren datos manipulados específicamente 2. ✅ La aplicación carga archivos CSV/Excel locales 3. ✅ No hay entrada de datos maliciosos directos desde usuarios externos 4. ✅ Se valida toda la entrada de datos antes de procesar ### Escenarios de Riesgo | Escenario | Riesgo | Mitigación | |-----------|--------|-----------| | Archivo Excel local | ✅ Bajo | Usuario controla archivos | | CSV desde sistema | ✅ Bajo | Usuario controla archivos | | Upload desde web | ⚠️ Medio | No implementado en esta versión | | Datos remotos | ⚠️ Medio | No implementado en esta versión | --- ## ✅ Recomendaciones ### Para Desarrollo Local ``` Status: ✅ SEGURO - No hay riesgo inmediato en desarrollo local - Los datos se cargan desde archivos locales - Se validan antes de procesar ``` ### Para Producción ``` Recomendación: MONITOREAR 1. Mantener alert sobre actualizaciones de xlsx 2. Considerar alternativa si se habilita upload web 3. Implementar validaciones adicionales si es necesario ``` ### Alternativas Futuras Si en el futuro se requiere reemplazar xlsx: - **Alternative 1:** `exceljs` - Mejor mantenimiento - **Alternative 2:** `xlsx-populate` - Activamente mantenido - **Alternative 3:** API serverless (Google Sheets API, etc.) --- ## 📊 Impacto Actual | Aspecto | Status | |---------|--------| | **Funcionalidad** | ✅ No afectada | | **Aplicación local** | ✅ Segura | | **Datos locales** | ✅ Protegidos | | **Performance** | ✅ Normal | --- ## 🔍 Análisis Técnico ### Cómo se usa xlsx en Beyond Diagnostic ```typescript // En fileParser.ts const XLSX = await import('xlsx'); const workbook = XLSX.read(data, { type: 'binary' }); const worksheet = workbook.Sheets[firstSheetName]; const jsonData = XLSX.utils.sheet_to_json(worksheet); ``` **Análisis:** 1. Se importa dinámicamente (lazy loading) 2. Solo procesa archivos locales 3. Los datos se validan DESPUÉS del parsing 4. No se ejecuta código dentro de los datos --- ## 🛠️ Cómo Mitigar ### Validaciones Implementadas ```typescript // En fileParser.ts - ✅ Validación de encabezados requeridos - ✅ Validación de estructura de datos - ✅ Try-catch en parsing - ✅ Validación de tipos después del parsing - ✅ Filtrado de filas inválidas ``` ### Validaciones Adicionales (Si es necesario) ```typescript // Agregar si se habilita upload en el futuro - Validar tamaño máximo de archivo - Sanitizar nombres de columnas - Limitar número de filas - Usar sandbox para procesamiento ``` --- ## 📌 Decisión Actual ### ✅ Mantener xlsx **Justificación:** 1. ✅ Sin impacto en uso local actual 2. ✅ Funcionalidad crítica para carga de datos 3. ✅ Validaciones ya implementadas 4. ✅ Riesgo bajo en contexto actual ### ⏳ Revisión Futura - **Trimestre 2025 Q1:** Evaluar actualizaciones de xlsx - **Si se habilita upload web:** Considerar alternativa - **Si hay explotación documentada:** Actuar inmediatamente --- ## 🚨 Qué Hacer Si ### Si aparecen errores al cargar archivos 1. Verificar que el archivo Excel está correctamente formado 2. Usar formato .xlsx estándar 3. No utilizar macros o características avanzadas ### Si se necesita máxima seguridad 1. Usar datos sintéticos (ya incluidos) 2. No cargar archivos de fuentes no confiables 3. Monitorear actualizaciones de seguridad --- ## 📚 Referencias **Vulnerabilidades reportadas:** - GHSA-4r6h-8v6p-xvw6: Prototype Pollution - GHSA-5pgg-2g8v-p4x9: ReDoS **Estado actual:** - Librería: xlsx 0.18.5 - Última actualización: 2024 - Alternativas: En evaluación --- ## ✅ Conclusión **La vulnerabilidad de xlsx NO afecta** a la ejecución local de Beyond Diagnostic Prototipo en su contexto actual. La aplicación es segura para usar en: - ✅ Entorno de desarrollo local - ✅ Carga de archivos locales - ✅ Datos sintéticos Para producción, se recomienda: - ⏳ Monitorear actualizaciones - ⏳ Evaluar alternativas si cambian requisitos - ⏳ Implementar validaciones adicionales si es necesario --- **Reviewed:** 2025-12-02 **Status:** ✅ ACEPTABLE PARA USO LOCAL **Next Review:** Q1 2025