Superficie pequeña, revisión publicada
Missivus custodia una credencial capaz de enviar correo en nombre de su empresa. Ese es exactamente el tipo de código que debe revisarse línea a línea y documentarse en público — y así se hizo.
El modelo de seguridad en un párrafo
La política de acceso de aplicaciones de Exchange es lo que acota el radio de impacto. Todos los hallazgos de abajo quedan contenidos por ella — incluso una credencial totalmente comprometida solo puede enviar como un buzón compartido y nada más. Por eso la guía de instalación trata la política como un paso obligatorio con su comando de verificación, no como un refuerzo opcional.
Qué cubrió la revisión
El árbol de la versión v0.1.1 se auditó tras el primer despliegue en producción — el transporte de Graph, el modelo de ajustes, el método de API del correo de prueba y el componente Vue, examinados en busca de fugas de secretos a través de los registros, las respuestas de la API, el código HTML y la consola del navegador; autenticación y CSRF en la superficie de la API; validación de entrada en cada ajuste; y si los cuerpos de error de Graph pueden llegar a alguien que no sea un superusuario. Las afirmaciones sobre el comportamiento de Matomo se verificaron contra el código fuente de Matomo, no de memoria.
Hallazgos, expuestos con honestidad
Corregido antes de la publicación
- Una sobrescritura de la URL base podría haber dirigido el secreto de cliente al host de un atacante — ahora las URL se validan como orígenes https puros antes de construir cualquier petición.
- Un fallo de red a mitad de subida podía filtrar al registro una URL de subida preautenticada — ahora se convierte y se censura como cualquier otro fallo.
- Los ajustes aceptaban cualquier cadena — ahora cada campo valida su formato, de modo que un Secret ID pegado por error falla al guardar, y no más tarde como un error opaco de Microsoft.
- El método de API del correo de prueba aceptaba cualquier destinatario y respondía a GET — ahora es solo POST con una dirección validada, y se mantiene fuera de los registros de acceso del servidor.
Verificado como limpio
- Los secretos nunca llegan al código HTML, a la respuesta de la API ni a la consola del navegador — los campos de contraseña los enmascara el núcleo de Matomo, y el plugin añade encima dos salvaguardas propias.
- La llamada de prueba está protegida contra CSRF por el modelo de tokens de Matomo, con una regla de solo POST añadida como defensa en profundidad.
- Todo lo que se registra o se lanza pasa por un censor que borra los secretos conocidos por su valor y las credenciales por su forma — tokens, aserciones, cabeceras bearer, URL de subida — y que ante la duda falla del lado seguro.
Compromisos aceptados, documentados
- El token de acceso de corta duración se guarda en la caché en disco de Matomo — quien pueda leerla ya puede leer la configuración de Matomo, que puede contener el propio secreto. Se mitiga con la vida útil de 55 minutos y con la política de acceso.
- Un superusuario puede enviar correos de prueba sin limitación — un vector de molestia, no de privilegios; un superusuario podría, en cualquier caso, reconfigurar el correo directamente.
- Un secreto introducido en la interfaz de ajustes se almacena sin cifrar en la base de datos de Matomo — los niveles de archivo de configuración y de variables de entorno existen precisamente para que nunca tenga que estarlo, y tienen prioridad.
Notificar una vulnerabilidad
Escriba a la dirección de abajo con los detalles. Denos, por favor, la oportunidad de corregir el problema antes de que se haga público — y no incluya nunca un secreto de cliente, un certificado ni un archivo PEM en un informe.
Contacto de seguridad:…