
Investigadores: Daniil Khomichenok, Alexander Klimenko
Versiones afectadas < 5.12.4 ( https://github.com/Alinto/sogo/releases/tag/SOGo-5.12.4 )
Fecha: 01.10.2025
Cuando la función "Recordar nombre de usuario" está habilitada, se añade un campo codificado en base64 a la cookie del navegador.
Este valor se obtiene del parámetro "userName" en la solicitud POST al endpoint /SOGo/connect.
La respuesta del servidor contiene un payload XSS codificado en b64 en la set-cookie:
Set-Cookie: SOGoLogin=dGVzdDIyMkBxYXRlc3Qub2YuYnk8L3NjcmlwdD48c2NyaXB0PmFsZXJ0KCcxMjMnKTwvc2NyaXB0Pg%3D%3D; expires=Sun, 02-Nov-2025 09:58:23 GMT;
Al añadir el siguiente valor a la solicitud POST para el parámetro "userName":
que contiene una inyección de JavaScript que se ejecuta cuando el usuario vuelve a visitar la página de autenticación y se almacena en la "SOGoLogin" cookie en el navegador del usuario.
Código de la página de autenticación, que contiene la inyección:
<script type="text/javascript">
var cookieUsername = "[email protected]</script><script>alert('123')</script>";
var language = 'English';
var loginHint = ''
</script>
Código del set-cookie para recordar el inicio de sesión, que acepta inyecciones XSS como valor de parámetro:
if (rememberLogin)
[response addCookie: [self _cookieWithUsername: [params objectForKey: @"userName"]]];
else
[response addCookie: [self _cookieWithUsername: nil]];
Corrección: https://github.com/Alinto/sogo/commit/9e20190fad1a437f7e1307f0adcfe19a8d45184c