Citrix ADC

Vérification du marquage des formulaires CSRF

La vérification du marquage de formulaire CSRF (Cross Site Request Forgery) marque chaque formulaire Web envoyé par un site Web protégé aux utilisateurs ayant un FormID unique et imprévisible, puis examine les formulaires Web renvoyés par les utilisateurs pour s’assurer que le FormID fourni est correct. Cette vérification protège contre les attaques de falsification de requêtes intersites. Cette vérification s’applique uniquement aux demandes HTML qui contiennent un formulaire Web, avec ou sans données. Il ne s’applique pas aux requêtes XML.

La vérification CSRF Form Tagging empêche les attaquants d’utiliser leurs propres formulaires Web pour envoyer des réponses de formulaire à volume élevé avec des données à vos sites Web protégés. Ce contrôle nécessite relativement peu de capacité de traitement de l’UC par rapport à certains autres contrôles de sécurité qui analysent les formulaires Web en profondeur. Il est donc capable de gérer les attaques de volume élevé sans dégrader sérieusement les performances du site Web protégé ou du Web App Firewall lui-même.

Avant d’activer la vérification de marquage des formulaires CSRF, vous devez être conscient des éléments suivants :

  • Vous devez activer le balisage des formulaires. La vérification CSRF dépend de l’étiquetage des formulaires et ne fonctionne pas sans elle.
  • Vous devez désactiver la fonctionnalité Citrix ADC Integrated Caching pour toutes les pages Web contenant des formulaires protégés par ce profil. La fonctionnalité de mise en cache intégrée et le balisage de formulaire CSRF ne sont pas compatibles.
  • Vous devriez envisager d’activer la vérification des référents. La vérification des référents fait partie de la vérification de l’URL de démarrage, mais elle empêche les falsification des requêtes intersites, et non les violations de l’URL de démarrage. La vérification des référents met également moins de charge sur l’UC que la vérification du marquage des formulaires CSRF. Si une demande ne respecte pas la vérification des référents, elle est immédiatement bloquée, de sorte que la vérification de marquage des formulaires CSRF n’est pas invoquée.
  • La vérification de marquage des formulaires CSRF ne fonctionne pas avec les formulaires Web qui utilisent différents domaines dans l’URL d’origine du formulaire et l’URL d’action du formulaire. Par exemple, le balisage de formulaire CSRF ne peut pas protéger un formulaire Web avec une URL d’origine de formulaire http://www.example.com et une URL d’action de formulaire de http://www.example.org/form.pl, car example.com et example.org sont des domaines différents.

Si vous utilisez l’assistant ou l’interface graphique, dans la boîte de dialogue Modifier la vérification du balisage de formulaire CSRF, sous l’onglet Général, vous pouvez activer ou désactiver les actions Bloquer, Journaliser, Apprendre et Statistiques.

Si vous utilisez l’interface de ligne de commande, vous pouvez entrer la commande suivante pour configurer la vérification du balisage de formulaire CSRF :

  • set appfw profile <name> -CSRFtagAction [**block**] [**log**] [**learn**] [**stats**] [**none**]

Pour spécifier des relaxations pour la vérification de marquage de formulaire CSRF, vous devez utiliser l’interface graphique. Sous l’onglet Vérifications de la boîte de dialogue Modifier le contrôle du marquage du formulaire CSRF, cliquez sur Ajouter pour ouvrir la boîte de dialogue Ajouter la relaxation du contrôle du marquage du formulaire CSRF ou sélectionnez une relaxation existante et cliquez sur Ouvrir pour ouvrir la boîte de dialogue Modifier la relaxation du contrôle du marquage du formulaire CSRF. L’une ou l’autre des boîtes de dialogue fournit les mêmes options pour configurer une relaxation.

Une alerte est générée lorsque vous définissez la limite de session Citrix Web App Firewall sur une valeur inférieure ou égale à 0, car un tel paramètre affecte la fonctionnalité de vérification de la protection avancée qui nécessite une session de pare-feu Web App qui fonctionne correctement.

Voici des exemples d’assouplissements de vérification du marquage des formulaires CSRF :

Remarque : Les expressions suivantes sont des expressions d’URL qui peuvent être utilisées à la fois dans les rôles URL d’origine du formulaire et URL d’action de formulaire.

  • Choisissez les URL commençant parhttp://www.example.com/search.pl? et contenant une chaîne après la requête, à l’exception d’une nouvelle requête :

     ^http://www[.]example[.]com/search[.]pl?[^?]*$
    
  • Choisissez les URL commençant par http://www.example-español.com et dont les chemins d’accès et les noms de fichiers sont constitués de majuscules et minuscules, de chiffres, de caractères spéciaux non ASCII et de symboles sélectionnés dans le chemin d’accès. Le caractère ñ et tous les autres caractères spéciaux sont représentés sous la forme de chaînes UTF-8 codées contenant le code hexadécimal attribué à chaque caractère spécial dans le jeu de caractères UTF-8 :

    ^http://www[.]example-espa\xC3\xB1ol[.]com/(([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])
([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])\*/)\*([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])*[.](asp|htp|php|s?html?)$
  • Choisissez toutes les URL qui contiennent la chaîne /search.cgi?:
    ^[^?<>]\*/search[.]cgi?[^?<>]\*$

Important

Les expressions régulières sont puissantes. Si vous n’êtes pas très familier avec les expressions régulières au format PCRE, vérifiez 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 négligente des caractères génériques, et en particulier de la combinaison de métacaractres/caractères génériques (.*), peut avoir des résultats que vous ne voulez pas, comme bloquer l’accès au contenu Web que vous n’aviez pas l’intention de bloquer ou autoriser une attaque que la vérification aurait autrement bloquée.

Conseil

Lorsque EnableValidate en-tête référent est activé sous l’action d’URL de démarrage, assurez-vous que l’URL d’en-tête de référence est également ajoutée à StartURL.

Remarque

Lorsque Citrix ADC atteint la limite appfw_session_limit et que les vérifications CSRF sont activées, l’application Web se bloque.

Pour éviter le gel des applications Web, réduisez le délai d’expiration de session et augmentez la limite de session à l’aide des commandes suivantes :

À partir de la CLI : > définir les paramètres appfw —sessiontimeout 300 De shell : root @ns # nsapimgr_wr.sh -s appfw_session_limit=200000

La journalisation et la génération d’alarmes SNMP lorsque appfw_session_limit est atteinte vous aident à résoudre les problèmes et à déboguer.

Vérification du marquage des formulaires CSRF