La seguridad de Fluster se toma en serio. Este documento explica cómo reportar vulnerabilidades, qué versiones reciben soporte y qué medidas de seguridad están implementadas en el proyecto.
Al tratarse de un proyecto académico en desarrollo activo, solo la última
versión de la rama main recibe correcciones de seguridad.
| Versión |
|---|
main (última) |
| Versiones anteriores |
Si descubres una vulnerabilidad de seguridad, no la publiques en un issue público. En su lugar, repórtala de forma privada por una de estas vías:
- GitHub Security Advisories (recomendado): pestaña Security → Report a vulnerability del repositorio. Permite una divulgación coordinada y privada.
- Correo electrónico: [email protected]
Al reportar, incluye en la medida de lo posible:
- Descripción de la vulnerabilidad y su impacto.
- Pasos para reproducirla.
- Versión o commit afectado.
- Cualquier prueba de concepto o registro relevante.
- Confirmación de recepción en un plazo aproximado de 72 horas.
- Evaluación y respuesta sobre si se acepta la vulnerabilidad y los siguientes pasos.
- Se te mantendrá informado del progreso hasta la resolución. Agradecemos la divulgación responsable y, salvo que prefieras el anonimato, se reconocerá tu contribución.
El proyecto incorpora las siguientes protecciones:
- Autenticación con JWT y autorización por roles (admin, gestor, operador)
mediante middlewares (
authMiddleware,verificarRol). - Contraseñas hasheadas con bcrypt; nunca se almacenan ni se devuelven en texto plano.
- Helmet para cabeceras HTTP de seguridad (
X-Content-Type-Options,X-Frame-Options,Strict-Transport-Security, etc.). - CORS restringible al origen del frontend mediante la variable de entorno
CORS_ORIGIN. - Gestión centralizada de errores que oculta los detalles internos de los errores 500 en producción.
- Secretos fuera del repositorio:
.envignorado por Git; en producción se configuran como variables de entorno en la plataforma.
- Dependabot: revisión semanal de dependencias npm y GitHub Actions, con apertura automática de Pull Requests de actualización.
- Trivy: escaneo de vulnerabilidades en cada push y Pull Request a
mainydev; bloquea ante vulnerabilidadesCRITICAL/HIGHy publica los resultados en la pestaña Security del repositorio. - Integración continua: los tests deben pasar antes de cualquier despliegue.
- Define siempre un
JWT_SECRETlargo y aleatorio en producción. - Configura
CORS_ORIGINcon la URL real del frontend para no dejar la API abierta a cualquier origen. - No subas nunca el fichero
.envcon credenciales reales al repositorio.