Citrix ADC

Vérification de la cohérence des cookies

La vérification de cohérence des cookies examine les cookies retournés par les utilisateurs, afin de vérifier qu’ils correspondent aux cookies que votre site Web a définis pour cet utilisateur. Si un cookie modifié est trouvé, il est retiré de la demande avant que la demande soit transmise au serveur Web. Vous pouvez également configurer la vérification de la cohérence des cookies pour transformer tous les cookies du serveur qu’il traite, en cryptant les cookies, en les transmettant par proxy ou en ajoutant des indicateurs aux cookies. Cette vérification s’applique aux demandes et aux réponses.

Un attaquant modifierait normalement un cookie pour accéder à des informations confidentielles sensibles en se posant comme un utilisateur précédemment authentifié, ou pour provoquer un débordement de tampon. La vérification Buffer Overflow protège contre les tentatives de provoquer un dépassement de tampon en utilisant un cookie très long. La vérification de cohérence des cookies se concentre sur le premier scénario.

Si vous utilisez l’assistant ou l’interface graphique, dans la boîte de dialogue Modifier la cohérence des cookies, sous l’onglet Général, vous pouvez activer ou désactiver les actions suivantes :

  • Bloquer
  • Journal
  • Apprendre
  • Statistiques
  • Transformez. Si elle est activée, l’action Transformer modifie tous les cookies comme spécifié dans les paramètres suivants :
    • Chiffrer les cookies du serveur. Chiffrer les cookies définis par votre serveur Web, à l’exception de ceux énumérés dans la liste de relaxation de vérification de la cohérence des cookies, avant de transmettre la réponse au client. Les cookies cryptés sont décryptés lorsque le client envoie une demande ultérieure, et les cookies déchiffrés sont réinsérés dans la demande avant d’être transmis au serveur Web protégé. Spécifiez l’un des types de chiffrement suivants :
      • Aucun. Ne pas chiffrer ou déchiffrer les cookies. Valeur par défaut.
      • Décrypter uniquement. Décrypter uniquement les cookies cryptés. Ne chiffrez pas les cookies.
      • Chiffrer la session uniquement. Chiffrer les cookies de session uniquement. Ne chiffrez pas les cookies persistants. Décrypter tous les cookies cryptés.
      • Chiffrer tout. Chiffrer les cookies de session et les cookies persistants. Décrypter tous les cookies cryptés. Remarque : lors du chiffrement des cookies, le Web App Firewall ajoute l’indicateur HttpOnlyau cookie. Cet indicateur empêche les scripts d’accéder et d’analyser le cookie. L’indicateur empêche donc un virus basé sur des scripts ou un cheval de Troie d’accéder à un cookie déchiffré et d’utiliser ces informations pour enfreindre la sécurité. Cela est fait indépendamment des paramètres de paramètres Indicateurs à ajouter dans les cookies, qui sont gérés indépendamment des paramètres de paramètres Encrypt Server Cookies.
  • Cookies du serveur proxy. Proxy tous les cookies non persistants (session) définis par votre serveur Web, à l’exception de ceux répertoriés dans la liste de relaxation de vérification de la cohérence des cookies. Les cookies sont transmis par proxy à l’aide du cookie de session Web App Firewall existant. Le Web App Firewall supprime les cookies de session définis par le serveur Web protégé et les enregistre localement avant de transférer la réponse au client. Lorsque le client envoie une demande ultérieure, le Web App Firewall réinsère les cookies de session dans la demande avant de les transférer au serveur Web protégé. Spécifiez l’un des paramètres suivants :
    • Aucun. Ne pas utiliser de cookies proxy. Valeur par défaut.
    • Session uniquement. Cookies de session proxy uniquement. Ne pas utiliser de proxy pour les cookies persistants Remarque : si vous désactivez la fonction proxy des cookies après l’avoir activée (définissez cette valeur sur Aucun après avoir été définie sur Session uniquement), la fonction proxy des cookies est maintenue pour les sessions qui ont été établies avant de la désactiver. Vous pouvez donc désactiver cette fonctionnalité en toute sécurité pendant que le Web App Firewall traite les sessions utilisateur.
  • Indicateurs à ajouter dans les cookies. Ajouter des indicateurs aux cookies pendant la transformation. Spécifiez l’un des paramètres suivants :
    • Aucun. N’ajoutez pas de drapeaux aux cookies. Valeur par défaut.
    • HTTP uniquement. Ajoutez l’indicateur HttpOnly à tous les cookies. Les navigateurs qui prennent en charge l’indicateur HttpOnly n’autorisent pas les scripts à accéder aux cookies dont cet indicateur est défini.
    • Sécurisé. Ajoutez l’indicateur Secure aux cookies qui doivent être envoyés uniquement via une connexion SSL. Les navigateurs qui prennent en charge l’indicateur Secure n’envoient pas les cookies marqués sur une connexion non sécurisée.
    • Tous. Ajoutez l’indicateur HttpOnly à tous les cookies et l’indicateur Secure aux cookies qui doivent être envoyés uniquement via une connexion SSL.

Si vous utilisez l’interface de ligne de commande, vous pouvez entrer les commandes suivantes pour configurer la vérification de cohérence des cookies :

  • set appfw profile <name> -cookieConsistencyAction [**block**] [**learn**] [**log**] [**stats**] [**none**]
  • set appfw profile <name> -cookieTransforms ([**ON**] | [**OFF**])
  • set appfw profile <name> -cookieEncryption ([**none**] | [**decryptOnly**] | [**encryptSession**] | [**encryptAll**])
  • set appfw profile <name> -cookieProxying ([**none**] | [**sessionOnly**])
  • set appfw profile <name> -addCookieFlags ([**none**] | [**httpOnly**] | [**secure**] | [**all**])

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

Voici des exemples de relaxations de vérification de cohérence des cookies :

  • Champs d’ouverture de session. L’expression suivante exempte tous les noms de cookies commençant par la chaîne logon_ suivie d’une chaîne de lettres ou de chiffres qui comporte au moins deux caractères et au plus quinze caractères :

     ^logon_[0-9A-Za-z]{2,15}$
    
  • Champs d’ouverture de session (caractères spéciaux). L’expression suivante exempte tous les noms de cookies commençant par la chaîne türkçe-logon_ suivie d’une chaîne de lettres ou de chiffres d’au moins deux caractères et d’au plus quinze caractères :

     ^txC3xBCrkxC3xA7e-logon_[0-9A-Za-z]{2,15}$
    
  • Chaînes arbitraires. Autoriser les cookies contenant la chaîne sc-item_, suivi de l’ID d’un élément que l’utilisateur a ajouté à son panier ([0-9A-Za-z]+), d’un second trait de soulignement (_), et enfin du nombre de ces éléments qu’il souhaite ([1-9][0-9]?), pour être modifiable par l’utilisateur :

     ^sc-item_[0-9A-Za-z]+_[1-9][0-9]?$
    

Attention : Les expressions régulières sont puissantes. Surtout si vous n’êtes pas familier avec les expressions régulières au format PCRE, vérifiez les expressions régulières que vous écrivez. Assurez-vous qu’elles définissent exactement l’URL que vous voulez 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 ou attendez 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 de la cohérence des cookies aurait autrement bloqué.

Important

Dans la version 10.5.e (dans quelques versions d’amélioration provisoires antérieures à 59.13xx.e) ainsi que dans la version 11.0 (dans les versions antérieures à 65.x), le traitement de l’en-tête Cookie par Web App Firewall a été modifié. Dans ces versions, chaque cookie est évalué individuellement, et si la longueur d’un cookie reçu dans l’en-tête Cookie dépasse le BufferOverflowMaxCookieLength configuré, la violation Buffer Overflow est déclenchée. À la suite de cette modification, les requêtes qui ont été bloquées dans les versions 10.5 et antérieures peuvent être autorisées, car la longueur de l’en-tête du cookie entier n’est pas calculée pour déterminer la longueur du cookie. Dans certains cas, la taille totale des cookies transmise au serveur peut être supérieure à la valeur acceptée, et le serveur peut répondre avec « 400 Bad Request ».

Notez que cette modification a été annulée. Le comportement dans les versions 10.5.e ->59.13xx.e et 10.5.e ultérieures ainsi que dans la version 11.0 65.x et les versions ultérieures est maintenant similaire à celui des versions non améliorées de la version 10.5. L’en-tête de Cookie brut entier est maintenant pris en compte lors du calcul de la longueur du cookie. Les espaces environnants et les point-virgule (;) séparant les paires nom-valeur sont également inclus dans la détermination de la longueur du cookie.**

Remarque

Cohérence des cookies sans session : le comportement de cohérence des cookies a changé dans la version 11.0. Dans les versions antérieures, le contrôle de cohérence des cookies appelle la sessionisation. Les cookies sont stockés dans la session et signés. Un suffixe « wlt_ » est ajouté aux cookies transitoires et un suffixe « wlf_ » est ajouté aux cookies persistants avant qu’ils ne soient transférés au client. Même si le client ne renvoie pas ces cookies wlf/wlt signés, le Web App Firewall utilise les cookies stockés dans la session pour effectuer le contrôle de cohérence des cookies.

Dans la version 11.0, la vérification de cohérence des cookies est sans session. Le Web App Firewall ajoute désormais un cookie qui est un hachage de tous les cookies suivis par le Web App Firewall. Si ce cookie de hachage ou tout autre cookie suivi est manquant ou altéré, le Web App Firewall supprime les cookies avant de transférer la demande au serveur back-end et déclenche une violation de cohérence des cookies. Le serveur traite la demande comme une nouvelle requête et envoie de nouveaux en-têtes Set-Cookie. La vérification de cohérence des cookies dans Citrix ADC version 13.0, 12.1 et NetScaler 12.0 et 11.1 n’a pas d’option sans session.

Vérification de la cohérence des cookies