Des chercheurs en sécurité ont découvert une nouvelle vulnérabilité appelée ParseThru affectant les applications basées sur Golang qui pourraient être utilisées de manière abusive pour obtenir un accès non autorisé aux applications basées sur le cloud.
« La vulnérabilité récemment découverte permet à un acteur menaçant de contourner les validations sous certaines conditions, en raison de l’utilisation de méthodes d’analyse d’URL non sécurisées intégrées dans le langage », a déclaré la société israélienne de cybersécurité Oxeye dans un communiqué. rapport partagé avec The Hacker News.
Le problème, à la base, est lié aux incohérences résultant des changements introduits dans la logique d’analyse d’URL de Golang qui est implémentée dans la bibliothèque « net/url ».
Alors que les versions du langage de programmation antérieures à 1.17 traitaient les points-virgules comme un délimiteur de requête valide (par exemple, example.com?a=1;b=2&c=3), ce comportement a depuis été modifié pour générer une erreur lors de la recherche d’une chaîne de requête contenant un point-virgule.
« Les packages net/url et net/http acceptaient « ; » (point-virgule) comme séparateur de paramètres dans les requêtes d’URL, en plus de « & » (esperluette) », selon le notes de version pour la version 1.17 sortie en août dernier.
« Désormais, les paramètres avec des points-virgules non codés en pourcentage sont rejetés et les serveurs net/http consignent un avertissement dans ‘Server.ErrorLog’ lorsqu’ils en rencontrent un dans une URL de demande. »
Le problème survient lorsqu’une API publique basée sur Golang et construite sur la version 1.17 ou ultérieure communique avec un service backend exécutant une version antérieure, ce qui conduit à un scénario dans lequel un acteur malveillant pourrait faire passer des requêtes incorporant des paramètres de requête qui seraient autrement rejetés.
En termes simples, l’idée est d’envoyer des requêtes contenant un point-virgule dans la chaîne de requête, qui est ignorée par l’API Golang orientée utilisateur mais est traitée par le service interne. Ceci, à son tour, est rendu possible grâce au fait que une des méthodes responsable de l’obtention de la chaîne de requête analysée supprime silencieusement l’erreur renvoyée.
Oxeye a déclaré avoir identifié plusieurs instances de ParseThru dans des projets open source tels que Harbor, Traefik et Skipper, ce qui a permis de contourner les validations mises en place et d’effectuer des actions non autorisées. Les problèmes ont été résolus après une divulgation responsable aux fournisseurs respectifs.
Ce n’est pas la première fois que l’analyse d’URL pose un problème de sécurité. Plus tôt en janvier, Claroty et Snyk ont révélé jusqu’à huit failles dans des bibliothèques tierces écrites en langages C, JavaScript, PHP, Python et Ruby, résultant d’une confusion dans l’analyse des URL.