Citrix ADC

Vérification des scripts inter-sites XML

La vérification XML cross-site Scripting examine les demandes des utilisateurs pour d’éventuelles attaques de script intersite dans la charge utile XML. S’il détecte une attaque de script intersite possible, il bloque la demande.

Pour éviter l’utilisation abusive des scripts sur vos services Web protégés pour enfreindre la sécurité de vos services Web, la vérification XML cross-site Scripting bloque les scripts qui enfreignent la même règle d’origine, qui stipule que les scripts ne doivent pas accéder ou modifier le contenu sur n’importe quel serveur, mais le serveur sur lequel ils se trouvent. Tout script qui enfreint la même règle d’origine est appelé script intersite, et la pratique consistant à utiliser des scripts pour accéder ou modifier du contenu sur un autre serveur est appelée script intersite. La raison pour laquelle le script inter-site est un problème de sécurité est qu’un serveur Web qui autorise le script inter-site peut être attaqué avec un script qui ne se trouve pas sur ce serveur Web, mais sur un autre serveur Web, tel qu’un serveur détenu et contrôlé par l’attaquant.

Le Web App Firewall offre diverses options d’action pour implémenter la protection XML cross-site Scripting. Vous avez la possibilité de configurer les actions Bloquer, Loget Stats.

La vérification XML XSS du Web App Firewall est effectuée sur la charge utile des requêtes entrantes et les chaînes d’attaque sont identifiées même si elles sont réparties sur plusieurs lignes. La vérification recherche les chaînes d’attaque XSS dans l’élément et les valeurs d’attribut. Vous pouvez appliquer des relaxations pour contourner l’inspection de contrôle de sécurité dans des conditions spécifiées. Les journaux et les statistiques peuvent vous aider à identifier les relaxations nécessaires.

La section CDATA de la charge utile XML peut être un domaine d’intérêt intéressant pour les pirates car les scripts ne sont pas exécutables en dehors de la section CDATA. Une section CDATA est utilisée pour le contenu qui doit être traité entièrement comme des données de caractère. Les délimiteurs de balise HTML marquent <, >et />n’entraîneront pas l’analyseur à interpréter le code comme des éléments HTML. L’exemple suivant montre une section CDATA avec une chaîne d’attaque XSS :

    <![CDATA[rn
    <script language="Javascript" type="text/javascript">alert ("Got you")</script>rn
    ]]>

Options d’action

Une action est appliquée lorsque le contrôle XML Cross-Site Scripting détecte une attaque XSS dans la requête. Les options suivantes sont disponibles pour optimiser la protection XML cross-site Scripting pour votre application :

  • Block—Block action est déclenchée si les balises XSS sont détectées dans la requête.
  • Log—Générer des messages de journal indiquant les actions effectuées par la vérification de script inter-site XML. Si bloc est désactivé, un message de journal distinct est généré pour chaque emplacement (ELEMENT, ATTRIBUTE) dans lequel la violation XSS est détectée. Toutefois, un seul message est généré lorsque la demande est bloquée. Vous pouvez surveiller les journaux pour déterminer si les réponses aux demandes légitimes sont bloquées. Une forte augmentation du nombre de messages de journal peut indiquer des tentatives de lancement d’une attaque.
  • Statistiques : collecte des statistiques sur les violations et les journaux. Une augmentation inattendue du compteur de statistiques peut indiquer que votre application est attaquée. Si des demandes légitimes sont bloquées, vous devrez peut-être revoir la configuration pour voir si vous devez configurer de nouvelles règles de relaxation ou modifier celles existantes.

Règles de relaxation

Si votre application exige que vous contourniez la vérification de script inter-site pour un ELEMENT ou un ATTRIBUTE spécifique dans la charge utile XML, vous pouvez configurer une règle de relaxation. Les règles de relaxation de vérification de script inter-site XML ont les paramètres suivants :

  • Name—Vous pouvez utiliser des chaînes littérales ou des expressions régulières pour configurer le nom de l’ELEMENT ou de l’attribut. L’expression suivante exempte tous les ELEMENTS commençant par la chaîne name_ suivie d’une chaîne de lettres majuscules ou minuscules, ou de chiffres, qui comporte au moins deux et pas plus de quinze caractères :

    ^name_[0-9A-Za-z]{2,15}$

Remarque

Les noms sont sensibles à la casse. Les entrées en double ne sont pas autorisées, mais vous pouvez utiliser la majuscule des noms et des différences d’emplacement pour créer des entrées similaires. Par exemple, chacune des règles de relaxation suivantes est unique :

  1. XMLXSS: ABC IsRegex: NOTREGEX Location: ATTRIBUTE State: ENABLED

  2. XMLXSS: ABC IsRegex: NOTREGEX Location: ELEMENT State: ENABLED

  3. XMLXSS: abc IsRegex: NOTREGEX Location: ELEMENT State: ENABLED

  4. XMLXSS: abc IsRegex: NOTREGEX Location: ATTRIBUTE State: ENABLED

  • Emplacement : vous pouvez spécifier l’emplacement de l’exception Vérification de script inter-site dans votre charge utile XML. L’option ELEMENT est sélectionnée par défaut. Vous pouvez le changer en ATTRIBUTE.
  • Commentaire—Il s’agit d’un champ facultatif. Vous pouvez utiliser une chaîne de 255 caractères maximum pour décrire l’objectif de cette règle de relaxation.

Avertissement

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’ils définissent exactement le nom que vous souhaitez ajouter en tant qu’exception, et rien d’autre. L’utilisation négligente des expressions régulières 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 de script inter-site XML aurait autrement bloquée.

Utilisation de la ligne de commande pour configurer la vérification XML cross-site Scripting

Pour configurer des actions de vérification de script inter-site XML et d’autres paramètres à l’aide de la ligne de commande

Si vous utilisez l’interface de ligne de commande, vous pouvez entrer les commandes suivantes pour configurer la vérification de script inter-site XML :

> set appfw profile <name> -XMLXSSAction (([block] [log] [stats]) | [none])

Pour configurer une règle de relaxation XML Cross-Site Scripting, vérifiez à l’aide de la ligne de commande

Vous pouvez ajouter des règles de relaxation pour contourner l’inspection de l’inspection d’attaque de script XSS dans un emplacement spécifique. Utilisez la commande bind ou unbind pour ajouter ou supprimer la liaison de règle de relaxation, comme suit :

> bind appfw profile <name> -XMLXSS <string> [isRegex (REGEX | NOTREGEX)] [-location ( ELEMENT | ATTRIBUTE )] –comment <string> [-state ( ENABLED | DISABLED )]

> unbind appfw profile <name> -XMLXSS <String>

Exemple :

> bind appfw profile test_pr -XMLXSS ABC

Après l’exécution de la commande ci-dessus, la règle de relaxation suivante est configurée. La règle est activée, le nom est traité comme un littéral (NOTREGEX), et ELEMENT est sélectionné comme emplacement par défaut :

1)      XMLXSS:  ABC             IsRegex:  NOTREGEX

        Location:  ELEMENT       State:  ENABLED

`> unbind appfw profile test_pr -XMLXSS abc`

ERROR: No such XMLXSS check

`> unbind appfw profile test_pr -XMLXSS ABC`

 Done

Utilisation de l’interface graphique pour configurer la vérification de script inter-site XML

Dans l’interface graphique, vous pouvez configurer la vérification de script inter-site XML dans le volet pour le profil associé à votre application.

Pour configurer ou modifier la vérification XML cross-Site Scripting à l’aide de l’interface graphique

  1. Accédez à Web App Firewall > Profils, mettez en surbrillance le profil cible et cliquez sur Modifier.
  2. Dans le volet Paramètres avancés, cliquez sur Vérifications de sécurité.

La table de vérification de sécurité affiche les paramètres d’action actuellement configurés pour tous les contrôles de sécurité. Vous avez 2 options de configuration :

a) Si vous souhaitez simplement activer ou désactiver les actions Bloquer, Loget Statspour la vérification de script inter-site XML, vous pouvez activer ou désactiver les cases à cocher dans le tableau, cliquez sur OK, puis cliquez sur Enregistrer et fermer pour fermer le fichier de sécurité Volet à cocher.

b) Vous pouvez double-cliquer sur XML Cross-Site Scripting, ou sélectionner la ligne et cliquer sur Paramètres d’action, pour afficher les options d’action. Après avoir modifié l’un des paramètres d’action, cliquez sur OK pour enregistrer les modifications et revenir au tableau Vérifications de sécurité.

Vous pouvez procéder à la configuration d’autres vérifications de sécurité si nécessaire. Cliquez sur OK pour enregistrer toutes les modifications apportées dans la section Vérifications de sécurité, puis cliquez sur Enregistrer et fermer pour fermer le volet Contrôle de sécurité.

Pour configurer une règle de relaxation XML cross-Site Scripting à l’aide de l’interface graphique

  1. Accédez à Web App Firewall > Profils, mettez en surbrillance le profil cible et cliquez sur Modifier.
  2. Dans le volet Paramètres avancés, cliquez sur Règles de relaxation.
  3. Dans le tableau Règles de relaxation, double-cliquez sur l’entrée XML Cross-Site Scripting, ou sélectionnez-la et cliquez sur Modifier.
  4. Dans la boîte de dialogue Règles de relaxation de script inter-site XML, effectuez les opérations Ajouter, Modifier, Supprimer, Activer ou Désactiver pour les règles de relaxation.

Pour gérer les règles de relaxation XML Cross-Site Scripting à l’aide du visualiseur

Pour obtenir une vue consolidée de toutes les règles de relaxation, vous pouvez mettre en surbrillance la ligne XML cross-site Scripting dans le tableau Règles de relaxation, puis cliquer sur Visualiseur. Le visualiseur pour les relaxations déployées vous offre la possibilité d’ajouter une nouvelle règle ou de modifier une règle existante. Vous pouvez également activer ou désactiver un groupe de règles en sélectionnant un nœud et en cliquant sur les boutons correspondants dans le visualiseur de relaxation.

Pour afficher ou personnaliser les modèles de script inter-site à l’aide de l’interface graphique

Vous pouvez utiliser l’interface graphique pour afficher ou personnaliser la liste par défaut des attributs autorisés XSS ou des balises autorisées. Vous pouvez également afficher ou personnaliser la liste par défaut des motifs refusés XSS.

Les listes par défaut sont spécifiées dans le Web App Firewall > Signatures > Signaturespar défaut. Si vous ne liez aucun objet de signature à votre profil, la liste XSS Autorisé et Refusé par défaut spécifiée dans l’objet Signatures par défaut sera utilisée par le profil pour le traitement du contrôle de sécurité des scripts inter-sites. Les balises, attributs et motifs, spécifiés dans l’objet signatures par défaut, sont en lecture seule. Vous ne pouvez pas les modifier ou les modifier. Si vous souhaitez les modifier ou les modifier, faites une copie de l’objet Signatures par défaut pour créer un objet signature défini par l’utilisateur. Modifiez les listes Autorisé ou Refusé dans le nouvel objet signature défini par l’utilisateur et utilisez cet objet signature dans le profil qui traite le trafic pour lequel vous souhaitez utiliser ces listes personnalisées autorisées et refusées.

Pour plus d’informations sur les signatures, reportez-vous à la section http://support.citrix.com/proddocs/topic/ns-security-10-map/appfw-signatures-con.html.

Pour afficher les modèles XSS par défaut :

  1. Accédez à Web App Firewall > Signatures, sélectionnez *Signatures par défaut, puis cliquez sur Modifier. Cliquez ensuite sur Gérer les modèles SQL/XSS.

Le tableau Gérer les chemins SQL/XSS présente les trois lignes suivantes relatives à XSS :

           xss/allowed/attribute

           xss/allowed/tag

           xss/denied/pattern

Sélectionnez une ligne et cliquez sur Gérer les éléments pour afficher les éléments XSS correspondants (balise, attribut, modèle) utilisés par la vérification de script inter-site du Web App Firewall.

Pour personnaliser les éléments XSS : vous pouvez modifier l’objet signature défini par l’utilisateur pour personnaliser la balise autorisée, les attributs autorisés et les motifs refusés. Vous pouvez ajouter de nouvelles entrées ou supprimer celles qui existent déjà.

  1. Accédez à Web App Firewall > Signatures, mettez en surbrillance la signature définie par l’utilisateur cible, puis cliquez sur Modifier. Cliquez sur Gérer les modèles SQL/XSS pour afficher la table Gérer les chemins SQL/XSS.
  2. Sélectionnez la ligne XSS cible.

a) Cliquez sur Gérer les élémentspour ajouter, modifierou supprimerl’élément XSS correspondant.

b) Cliquez sur Supprimer pour supprimer la ligne sélectionnée.

Avertissement

Soyez très prudent lorsque vous supprimez ou modifiez un élément XSS par défaut, ou supprimez le chemin XSS pour supprimer toute la ligne. Les signatures, la vérification de sécurité HTML Cross-Site Scripting et la vérification de sécurité XML cross-Site Scripting s’appuient sur ces éléments pour détecter les attaques visant à protéger vos applications. La personnalisation des éléments XSS peut rendre votre application vulnérable aux attaques de script inter-site si le modèle requis est supprimé lors de la modification.

Utilisation de la fonction de journal avec la vérification de script inter-site XML

Lorsque l’action du journal est activée, les violations de vérification de sécurité XML cross-site Scripting sont enregistrées dans le journal d’audit en tant que violations APPFW_XML_XSS . Le Web App Firewall prend en charge les formats de journaux natifs et CEF. Vous pouvez également envoyer les journaux à un serveur syslog distant.

Pour accéder aux messages du journal à l’aide de la ligne de commande

Basculez vers le shell et recherchez les fichiers ns.logs dans le dossier /var/log/ pour accéder aux messages de journal relatifs aux violations de script inter-site XML :

> \*\*Shell\*\*

> \*\*tail -f /var/log/ns.log | grep APPFW_XML_XSS\*\*

Exemple d’un message de journal de violation de vérification de sécurité XML cross-site Scripting au format journal natif montrant<blocked> l’action

Oct  7 01:44:34 <local0.warn> 10.217.31.98 10/07/2015:01:44:34 GMT ns 0-PPE-1 : default APPFW APPFW_XML_XSS 1154 0 :  10.217.253.69 3466-PPE1 - owa_profile http://10.217.31.101/FFC/login.html Cross-site script check failed for field script="Bad tag: script" <\*\*blocked\*\*>

Exemple d’un message de journal de violation de vérification de sécurité XML cross-site Scripting au format de journal CEF montrant<not blocked> l’action

Oct  7 01:46:52 <local0.warn> 10.217.31.98 CEF:0|Citrix|Citrix ADC|NS11.0|APPFW|APPFW_XML_XSS|4|src=10.217.30.17 geolocation=Unknown spt=33141 method=GET request=http://10.217.31.101/FFC/login.html msg=Cross-site script check failed for field script="Bad tag: script" cn1=1607 cn2=3538 cs1=owa_profile cs2=PPE0 cs4=ERROR cs5=2015 act=\*\*not blocked\*\*

Pour accéder aux messages du journal à l’aide de l’interface graphique

L’interface graphique Citrix inclut un outil utile (Syslog Viewer) pour analyser les messages du journal. Vous disposez de plusieurs options pour accéder à la visionneuse Syslog :

  • Accédez au Web App Firewall > Profils, sélectionnez le profil cible et cliquez sur Vérifications de sécurité. Mettez en surbrillance la ligne XML cross-site Scripting, puis cliquez sur Journaux . Lorsque vous accédez aux journaux directement à partir de la vérification de script inter-site XML du profil, l’interface graphique filtre les messages de journal et affiche uniquement les journaux relatifs à ces violations de vérification de sécurité.

  • Vous pouvez également accéder à la visionneuse Syslog en accédant à Citrix ADC > Système > Audit. Dans la section Messages d’audit, cliquez sur le lien Messages Syslog pour afficher la visionneuse Syslog, qui affiche tous les messages de journal, y compris les autres journaux de violation de vérification de sécurité. Ceci est utile pour le débogage lorsque plusieurs violations de vérification de sécurité peuvent être déclenchées pendant le traitement de la demande.

  • Accédez à Web App Firewall > Stratégies > Audit. Dans la section Messages d’audit, cliquez sur le lien Messages Syslog pour afficher Syslog Viewer, qui affiche tous les messages du journal, y compris les autres journaux des violations de contrôle de sécurité.

La visionneuse Syslog basée sur XML fournit diverses options de filtre pour sélectionner uniquement les messages de journal qui vous intéressent. Pour sélectionner les messages de journalisation pour la vérification XML Cross-Site Scripting, filtrez en sélectionnant APPFW dans les options déroulantes du module. La liste Type d’événement offre un ensemble complet d’options pour affiner votre sélection. Par exemple, si vous activez la case à cocher APPFW_XML_XSS et cliquez sur le bouton Appliquer, seuls les messages de journalisation relatifs aux violations de vérification de sécurité XML Cross-Site Scripting apparaissent dans la visionneuse Syslog.

Si vous placez le curseur dans la ligne d’un message de journal spécifique, plusieurs options, telles que Module, Type d’événement, ID d’événement, IP du client, etc. apparaissent sous le message de journal. Vous pouvez sélectionner l’une de ces options pour mettre en surbrillance les informations correspondantes dans le message de journal.

Statistiques relatives aux violations de script inter-site XML

Lorsque l’action des statistiques est activée, le compteur de la vérification de script inter-site XML est incrémenté lorsque le Web App Firewall prend une action pour cette vérification de sécurité. Les statistiques sont collectées pour le taux et le nombre total pour le trafic, les violations et les journaux. La taille d’un incrément du compteur de journaux peut varier en fonction des paramètres configurés. Par exemple, si l’action de blocage est activée, une demande d’une page contenant trois violations de script inter-site XML incrémente le compteur de statistiques d’un, car la page est bloquée dès que la première violation est détectée. Toutefois, si le bloc est désactivé, le traitement de la même demande incrémente le compteur de statistiques pour les violations et les journaux de trois, car chaque violation génère un message de journal distinct.

Pour afficher les statistiques XML cross-Site Scripting, vérifiez les statistiques à l’aide de la ligne de commande

À l’invite de commandes, tapez :

> **sh appfw stats**

Pour afficher les statistiques d’un profil spécifique, utilisez la commande suivante :

> **stat appfw profile** <profile name>

Pour afficher les statistiques de script inter-site XML à l’aide de l’interface graphique

  1. Accédez à Système > Sécurité > Web App Firewall.
  2. Dans le volet droit, accédez au lien Statistiques.
  3. Utilisez la barre de défilement pour afficher les statistiques sur les violations et les journaux de script inter-site XML. Le tableau des statistiques fournit des données en temps réel et est mis à jour toutes les 7 secondes.