Citrix ADC

Support du streaming pour le traitement des demandes

Citrix Web App Firewall prend en charge le streaming côté demande pour améliorer considérablement les performances. Au lieu de mettre en mémoire tampon une demande, l’appliance examine le trafic entrant pour détecter toute violation de sécurité telle que SQL, script intersite, cohérence des champs, formats de champ. Lorsque l’appliance termine le traitement des données pour un champ, la demande est transmise au serveur principal tandis que l’appliance continue d’évaluer d’autres champs. Ce traitement des données améliore considérablement le temps de traitement dans le traitement des formulaires comportant de nombreux champs.

Citrix vous recommande d’activer le streaming pour le contenu de charge utile supérieur à 20 Mo. En outre, le serveur principal doit accepter les demandes segmentées si la diffusion en continu est activée.

Remarque :

L’action Post Body Limit est toujours définie sur Bloquer et s’applique aux modes streaming et non-streaming. Si le trafic entrant est supérieur à 20 Mo, Citrix vous recommande de PostBodyLimit configurer le sur la valeur attendue.

Bien que le processus de diffusion en continu soit transparent pour les utilisateurs, des ajustements mineurs de configuration sont nécessaires en raison des modifications suivantes :

Correspondance de motif RegEx : la correspondance de motif RegEx est désormais limitée à 4K pour une correspondance de chaîne de caractères contiguë.

Correspondance de nom de champ : Le moteur d’apprentissage du Web App Firewall ne peut distinguer que les 128 premiers octets du nom. Si un formulaire comporte plusieurs champs dont les noms ont une correspondance de chaîne identique pour les 128 premiers octets, le moteur d’apprentissage ne les distingue pas. De même, la règle de relaxation déployée peut par inadvertance assouplir tous ces champs.

La suppression des espaces blancs, le décodage en pourcentage, le décodage Unicode et la conversion des jeux de caractères sont effectués pendant la canonisation afin de fournir une inspection de contrôle de sécurité. La limite de 128 octets s’applique à la représentation canonique du nom de champ au format de caractères UTF-8. Les caractères ASCII ont une longueur d’un octet, mais la représentation UTF-8 des caractères dans certaines langues internationales peut aller de 1 octet à 4 octets. Si chaque caractère d’un nom prend 4 octets pour être converti au format UTF-8, seuls les 32 premiers caractères du nom peuvent être distingués par la règle apprise.

Vérification de la cohérence des champs : Lorsque vous activez la cohérence des champs, tous les formulaires de la session sont stockés en fonction de la balise « as_fid » insérée par le Web App Firewall sans tenir compte de l’option « action_url ».

  • Balisage de formulaire obligatoire pour la cohérence des champs de formulaire : lorsque le contrôle de cohérence des champs est activé, la balise de formulaire doit également l’être. La protection de cohérence des champs peut ne pas fonctionner si le balisage de formulaire est désactivé.
  • Cohérence des champs de formulaire sans session : le Web App Firewall n’effectue plus la conversion « GET » en « POST » des formulaires lorsque le paramètre de cohérence des champs sans session est activé. La balise de formulaire est également requise pour la cohérence des champs sans session.
  • Falsification de as_fid : si un formulaire est soumis après avoir falsifié as_fid, il déclenche une violation de cohérence de champ même si aucun champ n’a été falsifié. Dans les demandes non diffusées, cela était autorisé car les formulaires peuvent être validés à l’aide de « action_url » stocké dans la session.

Signatures : Les signatures présentent désormais les spécifications suivantes :

  • Emplacement : Il est désormais obligatoire de spécifier un emplacement pour chaque modèle. Tous les modèles de la règle DOIVENT avoir une <Location> étiquette.

  • Correspondance rapide : Toutes les règles de signature doivent avoir un modèle de correspondance rapide. S’il n’y a pas de modèle de correspondance rapide, une tentative est faite pour en sélectionner un si possible. La correspondance rapide est une chaîne littérale mais PCRE peut être utilisée pour une correspondance rapide si elle contient une chaîne littérale utilisable.

  • Emplacementsdéconseillés : Les emplacements suivants ne sont plus pris en charge dans les règles de signature.

    • HTTP_ANY
    • HTTP_RAW_COOKIE
    • HTTP_RAW_HEADER
    • HTTP_RAW_RESP_HEADER
    • HTTP_RAW_SET_COOKIE

script intersite/Transformation SQL : les données brutes sont utilisées pour la transformation car les caractères spéciaux SQL tels que le guillemet simple (‘), la barre oblique inverse () et le point-virgule (;)) et les balises de script intersite sont identiques et ne nécessitent pas la canonisation des données. La représentation des caractères spéciaux tels que le codage d’entité HTML, le codage en pourcentage ou l’ASCII est évaluée pour l’opération de transformation.

Le Web App Firewall n’inspecte plus à la fois le nom et la valeur de l’attribut pour l’opération de transformation de script intersite. Désormais, seuls les noms d’attributs de script intersite sont transformés lorsque le streaming est activé.

Traitement des balises de script intersite : dans le cadre des modifications de diffusion en continu dans NetScaler 10.5.e et versions ultérieures, le traitement des balises de script intersite a changé. Dans les versions précédentes, la présence d’un crochet ouvert (<), or close bracket (>) ou des deux crochets ouverts et fermants (<>) était signalée comme Violation de script intersite. Le comportement a changé à partir de la version 10.5.e. La présence du seul caractère de crochet ouvert (<), ou uniquement du caractère de crochet fermé (>) n’est plus considérée comme une attaque. C’est lorsqu’un caractère de crochet ouvert (<) est suivi par un caractère de crochet fermé (>), l’attaque par script intersite est signalée. Les deux caractères doivent être présents dans le bon ordre (< suivi de >) pour déclencher la violation de script intersite.

Remarque :

Message de modification du journal des violations SQL : Dans le cadre des modifications de streaming dans la version 10.5.e de Citrix ADC, nous traitons maintenant les données d’entrée en blocs. La correspondance de motifs RegEx est désormais limitée à 4K pour la correspondance de chaînes de caractères contiguës. Avec cette modification, les messages du journal des violations SQL peuvent inclure des informations différentes par rapport aux versions précédentes. Le mot-clé et le caractère spécial de l’entrée sont séparés par de nombreux octets. L’appliance dispose d’un suivi des mots-clés SQL et des chaînes spéciales lors du traitement des données, au lieu de mettre en mémoire tampon la valeur d’entrée entière. Outre le nom du champ, le message de journal inclut le mot-clé SQL, le caractère spécial SQL ou à la fois le mot-clé SQL et le caractère spécial SQL. Le reste de l’entrée n’est plus inclus dans le message de journal, comme illustré dans l’exemple suivant :

Exemple :

Dans la version 10.5, lorsque le Web App Firewall détecte la violation SQL, la chaîne d’entrée complète peut être incluse dans le message de journal suivant :

La vérification du mot-clé SQL a échoué pour le champ text="select a name from testbed1\;\(\;\)".*<blocked>

Dans la version 11.0, nous enregistrons uniquement le nom du champ, le mot-clé et le caractère spécial (le cas échéant) dans le message de journal suivant.

La vérification du mot-clé SQL a échoué pour le champ text="select(;)" <blocked>

Cette modification s’applique aux demandes contenant des types de contenu application/x-www-form-urlencoded, multipart/form-dataou text/x-gwt-rpc . Les messages de journal générés lors du traitement des charges utiles JSON ou XML ne sont pas affectés par cette modification.

Corps RAW POST : Les contrôles de sécurité sont toujours effectués sur le corps RAW POST.

ID du formulaire : Le Web App Firewall a inséré la balise « as_fid », qui est un hachage calculé du formulaire est plus unique pour la session utilisateur. Il s’agit d’une valeur identique pour un formulaire spécifique quel que soit l’utilisateur ou la session.

Jeu de caractères : si une demande ne possède pas de jeu de caractères, le jeu de caractères par défaut spécifié dans le profil d’application est utilisé lors du traitement de la demande.

Compteurs :

Des compteurs avec les préfixes « se » et « appfwreq » sont ajoutés pour suivre les compteurs de requêtes du moteur de streaming et du moteur de streaming.

nsconsmg -d statswt0 -g se_err_

nsconsmg -d statswt0 -g se_tot_

nsconsmg -d statswt0 -g se_cur_

nsconsmg -d statswt0 -g appfwreq_err_

nsconsmg -d statswt0 -g appfwreq_tot_

nsconsmg -d statswt0 -g appfwreq_cur_

_err counters: indique l’événement rare qui a dû réussir mais qui a échoué en raison d’un problème d’allocation de mémoire ou d’un autre problème de ressources.

_tot counters: des compteurs toujours plus nombreux.

_cur counters: compteurs indiquant les valeurs actuelles qui ne cessent de changer en fonction de l’utilisation des transactions en cours.

Conseils :

  • Les contrôles de sécurité du Web App Firewall doivent fonctionner de la même manière qu’auparavant.
  • Il n’y a pas d’ordre défini pour le traitement des contrôles de sécurité.
  • Le traitement côté réponse n’est pas affecté et reste inchangé.
  • Le streaming n’est pas activé si un VPN sans client est utilisé.

Important :

Calcul de la longueur du cookie : Dans la version 10.5.e, en plus de la version 11.0 de Citrix ADC (dans les versions antérieures à 65.x), le mode de traitement de l’en-tête du cookie par Web App Firewall a été modifié. L’appliance a évalué le cookie individuellement, et si la longueur d’un cookie dans l’en-tête du cookie dépassait la longueur configurée, la violation de débordement de tampon était déclenchée. Par conséquent, les demandes bloquées dans la version NetScaler 10.5 ou les versions antérieures peuvent être autorisées. La longueur de l’en-tête du cookie n’est pas calculée pour déterminer la longueur du cookie. Dans certains cas, la taille totale du cookie peut être supérieure à la valeur acceptée et le serveur peut répondre par « 400 demandes erronées ».

Remarque : La modification a été annulée. Le comportement dans NetScaler versions 10.5.e à 59.13xx.e et ses versions ultérieures est similaire à celui des versions sans amélioration de la version 10.5. L’intégralité de l’en-tête Cookie brut est désormais prise en compte lors du calcul de la longueur du cookie. Les espaces environnants et les points-virgules (;) séparant les paires nom-valeur sont également inclus dans la détermination de la longueur du cookie.

Support du streaming pour le traitement des demandes