ADC

Protection basée sur la grammaire SQL pour les charges utiles HTML et JSON

Citrix Web App Firewall utilise une approche de correspondance de modèles pour détecter les attaques par injection SQL dans HTTP et les JSON charges utiles. L’approche utilise un ensemble de mots-clés prédéfinis et (ou) de caractères spéciaux pour détecter une attaque et la signaler comme une violation. Bien que cette approche soit efficace, elle peut entraîner de nombreux faux positifs, entraînant l’ajout d’une ou de plusieurs règles de relaxation. Surtout lorsque des mots couramment utilisés tels que « Sélectionner » et « De » sont utilisés dans une requête HTTP ou JSON. Nous pouvons réduire les faux positifs en implémentant la vérification de la protection de la grammaire SQL HTML et la JSON charge utile.

Dans l’approche de correspondance de modèles existante, une attaque par injection SQL est identifiée si un mot-clé prédéfini et/ou un caractère spécial sont présents dans une requête HTTP. Dans ce cas, il n’est pas nécessaire que l’instruction soit une instruction SQL valide. Toutefois, dans l’approche basée sur la grammaire, une attaque par injection SQL n’est détectée que si un mot-clé ou un caractère spécial est présent dans une instruction SQL ou fait partie d’une instruction SQL, réduisant ainsi les scénarios faux positifs.

scénario d’utilisation de la protection basée sur la grammaire SQL

Considérez une déclaration intitulée « Sélectionnez mes billets et rencontrons à la station Union » présente dans une demande HTTP. Bien que l’instruction ne soit pas une instruction SQL valide, l’approche de correspondance de modèle existante détecte la demande comme une attaque par injection SQL car l’instruction utilise des mots-clés tels que « Select », « and » et « Union ». Toutefois, dans le cas de l’approche grammaire SQL, l’instruction n’est pas détectée comme une attaque de violation car les mots-clés ne sont pas présents dans une instruction SQL valide ou ne font pas partie d’une instruction SQL valide.

L’approche basée sur la grammaire peut également être configurée pour détecter les attaques par injection SQL dans les JSON charges utiles. Pour ajouter une règle de relaxation, vous pouvez réutiliser les règles de relaxation existantes. Les règles de relaxation à grains fins sont également applicables à la grammaire SQL, aux règles avec « mot clé » « ValueType ». Dans la grammaire JSON SQL, la méthode basée sur URL existante peut être réutilisée.

Configuration de la protection basée sur la grammaire SQL pour le HTML à l’aide de l’interface de ligne de commande

Pour implémenter la détection basée sur la grammaire SQL, vous devez configurer le paramètre « SQLInjectionGrammar » dans le profil Web App Firewall. Par défaut, le paramètre est désactivé. Toutes les actions SQL Injection existantes sont prises en charge, sauf l’apprentissage. Tout nouveau profil créé après une mise à niveau prend en charge la grammaire d’injection SQL et le type par défaut reste « caractère spécial ou mot-clé » et il doit être explicitement activé.

À l’invite de commandes, tapez :

add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON/OFF
<!--NeedCopy-->

Exemple :

add appfw profile profile1 –SQLInjectionAction Block –SQLInjectionGrammar ON

Configuration de la protection SQL contre les correspondances de modèles et de la protection basée sur la grammaire pour le HTML à l’aide de la CLI

Si vous avez activé les approches grammaticales et les approches de correspondance de modèle, l’appliance effectue d’abord une détection grammaire et s’il existe une détection par injection SQL avec le type d’action défini sur bloquer, la demande est bloquée (sans vérifier la détection à l’aide de la correspondance de modèle).

À l’invite de commandes, tapez :

add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON –SQLInjectionType <Any action other than ‘None’: SQLSplCharANDKeyword/ SQLSplCharORKeyword/ SQLSplChar/ SQLKeyword>
<!--NeedCopy-->

Exemple :

add appfw profile p1 –SQLInjectionAction block – SQLInjectionGrammar ON –SQLInjectionType SQLSplChar

Configurez la vérification par injection SQL uniquement avec une protection basée sur la grammaire pour le HTML à l’aide de la CLI

À l’invite de commandes, tapez :

add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON –SQLInjectionType None
<!--NeedCopy-->

Exemple :

add appfw profile p1 –SQLInjectionAction block – SQLInjectionGrammar ON –SQLInjectionType None

Règles de relaxation des liens pour une protection basée sur la grammaire SQL pour le HTML à l’aide de l’interface de ligne de commande

Si votre application exige que vous contourniez le contrôle d’ SQL injection pour un « ELEMENT » ou un « ATTRIBUT » spécifique dans la charge utile, vous devez configurer une règle de relaxation.

Remarque :

Les règles de relaxation avec « mot-clé » ValueType sont évaluées uniquement lorsque l’appliance effectue une détection à l’aide de la SQL grammaire.

La syntaxe de la commande SQL Injection inspection relaxation rules est la suivante. À l’invite de commandes, tapez :

bind appfw profile <name> -SQLInjection <String> [isRegex(REGEX| NOTREGE)] <formActionURL> [-location <location>] [-valueType (Keywor|SpecialString|Wildchar) [<valueExpression>][-isValueRegex (REGEX | NOTREGEX) ]]
<!--NeedCopy-->

Exemple :

bind appfw profile p1 -sqlinjection abc http://10.10.10.10/ bind appfw profile p1 –sqlinjection 'abc[0-9]+' http://10.10.10.10/ -isregex regEX bind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX

Configuration de la protection basée sur la grammaire SQL pour le code HTML à l’aide de l’interface graphique

Effectuez la procédure GUI pour configurer la détection d’injection HTML SQL basée sur la grammaire.

  1. Dans le volet de navigation, accédez à Security > Profiles.
  2. Dans la page Profils, cliquez sur Ajouter.
  3. Sur la page Profil de NetScaler Web App Firewall, cliquez sur Contrôles de sécurité sous Paramètres avancés.
  4. Dans la section Vérification de sécurité, accédez aux paramètres HTML SQL Injection.
  5. Cliquez sur l’icône exécutable située près de la case à cocher.
  6. Cliquez sur Paramètres d’action pour accéder à la page Paramètres d’injection SQL HMTL.
  7. Activez la case à cocher Vérifier l’utilisation de la grammaire SQL.
  8. Cliquez sur OK.

Configurer la protection basée sur la grammaire SQL pour la charge utile JSON à l’aide de l’interface de ligne de commande

Pour implémenter la détection basée sur la grammaire SQL pour la charge utile JSON, vous devez configurer le paramètre « JSONSQLInjectionGrammar » dans le profil Web App Firewall. Par défaut, le paramètre est désactivé. Toutes les actions SQL Injection existantes sont prises en charge, sauf l’apprentissage. Tout nouveau profil créé après une mise à niveau prend en charge la grammaire d’injection SQL et le type par défaut reste « caractère spécial ou mot-clé » et vous devez l’activer explicitement.

À l’invite de commandes, tapez :

add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON/OFF
<!--NeedCopy-->

Exemple :

add appfw profile profile1 –type JSON –JSONSQLInjectionAction Block –JSONSQLInjectionGrammar ON

Configuration de la protection par correspondance de modèles SQL et de la protection basée sur la grammaire pour la charge utile JSON à l’aide de la CLI

Si vous avez activé les vérifications de grammaire et de correspondance de modèle, l’appliance effectue d’abord une détection grammaire et s’il existe une détection par injection SQL avec le type d’action bloqué, la demande est bloquée (sans vérifier la détection à l’aide de la correspondance de modèle).

Remarque :

Les règles de relaxation avec « mot-clé » ValueType sont évaluées uniquement lorsque l’appliance effectue une détection à l’aide de la grammaire SQL.

À l’invite de commandes, tapez :

add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON –JSONSQLInjectionType <Any action other than ‘None’: SQLSplCharANDKeyword/ SQLSplCharORKeyword/ SQLSplChar/ SQLKeyword>
<!--NeedCopy-->

Exemple :

add appfw profile p1 –type JSON –JSONSQLInjectionAction block – JSONSQLInjectionGrammar ON –JSONSQLInjectionType SQLSplChar

Configurez l’injection SQL (vérifiez uniquement la protection basée sur la grammaire pour la charge utile JSON à l’aide de la CLI)

À l’invite de commandes, tapez :

add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON –JSONSQLInjectionType None
<!--NeedCopy-->

Exemple :

add appfw profile p1 –type JSON –JSONSQLInjectionAction block – JSONSQLInjectionGrammar ON –JSONSQLInjectionType None

Lier les règles de relaxation basées sur les URL pour une protection basée sur la grammaire JSON SQL pour la charge utile JSON à l’aide de la CLI

Si votre application exige que vous contourniez l’inspection par injection de JSON commandes pour un « ELEMENT » ou « ATTRIBUTE » spécifique dans la charge utile, vous pouvez configurer une règle de relaxation. Les règles de relaxation de l’inspection par injection de la commande JSON ont la syntaxe suivante. À l’invite de commandes, tapez :

bind appfw profile <profile name> –JSONCMDURL <expression> -comment <string> -isAutoDeployed ( AUTODEPLOYED | NOTAUTODEPLOYED ) -state ( ENABLED | DISABLED )
<!--NeedCopy-->

Exemple :

bind appfw profile p1 -sqlinjection abc http://10.10.10.10/ bind appfw profile p1 –sqlinjection 'abc[0-9]+' http:// 10.10.10.10/ -isregex regEX bind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX

Configurer la protection basée sur la grammaire SQL pour la charge utile JSON à l’aide de l’interface graphique

Effectuez la procédure GUI pour configurer la détection d’injection JSON SQL basée sur la grammaire.

  1. Dans le volet de navigation, accédez à Security > Profiles.
  2. Dans la page Profils, cliquez sur Ajouter.
  3. Sur la page Profil de Citrix Web App Firewall, cliquez sur Contrôles de sécurité sous Paramètres avancés.
  4. Dans la section Vérifications de sécurité, accédez aux paramètres d’injection SQL JSON.
  5. Cliquez sur l’icône exécutable située près de la case à cocher.
  6. Cliquez sur Paramètres d’action pour accéder à la page Paramètres d’injection JSON SQL.
  7. Activez la case à cocher Vérifier l’utilisation de la grammaire SQL.
  8. Cliquez sur OK.
Protection basée sur la grammaire SQL pour les charges utiles HTML et JSON