
Divulgation technique de CVE-2018-16987 : stockage en clair des mots de passe de services externes dans le panneau d'administration Squash TM, avec score CVSS 4.1 et détails d'exploitation.
Il s'agit d'une vulnérabilité de stockage en clair d'informations sensibles et d'exposition d'informations sensibles que j'ai découverte dans Squash TM lors d'un test d'intrusion.
Squash TM est une interface web utilisée pour gérer les cas de test. Lien vers le projet
Squash TM, au moins jusqu'à la version 1.18.0, présente les mots de passe en clair des services externes dans le panneau d'administration, comme le montre un champ ta-server-password dans le code source HTML.
Dans le panneau d'administration de SquashTM, la page des services externes (alias serveurs d'automatisation) contient le mot de passe en clair du compte du service. Ces services externes peuvent être de toute nature, mais un exemple courant est un serveur Jenkins.
Voici un exemple d'URL : http://localhost:8080/squash/administration/test-automation-servers/1
Voici un extrait du code source de la page :
<label for="ta-server-password">Password</label>
<div id="ta-server-password" class="display-table-cell" style="font-weight: bold;">cleartext_password</div>
Pour que cela se produise, cela signifie également que les mots de passe des services externes sont stockés en clair, ce que j'ai confirmé en recherchant le mot de passe dans la base de données (H2 et PostgreSQL).
De plus, cette vulnérabilité est aggravée par le fait que les paramètres par défaut de l'application sont :
Score suggéré : 4.1 (CVSS:3.0/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:N/A:N)
Juste pour information pour les futurs chercheurs : les mots de passe des utilisateurs réels sont stockés en SHA1. Pas idéal.
J'ai brièvement audité la base de code ; il semble que toutes les requêtes SQL soient correctement construites (requêtes préparées).
Il y a quelques désérialisations (génération de rapports et fonction de recherche) à partir d'entrées utilisateur non filtrées (paramètres GET) utilisant une version vulnérable du composant Jackson, mais elles ne semblent pas exploitables car il n'y a pas de gestion de type polymorphe.