ADC

Vérification des scripts XML intersites

Le contrôle XML Cross-Site Scripting examine les demandes des utilisateurs pour détecter d’éventuelles attaques par script intersite dans la charge utile XML. S’il détecte une éventuelle attaque par script intersite, il bloque la requête.

Pour empêcher toute utilisation abusive des scripts de vos services Web protégés dans le but d’enfreindre la sécurité de vos services Web, le contrôle XML Cross-Site Scripting bloque les scripts qui enfreignent la même règle d’origine, selon laquelle les scripts ne doivent pas accéder au contenu ni le modifier sur un serveur autre que celui 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 les scripts intersites constituent un problème de sécurité est qu’un serveur Web qui autorise le script intersite peut être attaqué à l’aide d’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 propose diverses options d’action pour mettre en œuvre la protection par script intersite XML. Vous avez la possibilité de configurer les actions de blocage, de journalisationet de statistiques .

Le contrôle des scripts intersites XML du Web App Firewall est effectué sur la charge utile des demandes 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 par script intersites dans les valeurs de l’ élément et des attributs . Vous pouvez appliquer des assouplissements pour contourner les contrôles de sécurité dans des conditions spécifiques. 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ères. Les délimiteurs de balises HTML <, > et/** n’obligeront 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 par script intersite :

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

Options d’action

Une action est appliquée lorsque la vérification du script intersite XML détecte une attaque de script intersite dans la demande. Les options suivantes sont disponibles pour optimiser la protection des scripts intersites XML pour votre application :

  • Bloquer : l’action de blocage est déclenchée si les balises de script intersites sont détectées dans la demande.
  • Journal : génère des messages de journal indiquant les actions entreprises par le contrôle XML Cross-Site Scripting. Si le blocage est désactivé, un message de journal distinct est généré pour chaque emplacement (ELEMENT, ATTRIBUTE) dans lequel la violation de script intersite 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 : collectez 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 du cross-site scripting pour un ÉLÉMENT ou UN ATTRIBUT spécifique dans la charge utile XML, vous pouvez configurer une règle de relaxation. Les règles de relaxation du contrôle des scripts intersites XML comportent les paramètres suivants :

  • Nom—Vous pouvez utiliser des chaînes littérales ou des expressions régulières pour configurer le nom de l’ÉLÉMENT ou de l’attribut. L’expression suivante exempte tous les ÉLÉMENTS commençant par la chaîne name_ suivie d’une chaîne de lettres majuscules ou minuscules, ou de chiffres, d’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 doublons ne sont pas autorisés, mais vous pouvez utiliser la majuscule des noms et les différences d’emplacement pour créer des entrées similaires. Par exemple, chacune des règles de relaxation suivantes est unique :

  1. XMLcross-site scripting: ABC IsRegex: NOTREGEX Location: ATTRIBUTE State: ENABLED

  2. XMLcross-site scripting: ABC IsRegex: NOTREGEX Location: ELEMENT State: ENABLED

  3. XMLcross-site scripting: abc IsRegex: NOTREGEX Location: ELEMENT State: ENABLED

  4. XMLcross-site scripting: abc IsRegex: NOTREGEX Location: ATTRIBUTE State: ENABLED

  • Emplacement—Vous pouvez spécifier l’emplacement de l’exception Cross-site Scripting Check dans votre charge utile XML. L’option ELEMENT est sélectionnée par défaut. Vous pouvez le remplacer par 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 très familier avec les expressions régulières au format PCRE, vérifiez toutes 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 imprudente d’expressions régulières peut avoir des conséquences indésirables, par exemple en bloquant l’accès à du contenu Web que vous n’aviez pas l’intention de bloquer ou en autorisant une attaque que le contrôle des scripts intersites XML aurait autrement bloquée.

Utilisation de la ligne de commande pour configurer la vérification des scripts intersites XML

Pour configurer les scripts intersites XML, vérifiez les actions 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 le XML Cross-Site Scripting Check :

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

Pour configurer un script intersite XML, vérifiez la règle de relaxation à l’aide de la ligne de commande

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

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

> unbind appfw profile <name> -XMLcross-site scripting <String>

Exemple :

> bind appfw profile test_pr -XMLcross-site scripting ABC

Après avoir exécuté 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 nom littéral (NOTREGEX) et ELEMENT est sélectionné comme emplacement par défaut :

1)      XMLcross-site scripting:  ABC             IsRegex:  NOTREGEX

        Location:  ELEMENT       State:  ENABLED

`> unbind appfw profile test_pr -XMLcross-site scripting abc`

ERROR: No such XMLcross-site scripting check

`> unbind appfw profile test_pr -XMLcross-site scripting ABC`

 Done
<!--NeedCopy-->

Utilisation de l’interface graphique pour configurer la vérification des scripts intersites XML

Dans l’interface graphique, vous pouvez configurer la vérification des scripts intersites XML dans le volet correspondant au profil associé à votre application.

Pour configurer ou modifier le script intersite XML, procédez à une vérification à l’aide de l’interface graphique

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

Le tableau de contrôle de sécurité affiche les paramètres d’action actuellement configurés pour tous les contrôles de sécurité. Deux options de configuration s’offrent à vous :

a) Si vous souhaitez simplement activer ou désactiver les actions de blocage, de journalisationet de statistiques pour la vérification des scripts intersites XML, vous pouvez activer ou désactiver les cases à cocher dans le tableau, cliquer sur OK, puis sur Enregistrer et fermer pour fermer le volet de contrôle de sécurité.

b) Vous pouvez double-cliquer sur XML Cross-Site Scriptingou sélectionner la ligne et cliquer sur Paramètres d’actionpour 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 des contrôles de sécurité.

Vous pouvez procéder à la configuration d’autres contrôles de sécurité si nécessaire. Cliquez sur OK pour enregistrer toutes les modifications que vous avez apportées dans la section Contrôles 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 relative aux scripts intersites XML à l’aide de l’interface graphique

  1. Accédez à Web App Firewall > Profils, mettez en surbrillance le profil cible, puis 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éeXML Cross-Site Scriptingou sélectionnez-la et cliquez sur Modifier.
  4. Dans la boîte de dialogueRègles de relaxation des scripts intersites XML, effectuez des opérations d’ajout, demodification, desuppression, d’activation ou de désactivationpour les règles de relaxation.

Pour gérer les règles de relaxation relatives aux scripts intersites XML à l’aide du visualiseur

Pour obtenir une vue consolidée de toutes les règles de relaxation, vous pouvez surligner la ligneXML Cross-Site Scriptingdans le tableau des 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 intersite à 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 ou des balises autorisées pour les scripts intersites. Vous pouvez également afficher ou personnaliser la liste par défaut des modèles refusés par script intersite.

Les listes par défaut sont spécifiées dans Web App Firewall > Signatures > Signaturespar défaut. Si vous ne liez aucun objet de signature à votre profil, la liste par défaut des scripts intersites autorisés et refusés 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 intersites. Les balises, les attributs et les modèles, 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ées ou refusées du nouvel objet de signature défini par l’utilisateur et utilisez cet objet de signature dans le profil qui traite le trafic pour lequel vous souhaitez utiliser ces listes personnalisées d’autorisations et de refus.

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

Pour afficher les modèles de script intersite 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 de script SQL/intersite.

Le tableau Manage SQL/Cross-Site Scripting Paths contient les trois lignes suivantes relatives aux scripts intersites :

           xss/allowed/attribute

           xss/allowed/tag

           xss/denied/pattern
<!--NeedCopy-->

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

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

  1. Accédez à Web App Firewall > Signatures, sélectionnez la signature cible définie par l’utilisateur, puis cliquez sur Modifier. Cliquez sur Gérer les modèles de script SQL/intersite pour afficher le tableau Gérer les chemins de script SQL/intersite .
  2. Sélectionnez la ligne de script intersite cible.

a) Cliquez sur Gérer les élémentspour ajouter, modifier ou supprimer l’élément de script intersite 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 de script intersite par défaut, ou supprimez le chemin de script intersite pour supprimer la ligne entière. Les signatures, le contrôle de sécurité des scripts intersites HTML et le contrôle de sécurité des scripts intersites XML s’appuient sur ces éléments pour détecter les attaques afin de protéger vos applications. Personnalisation des scripts intersites Les éléments peuvent rendre votre application vulnérable aux attaques de script intersite si le modèle requis est supprimé pendant la modification.

Utilisation de la fonction de journalisation avec la vérification des scripts intersites XML

Lorsque l’action de journalisation est activée, les violations du contrôle de sécurité des scripts intersites XML sont enregistrées dans le journal d’audit en tant que violations de script AppFW_XML_Cross-site . 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

Passez au shell et suivez le fichier ns.logs dans le dossier /var/log/ pour accéder aux messages de journal relatifs aux violations des scripts intersites XML :

> \*\*Shell\*\*

> \*\*tail -f /var/log/ns.log | grep APPFW_XML_cross-site scripting\*\*
<!--NeedCopy-->

Exemple de message de journal des violations du contrôle de sécurité XML Cross-Site Scripting au format de journal natif indiquant une action <blocked>

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_cross-site scripting 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\*\*>
<!--NeedCopy-->

Exemple de message de journal des violations du contrôle de sécurité XML Cross-Site Scripting au format journal CEF indiquant une action <not blocked>

Oct  7 01:46:52 <local0.warn> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|APPFW_XML_cross-site scripting|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\*\*
<!--NeedCopy-->

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

L’interface graphique 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 Security Checks. Sélectionnez la ligneXML Cross-Site Scriptinget cliquez sur Journaux. Lorsque vous accédez aux journaux directement à partir de la vérification du profil par script intersite XML, l’interface utilisateur filtre les messages du journal et affiche uniquement les journaux relatifs à ces violations de contrôle de sécurité.

  • **Vous pouvez également accéder à la visionneuse Syslog en accédant à **NetScaler > 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 contrôle de sécurité peuvent être déclenchées pendant le traitement des demandes.

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

Le visualiseur Syslog basé sur XML fournit diverses options de filtrage pour sélectionner uniquement les messages du journal qui vous intéressent. Pour sélectionner les messages du journal pour la vérification duscript intersite XML, filtrez en sélectionnantAPPFWdans 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 cochez la case AppFW_XML_Cross-Site Scripting et que vous cliquez sur le bouton Appliquer, seuls les messages de journal relatifs aux violations du contrôle de sécurité du script intersite XML apparaissent dans le visualiseur Syslog.

Si vous placez le curseur sur la ligne d’un message de journal spécifique, plusieurs options, telles que Module, Type d’événement, IDd’é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 des scripts intersites XML

Lorsque l’action statistique est activée, le compteur du contrôle des scripts intersites XML est incrémenté lorsque le Web App Firewall prend une action pour ce contrôle 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 concernant une page contenant trois violations de script intersite XML incrémente le compteur de statistiques d’une unité, 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 du cross-site Scripting XML, vérifiez les statistiques à l’aide de la ligne de commande.

À l’invite de commande, 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 du cross-site Scripting 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 consulter les statistiques relatives aux violations et aux journaux relatifs aux scripts intersites XML. Le tableau des statistiques fournit des données en temps réel et est mis à jour toutes les 7 secondes.