web-dev-qa-db-fra.com

Filtre IE8 XSS: que fait-il vraiment?

Internet Explorer 8 possède une nouvelle fonctionnalité de sécurité, un filtre XSS qui tente d'intercepter les tentatives de script intersite. Il est décrit de cette façon:

Le filtre XSS, une fonctionnalité nouvelle d'Internet Explorer 8, détecte JavaScript dans les URL et les requêtes HTTP POST. Si JavaScript est détecté, le filtre XSS recherche des preuves de réflexion, des informations qui seraient renvoyées à la attaque du site Web si la demande d'attaque a été soumise sans changement. Si une réflexion est détectée, le filtre XSS nettoie la demande d'origine afin que le JavaScript supplémentaire ne puisse pas être exécuté.

Je constate que le filtre XSS intervient même lorsqu'il n'y a pas de "preuve de réflexion", et je commence à penser que le filtre remarque simplement lorsqu'une demande est adressée à un autre site et que la réponse contient JavaScript.

Mais même cela est difficile à vérifier car l'effet semble aller et venir. IE a différentes zones, et juste au moment où je pense avoir reproduit le problème, le filtre ne se déclenche plus et je ne sais pas pourquoi.

Quelqu'un a des conseils sur la façon de lutter contre cela? Qu'est-ce que le filtre recherche vraiment? Existe-t-il un moyen pour un bon gars de POST données sur un site tiers qui peut retourner du HTML à afficher dans une iframe et ne pas déclencher le filtre?

Contexte: je charge une bibliothèque JavaScript à partir d'un site tiers. Ce JavaScript récolte certaines données de la page HTML actuelle et les publie sur le site tiers, qui répond avec du HTML à afficher dans un iframe. Pour le voir en action, visitez une page AOL Food et cliquez sur l'icône "Imprimer" juste au-dessus de l'histoire.

43
Ned Batchelder

Vous devez m'envoyer (ericlaw @ Microsoft) une capture réseau (www.fiddlercap.com) du scénario que vous pensez être incorrect.

Le filtre XSS fonctionne comme suit:

  1. XSSFILTER est-il activé pour ce processus?
    Si oui - passez à la vérification suivante Si non - contournez le filtre XSS et continuez le chargement
  2. Est-ce un chargement de "document" (comme un cadre, pas un sous-téléchargement)? Si oui - passez à la vérification suivante Si non - contournez le filtre XSS et continuez le chargement
  3. S'agit-il d'une demande HTTP/HTTPS? Si oui - passez à la vérification suivante Si non - contournez le filtre XSS et continuez le chargement
  4. RESPONSE contient-il un en-tête x-xss-protection? Oui: Valeur = 1: Filtre XSS activé (pas de vérification d'urlaction) Valeur = 0: Filtre XSS désactivé (pas de vérification d'urlaction) Non: passez à la vérification suivante
  5. Le site se charge-t-il dans une zone où URLAction active le filtrage XSS? (Par défaut: Internet, Trusted, Restricted) Si oui - passez à la vérification suivante Si non - contournez le filtre XSS et continuez le chargement
  6. Est une demande intersite? (En-tête de référence: le nom de domaine complet (post-redirection) final dans l'en-tête de référence de la requête HTTP correspond-il au nom de domaine complet de l'URL récupérée?) Si oui - contournez le filtre XSS et continuez le chargement Si non - alors l'URL de la demande doit être stérilisée.
  7. L'heuristique indique-t-elle que les données de RÉPONSE proviennent de DONNÉES DE DEMANDE non sécurisées? Si oui - modifiez la réponse.

Maintenant, les détails exacts de # 7 sont assez compliqués, mais en gros, vous pouvez imaginer que IE fait une correspondance des données de demande (URL/corps de message) avec les données de réponse (corps de script) et si ils correspondent, alors les données de réponse seront modifiées.

Dans le cas de votre site, vous voudrez regarder le corps du POST to http://h30405.www3.hp.com/print/start and la réponse correspondante.

25
EricLaw

En fait, c'est pire que cela puisse paraître. Le filtre XSS peut rendre les sites sûrs dangereux. Lisez ici: http://www.h-online.com/security/news/item/Security-feature-of-Internet-Explorer-8-unsafe-868837.html

De cet article:

Cependant, Google désactive le filtre XSS d'IE en envoyant l'en-tête X-XSS-Protection: 0, ce qui le rend immunisé.

Je ne connais pas assez votre site pour juger si cela peut être une solution, mais vous pouvez probablement essayer. Plus en détail, une discussion technique sur le filtre et comment le désactiver est ici: http://michael-coates.blogspot.com/2009/11/ie8-xss-filter-bug.html

7
Roland Bouman