
Forscher: Daniil Khomichenok, Alexander Klimenko
Betroffene Versionen < 5.12.4 ( https://github.com/Alinto/sogo/releases/tag/SOGo-5.12.4 )
Datum: 01.10.2025
Wenn die Funktion „Benutzernamen merken“ aktiviert ist, wird dem Browser-Cookie ein base64-kodiertes Feld hinzugefügt.
Dieser Wert stammt aus dem „userName“-Parameter der POST-Anfrage an den /SOGo/connect-Endpunkt.
Die Serverantwort enthält einen base64-kodierten XSS-Payload mit Set-Cookie:
Set-Cookie: SOGoLogin=dGVzdDIyMkBxYXRlc3Qub2YuYnk8L3NjcmlwdD48c2NyaXB0PmFsZXJ0KCcxMjMnKTwvc2NyaXB0Pg%3D%3D; expires=Sun, 02-Nov-2025 09:58:23 GMT;
Übergibt man den folgenden Wert in der POST-Anfrage an den „userName“-Parameter:
Dieser enthält eine JavaScript-Injektion, die ausgeführt wird, wenn der Benutzer die Authentifizierungsseite erneut aufruft, und im _„SOGoLogin“-Cookie im Browser des Benutzers gespeichert wird.
Code der Auth-Seite, die die Injektion enthält:
<script type="text/javascript">
var cookieUsername = "[email protected]</script><script>alert('123')</script>";
var language = 'English';
var loginHint = ''
</script>
Code des Set-Cookie für „Benutzernamen merken“, der XSS-Injektionen als Parameterwert akzeptiert:
if (rememberLogin)
[response addCookie: [self _cookieWithUsername: [params objectForKey: @"userName"]]];
else
[response addCookie: [self _cookieWithUsername: nil]];
Fix: https://github.com/Alinto/sogo/commit/9e20190fad1a437f7e1307f0adcfe19a8d45184c