Mi-juillet 2023, deux failles de sécurité critiques ont été découvertes dans Benno MailArchiv.
Un problème concerne une faille XSS critique (Cross Site Scripting), l'autre est une faille XSRF critique (Cross-Site Request Forgery).

Des numéros CVE ont été attribués pour ces deux failles de sécurité :

  • CVE-2023-38347 (pour la faille XSS)
  • CVE-2023-38348 (pour la faille XSRF)

Solution :

Veuillez mettre à jour votre installation de Benno MailArchiv rapidement vers la dernière version ! L'installation des paquets benno-web (version 2.10.2) et benno-rest (version 2.10.1) met à jour les deux composants pertinents. Les deux failles de sécurité critiques sont corrigées dans ces versions.

Remarque importante concernant la mise à jour :

La mise à jour impose dès l'installation l'utilisation de HTTPS (c'est-à-dire http chiffré par SSL) pour l'application Web !
Après la mise à jour, une connexion à l'application Web Benno n'est plus possible qu'en HTTPS !

Il est toujours possible d'utiliser la connexion HTTP (non chiffrée). Cependant, cela doit être activé explicitement. Dans cet article du Benno Wiki, l'activation de la connexion HTML en texte brut est expliquée : https://wiki.benno-mailarchiv.de/doku.php/http_plaintext_access

ATTENTION - IMPORTANT :
The XSS vulnerability is only effectively closed by using HTTPS
If the installation is manually switched to Plaintext HTML Login as described above,the XSS security vulnerability remains effectiveand the server is again vulnerable to attack via the security vulnerability!

More information on the two critical security vulnerabilities:

Concernant CVE-2023-38347 (vulnérabilité XSS):
L'application Web Benno affiche les e-mails dans l'interface Web sans filtrage. Avant l'affichage du code HTML, celui-ci n'est pas examiné pour détecter du code JavaScript malveillant, etc., ou n'est pas filtré.
Si un e-mail archivé contient un code JavaScript malveillant ciblé et que cet e-mail est affiché par un utilisateur dans l'application Web Benno, le code JavaScript peut accéder au cookie de session, le lire et transmettre les informations à l'attaquant. Un attaquant pourrait ainsi, par exemple, exfiltrer les données d'accès à Benno MailArchiv de l'utilisateur concerné et obtenir à son tour l'accès à l'archive de messagerie (dans la mesure où elle est accessible via Internet). De même, il serait possible de modifier le mot de passe de l'utilisateur connecté à l'application Web Benno. (Ce vecteur d'attaque est limité dans le temps à la durée de vie du cookie de session. La fermeture du navigateur Web de la victime rend le cookie de session invalide).
Dans le paquet benno-web, la gestion des cookies a été modifiée en étendant le mode httponly et en utilisant des cookies sécurisés. Un jeton CSRF a été ajouté aux formulaires dans benno-web. Grâce à cela, le serveur Web peut désormais déterminer si l'envoi d'un formulaire provient d'un utilisateur légitime via le navigateur de l'utilisateur ou non. Avec la version mise à jour de benno-web et benno-rest, cette faille de sécurité XSS est fermée. Avant l'affichage des e-mails au format HTML, le code JavaScript est désormais supprimé dans benno-rest.

Concernant CVE-2023-38348 (vulnérabilité XSRF):
En raison de la faille de sécurité XSRF, un administrateur peut, par exemple, être redirigé vers une page préparée via un lien et amené à modifier son mot de passe ou à effectuer d'autres réglages - qui peuvent ensuite être récupérés par l'attaquant. Les attaquants ont ainsi la possibilité, en tant que "man in the middle", d'obtenir des données d'accès et d'autres paramètres configurés par l'administrateur via l'application Web.
Dans le paquet benno-web, l'utilisation de jetons CSRF a été introduite. Lors de la connexion d'un utilisateur, benno-web crée un tel jeton CSRF. Celui-ci est géré dans la session et expire après la fin de la session. benno-web ajoute ce jeton CSRF à chaque formulaire Web (en tant que balise cachée) qui provoque des modifications dans une base de données lors de l'envoi (par exemple, modification du mot de passe, ajustement de l'utilisateur, etc.). Lorsqu'un administrateur envoie une modification, ce jeton est envoyé avec et vérifié pour s'assurer qu'il correspond à celui émis dans la session. Les attaques "Man in the middle" seront ainsi efficacement empêchées à l'avenir.
Avec la version mise à jour de benno-web et benno-rest, cette faille de sécurité est fermée.