Citrix ADC

Prise en charge en continu pour le traitement des demandes

Citrix Web App Firewall prend en charge la diffusion en continu côté demande pour fournir une augmentation significative des performances. Au lieu de mettre en mémoire tampon une demande, l’appliance examine le trafic entrant à la recherche de violations de sécurité telles que SQL, les scripts intersites, la cohérence des champs et les formats de champ. Lorsque l’appliance a terminé le traitement des données d’un champ, la demande est transférée au serveur principal pendant que l’appliance continue d’évaluer d’autres champs. Ce traitement de données améliore considérablement le temps de traitement dans les formulaires de traitement ont de nombreux champs.

Remarque :

Citrix Web App Firewall prend en charge une taille de publication maximale de 20 Mo sans diffusion en continu. Pour une meilleure utilisation des ressources, Citrix vous recommande d’activer la diffusion en continu uniquement pour les charges utiles supérieures à 20 Mo. En outre, le serveur principal doit accepter les requêtes en morceaux si la diffusion en continu est activée.

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 la correspondance de chaîne de caractères contigus.

Field Name Match : le moteur d’apprentissage 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 pourrait, par inadvertance, modérer tous ces champs.

La suppression des espaces blancs, le pourcentage de décodage, le décodage unicode et la conversion des jeux de caractères sont effectués pendant la canonisation pour fournir une inspection de contrôle de sécurité. La limite de 128 octets est applicable pour la représentation canonisée du nom de champ au format UTF-8 caractères. Les caractères ASCII ont 1 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 la conversion 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 la balise « action_url ».

  • Balisage de formulaire obligatoire pour la cohérence des champs de formulaire : lorsque la vérification de cohérence des champs est activée, la balise de formulaire doit également être activée. La protection de cohérence des champs peut ne pas fonctionner si le balisage des formulaires 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 de champ sans session est activé. La balise de formulaire est également requise pour la cohérence des champs sans session.
  • Falsification d’as_fid : Si un formulaire est soumis après avoir altéré as_fid, il déclenche une violation de cohérence de champ même si aucun champ n’a été altéré. Dans les requêtes autres que le streaming, cela était autorisé car les formulaires peuvent être validés à l’aide du « action_url » stocké dans la session.

Signatures : Les signatures ont maintenant les caractéristiques suivantes :

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

  • 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 certains PCRE peuvent être utilisés pour une correspondance rapide s’ils contiennent une chaîne littérale utilisable.

  • Emplacements obsolètes : 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

Transformation XSS/SQL : Les données brutes sont utilisées pour la transformation car les caractères spéciaux SQL tels que guillemets simples (‘), barre oblique inverse () et point-virgule ( ;)) et les balises de script intersite sont identiques et ne nécessitent pas de canonisation des données. La représentation de caractères spéciaux tels que le codage d’entité HTML, le pourcentage d’encodage ou ASCII sont évalués 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. Maintenant, seuls les noms d’attributs de script intersite sont transformés lorsque la diffusion en continu est engagée.

Traitement des balises XSS : dans le cadre des modifications de diffusion dans NetScaler 10.5.e et versions ultérieures, le traitement des balises de script intersite a changé. Dans les versions antérieures, la présence de crochets ouverts (<), or close bracket (>), ou les deux crochets ouverts et fermés (<>) était signalée comme violation de script intersite. Le comportement a changé dans la version 10.5.e à partir. La présence de seulement le caractère entre crochets ouverts (<) ou seulement le caractère entre crochets (>) n’est plus considérée comme une attaque. C’est lorsqu’un caractère de parenthèse ouvert (<) est suivi par un caractère de parenthèse fermé (>), l’attaque de script inter-site est signalée. Les deux caractères doivent être présents dans le bon ordre (< followed by >) pour déclencher une violation de script inter-site.

Remarque :

Message de modification du journal de violation SQL : Dans le cadre des modifications de streaming dans 10.5.e build, 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 dans l’entrée sont séparés par de nombreux octets. L’appliance dispose d’une trace 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 toute la valeur d’entrée. Outre le nom du champ, le message de journal inclut le mot-clé SQL, le caractère spécial SQL ou les deux mots clés 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 entière peut être incluse dans le message de journal suivant :

La vérification du mot-clé SQL a échoué pour le champ text=”sélectionnez un nom dans testbed1 ; ( ;) ».<blocked>*

Dans 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.

Échec de la vérification des mots-clés SQL pour le champ text="select(;)" <blocked>

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

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

ID de 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 indépendamment de l’utilisateur ou de la session.

Jeu de caractères : Si une requête n’a 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 :

Les compteurs avec préfixe « se_ » et « appfwreq_ » sont ajoutés pour suivre le moteur de streaming et les compteurs de requête 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 : indiquez l’événement rare qui aurait 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 ressource.

_tot counters : compteurs toujours en augmentation.

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

Conseils :

  • Les vérifications de sécurité du Web App Firewall doivent fonctionner de la même manière qu’auparavant.
  • Il n’y a pas de commande définie pour le traitement des contrôles de sécurité.
  • Le traitement côté réponse n’est pas affecté et reste inchangé.
  • La diffusion en continu n’est pas engagée si CVPN est utilisé.

Important :

Calcul de la longueur du cookie : dans la version 10.5.e, en plus de la version 11.0 (dans les versions antérieures à 65.x), la façon de traiter l’en-tête du cookie Web App Firewall a été modifiée. 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 Buffer Overflow a été déclenchée. Par conséquent, les requêtes bloquées dans la version 10.5 de NetScaler ou les versions antérieures peuvent être autorisées. La longueur de l’en-tête du cookie entier n’est pas calculée pour déterminer la longueur du cookie. Dans certaines situations, la taille totale des cookies peut être supérieure à la valeur acceptée, et le serveur peut répondre avec « 400 Bad Request ».

Note : La modification a été annulée. Le comportement de NetScaler version 10.5.e vers la version 59.13xx.e et ses versions ultérieures est similaire aux 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.

Prise en charge en continu pour le traitement des demandes