Exploit de filtre Adblock Plus pour exécuter du code arbitraire découvert

La plupart des bloqueurs de contenu utilisent et chargent des listes de filtres qui incluent des instructions pour bloquer ou modifier par défaut certains contenus sur les sites visités dans le navigateur Web. Ceci est fait pour s'assurer que les configurations par défaut bloquent immédiatement une bonne partie du contenu indésirable.

La plupart des extensions prennent en charge des listes personnalisées et des filtres individuels. Les utilisateurs peuvent charger des listes personnalisées dans la plupart des extensions et ajouter leurs propres filtres à la liste.

Mise à jour : Eyeo GMHB a annoncé aujourd'hui sa suppression de la fonction $ rewrite. Attendez-vous à une nouvelle version bientôt qui supprime si de l'extension. Fin

Le chercheur en sécurité Armin Sebastian a découvert un exploit dans certains adblockers, comme Adblock Plus, qui pourrait être utilisé pour exécuter du code malveillant sur les sites visités dans le navigateur.

L'exploit utilise une option de filtre appelée $ rewrite prise en charge par Adblock Plus pour injecter du code arbitraire dans les pages Web. Le filtre $ rewrite est utilisé pour remplacer le code sur les sites en le réécrivant. L'option de filtre restreint l'opération. il est conçu pour charger du contenu uniquement à partir de la source première et non de sites ou serveurs tiers, et certaines requêtes, telles que des scripts ou des objets, ne sont pas autorisées non plus.

Sebastian a découvert une vulnérabilité dans $ rewrite que des attaquants pourraient exploiter pour charger du contenu depuis des emplacements distants. Les conditions à remplir sont les suivantes:

  1. Une chaîne JavaScript doit être chargée à l'aide de XMLHttpRequest ou Fetch et le code de retour doit être exécuté.
  2. Les origines ne peuvent pas être restreintes sur la page, par exemple en utilisant les directives de la politique de sécurité du contenu, et l'URL de requête finale ne peut pas être validée avant son exécution.
  3. L'origine du code doit avoir une redirection ouverte côté serveur ou héberger du contenu utilisateur arbitraire.

Parmi les propriétés correspondant aux trois conditions requises, citons Google Maps, Gmail ou Google Images. Une preuve de concept a été publiée sur le site Web de l'auteur et vous pouvez l'essayer sur Google Maps pour vérifier que cela fonctionne.

J'ai essayé l'exploit dans Chrome et Firefox, mais je ne pouvais pas le faire fonctionner. Lawrence Abrams sur Bleeping Computer a néanmoins réussi à le faire fonctionner.

Mots de clôture

L'attaque a une autre exigence, car elle repose sur des filtres. Un filtre manipulé doit être ajouté à la liste des filtres utilisés par le bloqueur de contenu. Les deux options les plus courantes incluent les utilisateurs qui ajoutent des filtres manuellement à leurs bloqueurs de contenu ou qu'un filtre manipulé se trouve sur une liste de filtres chargée.

La deuxième option semble plus probable, notamment dans les cas où les utilisateurs chargent d’autres listes dans les extensions. Ce n'est pas la première fois que des listes sont manipulées, mais cela n'arrive pas très souvent.

L'extension uBlock Origin n'est pas affectée par le problème car elle ne prend pas en charge $ rewrite.