Citrix ADC

Vérification de la protection par injection SQL JSON

Une requête JSON entrante peut recevoir une injection SQL sous la forme de chaînes de requête SQL partielles ou de commandes non autorisées dans le code. Cela entraîne le vol de données de la base de données JSON de vos serveurs Web. À la réception d’une telle demande, l’appliance bloque cette demande afin de protéger vos données.

Imaginons un scénario dans lequel un client envoie une demande SQL JSON à une appliance Citrix ADC, l’analyseur JSON analyse la charge utile de la demande et si une injection SQL est observée, l’appliance applique des contraintes sur le contenu SQL JSON. La contrainte impose une limite de taille à la requête SQL JSON. Par conséquent, si une injection SQL JSON est observée, l’appliance applique une action et répond par la page d’erreur SQL JSON.

Configurer la protection par injection SQL JSON

Pour configurer la protection SQL JSON, vous devez effectuer les étapes suivantes :

  1. Ajoutez un profil de pare-feu d’application au format JSON.
  2. Définition du profil de pare-feu d’application pour les paramètres d’injection SQL JSON
  3. Configurez l’action SQL JSON en liant le profil de pare-feu d’application.

Ajouter un profil de pare-feu d’application de type JSON

Vous devez d’abord créer un profil qui spécifie comment le pare-feu d’application doit protéger votre contenu Web JSON contre les attaques par injection SQL JSON. À l’invite de commandes, tapez :

add appfw profile <name> -type (HTML | XML | JSON)

Remarque :

Lorsque vous définissez le type de profil sur JSON, les autres vérifications telles que HTML ou XML ne s’appliquent pas.

Exemple

add appfw profile profile1 –type JSON

Configurer l’action d’injection SQL JSON

Vous devez configurer une ou plusieurs actions d’injection SQL JSON pour protéger votre application contre les attaques par injection JSON SQL. À l’invite de commandes, tapez :

set appfw profile <name> - JSONSQLInjectionAction [block] [log] [stats] [none]

Les actions d’injection SQL sont les suivantes : Bloquer - Bloquer les connexions qui violent ce contrôle de sécurité. Journal - Consigner les violations de cette vérification de sécurité. Stats - Générez des statistiques pour cette vérification de sécurité. Aucun : désactivez toutes les actions pour ce contrôle de sécurité.

Configurer le type d’injection SQL JSON

Pour configurer le type d’injection SQL JSON sur un profil de pare-feu d’application, à l’invite de commandes, tapez :

set appfw profile <name> - JSONSQLInjectionType <JSONSQLInjectionType>

Exemple

set appfw profile profile1 -JSONSQLInjectionType SQLKeyword

Où sont les types d’injection SQL disponibles : Types d’injection SQL disponibles. SQLSplChar. Vérifie les caractères spéciaux SQL, SQLKeyword. Vérifie les mots-clés SQL. SQLSplCharANDKeyword. Vérifie à la fois les blocs et s’ils sont trouvés. SQLSplCharORKeyword. . Bloque si un caractère spécial SQL ou un mot-clé spl est trouvé. Valeurs possibles : SqlSplChar, SQLKeyword, SqlSplCharOrKeyword, SqlSplCharAndKeyword.

Remarque : Pour activer une ou plusieurs actions, tapez « set appfw profile - JSONSQLinjectionAction » suivi des actions à activer.

Exemple

set appfw profile profile1 -JSONSQLInjectionAction block log stat

L’exemple suivant montre un exemple de charge utile, le message de journal correspondant et les compteurs de statistiques :

Payload:
=======
{
  "test": "data",
  "username": "waf",
  "password": "select * from t1;",
  "details": {
    "surname": "test",
    "age": "23"
  }
}

Log Message:
===========
08/19/2019:08:49:46 GMT pegasus121 Informational 0-PPE-0 : default APPFW APPFW_JSON_SQL 6656 0 :  10.217.32.165 18402-PPE0 - profjson http://10.217.32.147/test.html SQL Keyword check failed for object value(with violation="select(;)") starting at offset(52) <blocked>
Counters:
========
   1  441083             1 as_viol_json_sql
   3       0             1 as_log_json_sql
   5       0             1 as_viol_json_sql_profile appfw__(profjson)
   7       0             1 as_log_json_sql_profile appfw__(profjson)
<!--NeedCopy-->

Configurer la protection par injection SQL JSON à l’aide de l’interface graphique Citrix

Suivez la procédure ci-dessous pour définir les paramètres de protection par injection SQL JSON.

  1. Dans le volet de navigation, accédez à Sécurité > Profils.
  2. Sur 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 d’injection SQL JSON .
  5. Cliquez sur l’icône exécutable située près de la case à cocher.

    Vérification de sécurité JSON SQL Injection

  6. Cliquez sur Paramètres d’action pour accéder à la page Paramètres d’injection JSON SQL.
  7. Sélectionnez les actions d’injection SQL JSON .
  8. Cliquez sur OK.

    Vérification de sécurité JSON SQL Injection

  9. Dans la page Profil de Citrix Web App Firewall, cliquez sur Règles de relaxation sous Paramètres avancés.
  10. Dans la section Règles de relaxation, sélectionnez Paramètres d’injection SQL JSON et cliquez sur Modifier.

    Vérification de sécurité JSON SQL Injection

  11. Sur la page Règle de relaxation par injection SQL JSON, saisissez l’URL à laquelle la demande doit être envoyée. Toutes les demandes envoyées à cette URL ne seront pas bloquées.
  12. Cliquez sur Créer.

    Vérification de sécurité JSON SQL Injection

Configuration de la relaxation des grains fins pour la protection par injection JSON SQL

Le Web App Firewall vous permet d’assouplir une clé ou une valeur JSON spécifique à partir de la vérification d’inspection par injection SQL basée sur JSON. Vous pouvez configurer plusieurs options pour détendre les charges utiles JSON à l’aide de règles de relaxation de grain fin.

Auparavant, la seule façon de configurer des relaxations pour les contrôles de protection JSON était de spécifier l’URL complète, ce qui contournait la vérification de l’URL complète.

La protection de sécurité SQL basée sur JSON fournit une relaxation pour les éléments suivants :

  • Noms des clés
  • Valeurs des clés

La vérification de la protection SQL basée sur JSON vous permet de configurer des relaxations qui autorisent des modèles spécifiques et bloquent le reste. Par exemple, le Web App Firewall possède actuellement un ensemble par défaut de plus de 100 mots-clés SQL. Étant donné que les pirates informatiques peuvent utiliser ces mots clés dans des attaques par injection SQL, le Web App Firewall les identifie tous comme des menaces potentielles. Si vous souhaitez assouplir un ou plusieurs mots clés considérés comme sûrs pour un emplacement spécifique, vous pouvez configurer une règle d’assouplissement qui peut contourner le contrôle de sécurité et bloquer le reste. Les commandes utilisées dans les relaxations ont des paramètres facultatifs pour le type de valeur et l’expression de valeur. Vous pouvez spécifier si l’expression de valeur est une expression régulière ou une chaîne littérale. Le type de valeur peut être laissé vide, ou vous pouvez sélectionner Mot-clé ou Chaîne spéciale.

Remarque :

Les expressions régulières sont puissantes. Surtout si vous n’êtes pas très familier avec les expressions régulières au format PCRE, vérifiez toutes les expressions régulières que vous écrivez. Assurez-vous qu’ils définissent exactement l’URL que vous souhaitez ajouter en tant qu’exception, et rien d’autre. L’utilisation imprudente de caractères génériques, et en particulier du métacaractère ou de la combinaison de caractères génériques points-astérisques (.*), peut avoir des résultats que vous ne souhaitez pas, tels que le blocage de l’accès au contenu Web que vous n’aviez pas l’intention de bloquer ou l’autorisation d’une attaque que la vérification d’injection SQL JSON aurait autrement bloquée.

Points à prendre en compte

  • L’expression de valeur est un argument facultatif. Le nom d’un champ peut ne pas comporter d’expression de valeur.
  • Un nom de clé peut être lié à plusieurs expressions de valeur.
  • Les expressions de valeur doivent se voir attribuer un type de valeur. Le type de valeur peut être : 1) Mot-clé, 2) SpecialString.
  • Vous pouvez définir plusieurs règles de relaxation par nom de clé ou combinaison d’URL.

Configuration de la relaxation du grain fin JSON pour les attaques par injection de commandes à l’aide de

Pour configurer la règle de relaxation du grain du fichier JSON, vous devez lier les entités de relaxation de grain fin au profil Web App Firewall.

À l’invite de commandes, tapez :

bind appfw profile <profile name> -jsoncmdURL <URL> -key <key name> -isregex <REGEX/NOTREGEX> -valueType <keyword/SpecialString> <value Expression> -isvalueRegex <REGEX/NOTREGEX>
<!--NeedCopy-->

Exemple :

bind appfw profile appprofile1 -jsonsqlurl www.example.com -key stn_name  -isRegex NOTREGEX -valueType Keyword “union” -isvalueRegex NOTREGEX
<!--NeedCopy-->

Pour configurer la règle de relaxation fine pour les attaques par injection de commandes basées sur JSON à l’aide de l’interface graphique

  1. Accédez à Pare-feu d’application > Profils, sélectionnez un profil, puis cliquez sur Modifier.
  2. Dans le volet Paramètres avancés, cliquez sur Règles de relaxation.
  3. Dans la section Règles de relaxation, sélectionnez un enregistrement d’ injection SQL JSON et cliquez sur Modifier.
  4. Dans le curseur Règle de relaxation par injection SQL JSON, cliquez sur Ajouter.
  5. Dans la page Règle de relaxation par injection SQL JSON, définissez les paramètres suivants.

    1. Activé
    2. Is Name Regex
    3. Nom de la clé
    4. URL
    5. Type de valeur
    6. Commentaires
    7. ID de ressource
  6. Cliquez sur Créer.

Relaxation du grain fin JSON pour les scripts intersites

Vérification de la protection par injection SQL JSON