CVE-2023-6875: Omisión de autorización en POST SMTP Mailer hasta toma de control de cuenta admin
Mi hallazgo de omisión de autorización en POST SMTP Mailer, el flujo del proof of concept y por qué el impacto era alto.
Este fue mi primer bug bounty grande: CVE-2023-6875, una omisión de autorización en el plugin POST SMTP Mailer para WordPress.
El proof of concept público está acá:
Envié el proof of concept a Wordfence durante su Holiday Bug Bonanza. El PoC recibió un premio extra, y eso hizo que el hallazgo se sintiera como un hito real para mí.
El bug
La vulnerabilidad afectaba al plugin POST SMTP Mailer para WordPress, específicamente al flujo de conexión de la app móvil.
Los avisos públicos la describen como una omisión de autorización causada por un problema de type juggling en el endpoint REST connect-app. En la práctica, un atacante no autenticado podía resetear la API key usada por la app del mailer y luego usar ese acceso para leer logs de correo.
Eso se vuelve serio rápido porque los logs de correo de WordPress suelen contener emails de restablecimiento de contraseña.
Escala
Como referencia de escala, la página del plugin en WordPress.org actualmente lista POST SMTP Mailer con 300,000+ instalaciones activas.
Ese no es el conteo histórico exacto de sitios vulnerables. Es el conteo actual de instalaciones activas mostrado por WordPress.org. Aun así, muestra por qué el bug importaba: no era un plugin pequeño instalado en unos pocos sitios de prueba.
BleepingComputer cubrió el caso el 11 de enero de 2024, describiendo POST SMTP Mailer como un plugin de entrega de email usado por 300,000 sitios web y reportando que más de 150k sitios WordPress estaban en riesgo de toma de control.
Por qué importaba
La ruta vulnerable podía permitirle a un atacante no autenticado:
- Resetear o controlar el token de acceso de la API del mailer.
- Leer metadatos y contenido de logs de correo.
- Localizar emails de restablecimiento de contraseña.
- Usar el flujo de reset para tomar control de una cuenta.
Para un sitio WordPress, exponer emails de restablecimiento de contraseña puede convertir un bug en un plugin de correo en toma de control de cuenta.
Forma del proof of concept
No estoy incrustando el script completo acá porque el repositorio público ya lo tiene. Lo importante para este writeup es la cadena:
El PoC hacía cuatro cosas:
- Configuraba un token de app controlado a través del endpoint de conexión vulnerable.
- Disparaba un email de restablecimiento de contraseña en el entorno de prueba.
- Usaba el token controlado para recuperar logs del mailer.
- Seleccionaba el log de correo relevante y mostraba su contenido.
Eso hizo que el impacto fuera fácil de revisar. El reporte no dependía de lenguaje de riesgo vago; mostraba un camino desde acceso no autenticado hasta exposición de emails sensibles de reset.