Citrix 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.

Configurez la protection basée sur la grammaire SQL à l’aide de l’interface de ligne

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

Configurer la protection de correspondance de motifs SQL et la protection basée sur la grammaire à l’aide de l’interface de ligne de commande

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

Configurer la vérification SQL Injection uniquement avec une protection grammaire à l’aide de l’interface de ligne de commande

À 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

Liez les règles de relaxation pour la protection basée sur la grammaire SQL à 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 SQL commande Règles de relaxation de l’inspection par injection a la syntaxe 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

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

Configurer la protection de correspondance de motifs SQL et la protection grammaire à l’aide de l’interface de ligne de commande

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

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

À 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 des règles de relaxation basées sur des URL pour une protection grammaire JSON SQL à l’aide de l’interface de ligne de commande

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. La JSON commande Règles de relaxation de l’inspection par injection a 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 à 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 à Sécurité > Profils.
  2. Dans la page Profils, cliquez sur Ajouter.
  3. Sur la page Profil Citrix 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 .

    Configuration de l'interface graphique pour la charge utile HTML de protection basée sur la grammaire SQL

  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 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 à Sécurité > Profils.
  2. Dans la page Profils, cliquez sur Ajouter.
  3. Sur la page Profil 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 JSON 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 JSON SQL.
  7. Activez la case à cocher Vérifier l’utilisation de la grammaire SQL .
  8. Cliquez sur OK.

    Configuration de l'interface graphique pour la charge utile JSON de protection basée sur la grammaire SQL

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