
Preuve de concept de détournement de contenu utilisant Flash, PDF et Silverlight
Publié sous licence AGPL (voir LICENSE pour plus d'informations).
Ce projet peut être utilisé pour fournir une preuve de concept pour :
Remarque : les fichiers .XAP peuvent être renommés avec n'importe quelle autre extension, mais ils ne peuvent plus être chargés en cross-domain. Il semble que Silverlight détermine l'extension du fichier en fonction de l'URL fournie et l'ignore si elle n'est pas .XAP. Cela peut néanmoins être exploité si un site web permet aux utilisateurs d'utiliser ";" ou "/" après le nom de fichier réel pour ajouter une extension ".XAP".
Remarque : les fichiers .XAP peuvent être renommés avec n'importe quelle autre extension, mais ils ne peuvent plus être chargés en cross-domain. Il semble que Silverlight détermine l'extension du fichier en fonction de l'URL fournie et l'ignore si elle n'est pas .XAP. Cela peut néanmoins être exploité si un site web permet aux utilisateurs d'utiliser ";" ou "/" après le nom de fichier réel pour ajouter une extension ".XAP".
Remarque : lorsque Silverlight demande un fichier .XAP en cross-domain, le type de contenu doit être : application/x-silverlight-app.
Remarque : les fichiers PDF ne peuvent être utilisés que dans le lecteur Adobe Reader (ils ne fonctionneront pas avec les lecteurs PDF intégrés de Chrome et Firefox).
Remarque : la lecture de contenus statiques ou de données accessibles publiquement ne peut pas être considérée comme un problème. Il est important de supprimer les faux positifs de vos bulletins de sécurité. Notez que l'utilisation d'un seul caractère astérisque (« * ») dans l'en-tête « Access-Control-Allow-Origin » n'est pas un problème.
Exemple d'utilisation :
Les types de fichiers autorisés au téléversement devraient être limités à ceux qui sont nécessaires aux besoins de l'activité.
L'application devrait effectuer un filtrage et un contrôle du contenu sur tous les fichiers téléversés sur le serveur. Les fichiers devraient être soigneusement analysés et validés avant d'être mis à la disposition des autres utilisateurs. En cas de doute, le fichier devrait être rejeté.
L'ajout des en-têtes « Content-Disposition: Attachment » et « X-Content-Type-Options: nosniff » à la réponse des fichiers statiques sécurisera le site web contre les attaques de détournement de contenu intersite basées sur Flash ou PDF. Il est recommandé d'appliquer cette pratique à tous les fichiers que les utilisateurs doivent télécharger dans tous les modules qui gèrent un téléchargement de fichier. Bien que cette méthode ne sécurise pas entièrement le site web contre les attaques utilisant Silverlight ou des objets similaires, elle peut atténuer le risque lié à l'utilisation d'objets Adobe Flash et PDF, en particulier lorsque le téléversement de fichiers PDF est autorisé.
Les fichiers de politique cross-domain Flash/PDF (crossdomain.xml) ou Silverlight (clientaccesspolicy.xml) devraient être supprimés s'ils ne sont pas utilisés et si aucune nécessité professionnelle n'impose aux applications Flash ou Silverlight de communiquer avec le site web.
L'accès cross-domain devrait être restreint à un ensemble minimal de domaines de confiance qui nécessiteront un accès. Une politique d'accès est considérée comme faible ou non sécurisée lorsqu'un caractère générique est utilisé, en particulier dans la valeur de l'attribut « uri ».
Tout fichier « crossdomain.xml » utilisé pour des applications Silverlight devrait être considéré comme faible car il ne peut accepter qu'un caractère générique (« * ») dans l'attribut de domaine.
La mise en cache du navigateur devrait être désactivée pour les fichiers corssdomain.xml et clientaccesspolicy.xml. Cela permet au site web de mettre facilement à jour le fichier ou de restreindre l'accès aux services web si nécessaire. Une fois le fichier de politique d'accès client vérifié, il reste en vigueur pour la session du navigateur, de sorte que l'impact de l'absence de mise en cache pour l'utilisateur final est minime. Cela peut être signalé comme un risque faible ou informatif selon le contenu du site web cible, la sécurité et la complexité du ou des fichiers de politique.
Les en-têtes CORS devraient être examinés afin de n'être activés que pour les données statiques ou accessibles publiquement. Sinon, l'en-tête « Access-Control-Allow-Origin » ne devrait contenir que des adresses autorisées. D'autres en-têtes CORS tels que « Access-Control-Allow-Credentials » ne devraient être utilisés que lorsque cela est nécessaire. Les éléments des en-têtes CORS tels que « Access-Control-Allow-Methods » ou « Access-Control-Allow-Headers » devraient être examinés et supprimés s'ils ne sont pas nécessaires.
Remarque : l'utilisation de l'en-tête « Referer » ne peut pas constituer une solution car il est possible de définir cet en-tête, par exemple, en envoyant une requête POST avec Adobe Reader et un PDF (voir le fichier « xfa-manual-ContentHijacking.pdf » dans le répertoire « objects »). Mise à jour : la définition de l'en-tête « referer » a été corrigée par Adobe, sauf si vous trouvez aussi un contournement de cette protection ;)
Consultez la page du projet pour les dernières mises à jour/aide : https://github.com/nccgroup/CrossSiteContentHijacking
Soroush Dalili (@irsdl) de NCC Group
Même le téléversement d'un fichier JPG peut mener à un détournement de données cross-domain (attaque côté client) ! https://soroush.secproject.com/blog/2014/05/even-uploading-a-jpg-file-can-lead-to-cross-domain-data-hijacking-client-side-attack/
De multiples vulnérabilités PDF - Texte et images sous stéroïdes http://insert-script.blogspot.co.at/2014/12/multiple-pdf-vulnerabilites-text-and.html
Communication HTTP et sécurité avec Silverlight http://msdn.microsoft.com/en-gb/library/cc838250(v=vs.95).aspx
Explication des fichiers de politique cross-domain et d'accès client pour Silverlight http://www.devtoolshed.com/explanation-cross-domain-and-client-access-policy-files-silverlight
Spécification du fichier de politique cross-domain http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html
Configuration d'un fichier crossdomain.xml pour le streaming HTTP http://www.adobe.com/devnet/adobe-media-server/articles/cross-domain-xml-for-streaming.html
Exploitation de CVE-2011-2461 sur google.com http://blog.mindedsecurity.com/2015/03/exploiting-cve-2011-2461-on-googlecom.html