Citrix ADC

Prise en charge en continu pour le traitement des demandes

Citrix Web App Firewall prend en charge le streaming 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 des données améliore considérablement le temps de traitement dans la gestion des formulaires 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 tronquées 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 :

RegEx Pattern Match : La correspondance de motif RegEx est maintenant limitée à 4K pour la correspondance de chaîne de caractères contigus.

Correspondance des noms de champ : 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 décodage en pourcentage, le décodage Unicode et la conversion des charset sont effectués pendant la canonicalisation pour fournir une inspection de contrôle de sécurité. La limite de 128 octets est applicable à la représentation canonicalisée du nom de champ au format UTF-8. Les caractères ASCII mesurent 1 octet, mais la représentation UTF-8 des caractères dans certaines langues internationales peut varier 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 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 mention « 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 ê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 de as_fid : Si un formulaire est soumis après la falsification d’as_fid, il déclenche une violation de cohérence de champ même si aucun champ n’a été falsifié. Dans les requêtes non-streaming, cela était autorisé car les formulaires peuvent être validés en utilisant le « action_url » stocké dans la session.

Signatures : Les signatures ont maintenant les spécifications suivantes :

  • Emplacement : Il est désormais obligatoire que l’emplacement doit être spécifié pour chaque modèle. 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 PCRE peut être utilisée pour la correspondance rapide s’ils contiennent une chaîne littérale utilisable.

  • Emplacementsobsolè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

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

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

Traitement des balises de script inter-sites : dans le cadre des modifications de streaming dans NetScaler 10.5.e build et versions ultérieures, le traitement des balises de script inter-site a changé. Dans les versions antérieures, la présence de crochets ouverts (<), or close bracket (>) ou de crochets ouverts et fermément (<>) était marquée comme violation de script inter-site. 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 la violation de script inter-site.

Remarque :

Message de modification du journal des violations SQL : Dans le cadre des modifications de streaming dans la version 10.5.e ultérieure, 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 plusieurs 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 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.

É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, 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 de formulaire : Le pare-feu Web App Firewall inséré « 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 demande 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 le préfixe « se » et « appfwreq » sont ajoutés pour suivre le moteur de streaming et les compteurs de requêtes 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 doit avoir réussi mais a échoué en raison d’un problème d’allocation de mémoire ou d’une autre crise de ressources.

_tot counters : compteurs toujours plus nombreux.

_cur counters : compteurs indiquant les valeurs actuelles qui changent 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 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 (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 dépassement de tampon a été déclenchée. Par conséquent, les demandes 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 entier du cookie n’est pas calculée pour déterminer la longueur du cookie. Dans certains cas, la taille totale des cookies peut être supérieure à la valeur acceptée, et le serveur peut répondre par « 400 Bad Request ».

Remarque : La modification a été rétablie. 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