Vladimir a eu l’occasion de tester la sécurité du logiciel PLM Windchill édité par PTC lors d’une mission de test d’intrusion.
En employant des techniques d’audit de sécurité de site web basiques, il a découvert une vulnérabilité affectant toutes les versions du logiciel. Elle lui a permis de lire les fichiers de configuration accessibles dans le dossier de l’application.
Ces fichiers, si mal configurés, peuvent contenir des comptes de services en clair, et permettre ainsi à un attaquant de pivoter dans le Système d’Information.
La description officielle de la vulnérabilité est disponible sur l’interface de support de l’éditeur.
Fuzzing d’URL
Une étape primordiale lors d’un pentest est la découverte et l’énumération des applications exposées. Sur une interface web, cela va généralement se traduire par un bruteforce de fichiers et de dossiers.
Les outils les plus utilisés à cet effet sont Dirbuster, Gobuster, wfuzz ou bien Burp avec son Intruder.
C’est une attaque par dictionnaire : une liste de chemins et fichiers connus est donnée à ces outils, lesquels vont réaliser une requête HTTP vers le serveur afin de déterminer si l’item existe.
Les dictionnaires utilisés par nos pentesters sont nombreux et dépendent des technologies utilisées par les clients. Cependant, le fichier fuzz.txt reste une valeur sûre et a fait ses preuves sur bon nombre de missions.
Beaucoup de technologies « modernes » n’exposent pas le système de fichier directement et interprètent plutôt l’URL en terme de routes applicatives. On parlera alors plus de fuzzing d’URL même si la technique reste la même. Un cas très répandu est le fuzzing d’URL sur une API REST afin de découvrir les actions et objets exposés.
Fuzzer un maximum de chemins est en général payant et permet de découvrir de nouvelles fonctionnalités, de générer des erreurs applicatives ou de trouver des vulnérabilités types inclusion/lecture de fichiers arbitraire (LFI).
Découverte de la vulnérabilité
L’auditeur, authentifié sur Windchill, observe les requêtes qui transitent entre son navigateur et le site web grâce à un proxy offensif : une page HTML génère beaucoup de requêtes transparentes pour l’utilisateur. Par exemple le téléchargement des images, des fichiers JavaScript, mais aussi des requêtes indispensables au fonctionnement de l’application tel qu’un appel API.Tous ces appels sont réalisés sur des URL bien précises que le pentester entreprend de fuzzer.
Après plusieurs routes qui n’ont rien données, une des URL semble prometteuse : l’application a répondu un code HTTP 200 à une entrée de fuzz.txt. L’entrée en question est la suivante:
/WEB-INF/web.xml
Les connaisseurs auront reconnu le chemin vers le fichier de configuration d’une application web Java. Bien qu’inaccessible directement, les développeurs de Windchill semblent avoir mal paramétrés la route https://WINDCHILLURL/Windchill/chemin/vulnerable/ et exposent le système de fichier du serveur derrière le servlet vulnérable !
La vulnérabilité
En accédant au système de fichier derrière le servlet vulnérable, l’attaquant atterrit en réalité dans le dossier codebase. Différents fichiers de configuration sont accessibles et peuvent contenir des informations intéressantes telles que des noms d’hôtes internes et des noms d’utilisateurs du Système d’Information. Dans de rares cas, il se peut que des secrets soient laissés en clair dans ces fichiers de configurations. Par défaut, Windchill chiffre à l’installation les secrets utilisés.
Nous sommes donc sur une fuite d’information authentifiée, relativement peu sensible dans la majeure partie des cas, mais qui peut également divulguer des secrets lorsque les bonnes pratiques ne sont pas respectées.
Cette vulnérabilité découverte par Vladimir TOUTAIN présente un risque qualifié d’important avec un score CVSS de 6.5. Elle impacte toutes les versions de Windchill.
Communication avec l’éditeur
Le processus de divulgation coordonnée de PTC est bien documenté à l’URL suivante: https://www.ptc.com/fr/documents/security/coordinated-vulnerability-disclosure.
La communication avec PTC a été très professionnelle bien qu’un peu longue à se mettre en place : une réunion a été organisée par le Chief Product Security Officer avec plusieurs employés PTC en lien avec le logiciel Windchill de manière à établir une roadmap claire des actions à effectuer. PTC a adressé la vulnérabilité sous 120 jours ce qui est le standard des programmes de CVD.
La vulnérabilité est documentée par l’éditeur au lien suivant : https://www.ptc.com/en/support/article/CS375403.
18/05/2022 : Premier mail de contact envoyé
25/05/2022 : Mail de relance
21/06/2022 : Mail de relance
21/06/2022 : Première réponse du CPSO s’excusant pour le retard, la vulnérabilité est en train d’être analysée, proposition d’une réunion sous 7-10 jours.
30/06/2022 : Réunion en présence du CPSO et employés PTC directement liés à Windchill. Validation de la vulnérabilité, remerciements, et planification des prochaines étapes.
01/08/2022 : Nouvelle réunion pour faire le point sur le déploiement du fix et la communication autour de la vulnérabilité.
11/08/2022 : Validation de l’article et de l’advisory par les deux parties.
31/08/2022 : Accord sur la date de publication de cet article.
🛡️ DSecBypass vous accompagne sur l’audit de sécurité de vos applications Web. N’hésitez pas à nous contacter pour des informations complémentaires et/ou un devis personnalisé 📝.