Contournement du CSP avec des iframes suspendus

Affichage des captures d'écran iframe suspendues à des chaînes

Introduction

Notre Web Security Academy a un sujet sur l’injection de balisage pendant – une technique pour exploiter des sites protégés par CSP. Mais quelque chose d’intéressant s’est produit lorsque nous avons mis à jour Chrome 97 – car l’un de nos laboratoires interactifs a mystérieusement cessé de fonctionner. Lorsque nous avons créé cet atelier à l’origine, Chrome empêchait les attaques basées sur le balisage suspendu en recherchant des espaces blancs bruts suivis de caractères “<" - mais oubliait d'empêcher les attributs d'arrière-plan (comme découvert par Masato Kinugawa

Malheureusement, à partir de Chrome 97, cette technique ne fonctionnait plus, j’ai donc été chargé d’essayer de trouver une alternative. J’ai essayé de nombreux attributs différents et des animations basées sur CSS pour retarder les affectations afin d’essayer de contourner cette protection. Ils ont tous échoué – il semble que la force soit forte avec Mike Westqui est à l’origine de cette modification.

J’ai pris du recul et j’ai analysé le CSP :

default-src 'self';object-src 'none'; style-src 'self'; script-src 'self'; img-src *;

Cela semble étanche, non (à part le img-src) ? Et si je vous disais que vous pouviez supprimer la directive ‘img-src’ et continuer à mener une attaque de balisage suspendu sans un clic ? Voyons comment…

Problèmes iframe inter-domaines

J’ai d’abord lancé l’inspecteur Hackability qui est un énumérateur axé sur la sécurité que j’ai codé il y a quelque temps et j’ai commencé à disséquer le fonctionnement interne des iframes. L’inspecteur est pratique pour tester plusieurs domaines à la recherche de fuites interdomaines. J’ai ajouté le premier iframe et à l’intérieur de cette instance, j’ai ajouté un autre iframe :

Preuve de concept

conclusion

CSP traite les URL about:blank comme la même origine – cependant, lorsqu’un attaquant définit un iframe interdomaine sur about:blank, il devient lisible par un attaquant et n’a certainement pas la même origine. Les atténuations de Chrome pour les attaques de balisage pendantes empêchent certaines attaques, mais en abusant des bizarreries du navigateur, il est possible de contourner ces atténuations et d’accéder aux informations inter-domaines via une injection – même avec JavaScript désactivé dans votre CSP.

Chronologie

2022-02-10 08:55 GMT – Bug signalé à Google
2022-02-10 09:38 GMT – Signalé à Mozilla
2022-06-14 15:00 GMT – Publié ce message

Retour à tous les articles

Leave a Comment

Your email address will not be published.