Abus de SQL basé sur JSON

J'ai été informé le mois dernier d'un contournement dangereux qui consiste à ajouter la syntaxe JSON aux charges utiles d'injection SQL qu'un WAF est incapable d'analyser. Cette technique d'attaque a été divulguée par Team82 qui ont publié que les principaux fournisseurs de WAF manquaient de support JSON dans leurs produits, bien qu'il soit compatible par la plupart des moteurs de base de données pendant une décennie. Je ne connaissais pas cette nouvelle technique d'attaque et j'ai dû lire à ce sujet pour savoir si les WAF, que nous déployons, sont capables de bloquer ce genre d'attaque.

Team82 introduit une technique d'attaque qui agit comme le premier contournement générique de plusieurs WAF vendus par les principaux fournisseurs du secteur. Le contournement fonctionne sur les WAF vendus par cinq principaux fournisseurs : Palo Alto, F5, Amazon Web Services, Cloudflare et Imperva. Tous les fournisseurs concernés ont reconnu la divulgation de Team82 et ont mis en œuvre des correctifs qui ajoutent la compatibilité de la syntaxe JSON aux processus d'inspection SQL de leurs produits.
 
F5 CSIRT

La technique repose d'abord sur la compréhension de la manière dont les WAF identifient et signalent la syntaxe SQL comme malveillante, puis sur la recherche de la syntaxe SQL à laquelle le WAF est aveugle. Cela s'est avéré être JSON. JSON est un format standard d'échange de fichiers et de données, couramment utilisé lorsque des données sont envoyées d'un serveur à une application Web. Les attaquants 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.

Même si tous les moteurs de base de données ont ajouté la compatibilité de JSON, tous les WAF ne sont pas compatible avec cette "nouvelle" fonctionnalité. Ce manque de compatibilité dans WAF pourrait introduire une incompatibilité dans l'analyse des primitives entre WAF et les moteurs de base de données réels, et entraîner une mauvaise identification de la syntaxe SQL.

Niveaux de compatibilité de JSON pour chaque base de données principale

Team82 voulait comprendre comment WAF pouvait signaler les requêtes comme malveillantes pour trouver une syntaxe SQL que WAF ne comprendrait pas. Ils recherchaient une charge utile SQLi que WAF ne reconnaîtra pas comme SQL valide, mais le moteur de base de données l'analysera, puis ils pourraient réellement réaliser le contournement.

Par exemple, l'opérateur JSON, @>, qui vérifie si le bon JSON est contenu dans celui de gauche, a jeté le WAF dans une boucle et nous a permis de fournir des charges utiles SQLi malveillantes, nous permettant de contourner le WAF. En ajoutant simplement une syntaxe JSON simple au début de la requête, nous avons pu exfiltrer des informations sensibles à l'aide de la vulnérabilité SQLi.
 
Voici une charge utile SQLi malveillante, contenant la syntaxe JSON. Comme nous pouvons le voir, le WAF n'a pas signalé la demande comme malveillante et ne l'a pas abandonnée

Il s'agit d'un contournement dangereux, d'autant plus que de plus en plus d'entreprises continuent de publier des applications Web. Par conséquent, il est fortement recommandé de vérifier les signatures d'attaque dans nos outils de sécurité, tels que les appliances WAF, pour bloquer cette nouvelle attaque.
 
À tout à l'heure!

Commentaires