Les chercheurs en sécurité ont développé une technique générique d'injection SQL qui contourne plusieurs pare-feux applicatifs web (WAF). Au cœur du problème, les fournisseurs de WAF n'ajoutaient pas la prise en charge de JSON dans les instructions SQL. Les attaquants potentiels peuvent ainsi masquer facilement leurs charges utiles malveillantes. Il a été confirmé que la technique de contournement, découverte par des chercheurs de Claroty de son équipe Team82, fonctionne contre les WAF de Palo Alto Networks, Amazon Web Services (AWS), Cloudflare, F5 et Imperva. Ces fournisseurs ont publié des correctifs, les clients doivent donc mettre à jour leurs déploiements WAF. Cependant, la technique peut également fonctionner contre les solutions WAF d'autres fournisseurs. Les utilisateurs doivent donc demander à ceux-ci s'ils peuvent détecter et bloquer de telles attaques. « Les pirates utilisant cette nouvelle technique pourraient accéder à une base de données principale et utiliser des vulnérabilités et des exploits supplémentaires pour exfiltrer des informations via un accès direct au serveur ou via le cloud », ont déclaré les chercheurs de Claroty dans leur rapport. « Ceci est particulièrement important pour les plates-formes OT et IoT qui sont passées à des systèmes de gestion et de surveillance basés sur le cloud. Les WAF offrent une promesse de sécurité supplémentaire à partir du cloud ; un attaquant capable de contourner ces protections dispose d'un accès étendu aux systèmes ».

Contournement trouvé lors de l'enquête sur d'autres vulnérabilités

Les chercheurs de Claroty ont développé cette technique d'attaque tout en enquêtant sur les vulnérabilités qu'ils ont trouvées dans une plate-forme de gestion d'appareils sans fil de Cambium Networks appelée cnMaestro qui peut être déployée sur site et dans le cloud. Le service cloud exploité par Cambium fournit une instance isolée distincte du serveur cnMaestro pour chaque client et utilise AWS en backend. L'équipe a trouvé sept failles dans cnMaestro, dont une faille d'injection SQL (SQLi) qui leur permettait d'exfiltrer les sessions des utilisateurs, les clés SSH, les hachages de mots de passe, les jetons et les codes de vérification de la base de données du serveur. L'injection SQL est l'une des vulnérabilités d'application Web les plus courantes et les plus dangereuses et permet aux attaquants d'injecter des requêtes SQL arbitraires dans des requêtes que l'application exécuterait ensuite sur la base de données avec ses propres privilèges.

Après avoir confirmé que leur exploit fonctionnait contre un déploiement sur site de cnMaestro, les chercheurs l'ont tenté contre une instance hébergée dans le cloud. À partir de la réponse du serveur, ils ont réalisé que la demande était probablement bloquée par le pare-feu applicatif web d'AWS, qui l'a détectée comme malveillante. Au lieu d'abandonner, les chercheurs ont décidé d'enquêter sur la manière dont celui-ci reconnaît les tentatives d'injection SQL. Ils ont donc créé leur propre application vulnérable hébergée sur AWS et lui ont envoyé des requêtes malveillantes. Leur conclusion était que le WAF utilise deux méthodologies principales pour identifier la syntaxe SQL : rechercher des mots spécifiques dans la requête qu'il reconnaît comme faisant partie de la syntaxe SQL et tenter d'analyser différentes parties de la requête en tant que syntaxe SQL valide. « Alors que la plupart des WAF utiliseront une combinaison des deux méthodologies en plus de tout ce que le WAF fait d'unique, ils ont tous deux une faiblesse commune : ils exigent que le WAF reconnaisse la syntaxe SQL », ont déclaré les chercheurs. « Cela a suscité notre intérêt et soulevé une question de recherche majeure : et si nous pouvions trouver une syntaxe SQL qu'aucun WAF ne reconnaîtrait ? ».

Les fournisseurs WAF ont négligé JSON dans SQL

Il y a environ 10 ans, les moteurs de base de données ont commencé à ajouter la prise en charge du travail avec les données JSON (JavaScript Object Notation). JSON est une norme de formatage et d'échange de données largement utilisée par les applications Web et les API Web lorsqu'elles communiquent entre elles. Étant donné que les applications échangent déjà des données au format JSON, les créateurs de moteurs de bases de données relationnelles ont trouvé utile de permettre aux développeurs d'utiliser directement ces données dans les opérations SQL sans traitement ni modification supplémentaires. PostgreSQL a ajouté cette fonctionnalité en 2012, et d'autres moteurs de base de données majeurs ont suivi au fil des ans : MySQL en 2015, MSSQL en 2016 et SQLite en 2022. Aujourd'hui, tous ces moteurs ont le support JSON activé par défaut. Cependant, les fournisseurs de WAF n'ont pas emboîté le pas, probablement parce qu'ils considéraient encore cette fonctionnalité comme étant nouvelle et peu connue. « D'après notre compréhension de la façon dont un WAF pourrait signaler les requêtes comme malveillantes, nous sommes arrivés à la conclusion que nous devons trouver une syntaxe SQL que le WAF ne comprendra pas », ont déclaré les chercheurs de Claroty. « Si nous pouvions fournir une charge utile SQLi que le WAF ne reconnaîtrait pas comme SQL valide, mais que le moteur de base de données l'analyserait, nous pourrions en fait réaliser le contournement. Il s'avère que JSON était exactement ce décalage entre l'analyseur du WAF et le moteur de base de données. Lorsque nous avons transmis des instructions SQL valides qui utilisaient une syntaxe JSON moins répandue, le WAF n'a en fait pas signalé la demande comme malveillante ».

Après avoir confirmé que le pare-feu AWS WAF était vulnérable et qu'ils pouvaient utiliser JSON pour cacher leur exploit SQLi, les chercheurs se sont demandé si d'autres WAF pourraient avoir la même faille. Les tests des WAF de plusieurs fournisseurs majeurs ont prouvé que leurs soupçons étaient fondés et qu'ils pouvaient utiliser la syntaxe JSON pour contourner les défenses SQLi avec seulement des modifications minimes entre les fournisseurs. Les chercheurs ont signalé le problème aux fournisseurs qu'ils ont trouvés vulnérables, mais ont également contribué leur technique à SQLMap, un outil de test de pénétration open source qui automatise les attaques par injection SQL. Cela signifie que la technique de contournement est désormais accessible au public et peut être utilisée par n'importe qui. « Team82 a divulgué ses conclusions à cinq des principaux fournisseurs de WAF, qui ont tous ajouté la prise en charge de la syntaxe JSON à leurs produits », ont déclaré les chercheurs.  « Nous pensons que les produits d'autres fournisseurs peuvent être affectés et que des examens de la prise en charge de JSON doivent être effectués ».