Vérification du balisage des formulaires CSRF
La vérification de balisage de formulaire CSRF (Falsification de requête inter-site) balise chaque formulaire Web envoyé par un site Web protégé aux utilisateurs avec un FormID unique et imprévisible, puis examine les formulaires Web renvoyés par les utilisateurs pour s’assurer que le formulaire fourni est correct. Cette vérification protège contre les attaques par falsification de requêtes intersites. Cette vérification s’applique uniquement aux requêtes HTML qui contiennent un formulaire Web, avec ou sans données. Elle ne s’applique pas aux requêtes XML.
Le contrôle du balisage des formulaires CSRF empêche les attaquants d’utiliser leurs propres formulaires Web pour envoyer un volume élevé de réponses contenant des données à vos sites Web protégés. Cette vérification nécessite relativement peu de capacité de traitement du processeur par rapport à certains autres contrôles de sécurité qui analysent en profondeur les formulaires Web. Il est donc capable de gérer des attaques de volume élevé sans sérieusement dégrader les performances du site Web protégé ou du Web App Firewall lui-même.
Avant d’activer la vérification du balisage des formulaires CSRF, vous devez prendre en compte les points suivants :
- Vous devez activer le balisage des formulaires. La vérification CSRF dépend du balisage des formulaires et ne fonctionne pas sans celui-ci.
- Vous devez désactiver la fonctionnalité de mise en cache intégrée de NetScaler 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 des formulaires CSRF ne sont pas compatibles.
- Vous devez 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 la falsification des requêtes intersites, et non les violations de l’URL de démarrage. La vérification des référents sollicite également moins le processeur que la vérification du balisage des formulaires CSRF. Si une demande enfreint la vérification des référents, elle est immédiatement bloquée, de sorte que le contrôle du balisage des formulaires CSRF n’est pas invoqué.
- La vérification du balisage des formulaires CSRF ne fonctionne pas avec les formulaires Web qui utilisent des domaines différents 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 dont l’URL d’origine du formulaire
http://www.example.com
et l’URL d’action du formulaire esthttp://www.example.org/form
.pl, car exemple.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 des formulaires CSRF, sous l’onglet Général, vous pouvez activer ou désactiver les actions Block, Log, Learn et Statistics.
Si vous utilisez l’interface de ligne de commande, vous pouvez entrer la commande suivante pour configurer le CSRF Form Tagging Check :
set appfw profile <name> -CSRFtagAction [**block**] [**log**] [**learn**] [**stats**] [**none**]
Pour spécifier des relaxations pour la vérification du balisage des formulaires CSRF, vous devez utiliser l’interface graphique. Dans l’onglet Contrôles de la boîte de dialogue Modifier la vérification du balisage des formulaires CSRF, cliquez sur Ajouter pour ouvrir la boîte de dialogue Ajouter une relaxation du balisage des formulaires CSRF, ou sélectionnez une relaxation existante et cliquez sur Ouvrir pour ouvrir la boîte de dialogue Modifier la relaxation des contrôles de balisage des formulaires 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 de NetScaler Web App Firewall sur une valeur inférieure ou égale à 0, car ce paramètre affecte la fonctionnalité de contrôle de protection avancée qui nécessite le bon fonctionnement de la session Web App Firewall.
Vous trouverez ci-dessous des exemples d’assouplissements liés au contrôle du balisage des formulaires CSRF :
Remarque : Les expressions suivantes sont des expressions URL qui peuvent être utilisées à la fois dans les rôles URL d’origine du formulaire et URL d’action du formulaire.
-
Choisissez les URL commençant par
http://www.example.com/search.pl?
et contenant n’importe quelle chaîne après la requête, à l’exception d’une nouvelle requête :^http://www[.]example[.]com/search[.]pl?[^?]*$ <!--NeedCopy-->
-
Choisissez des URL commençant par et dont les chemins
http://www.example-español.com
et les noms de fichiers sont composés de lettres majuscules et minuscules, de chiffres, de caractères spéciaux non ASCII et de symboles sélectionnés dans le chemin. Le caractère ñ et tous les autres caractères spéciaux sont représentés sous forme de chaînes UTF-8 codées contenant le code hexadécimal attribué à chaque caractère spécial du 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?)$
<!--NeedCopy-->
- Choisissez toutes les URL contenant la chaîne /search.cgi ? :
^[^?<>]\*/search[.]cgi?[^?<>]\*$
<!--NeedCopy-->
Important
Les expressions régulières sont puissantes. Si vous n’êtes pas parfaitement familiarisé avec les expressions régulières au format PCRE, revé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 négligente des caractères génériques, et en particulier de la combinaison de métacaractères/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 l’en-tête de référence enableValidate 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 NetScaler atteint le seuil appfw_session_limit et que les contrôles CSRF sont activés, l’application Web se bloque.
Pour empêcher le blocage des applications Web, réduisez le délai d’expiration de la session et augmentez la limite de session à l’aide des commandes suivantes :
Depuis l’interface de ligne de commande : > définir les paramètres appfw —sessiontimeout 300 Depuis le 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.