В рекламния блокер Adblock Plus уязвимост, може да организира изпълнението на JavaScript код в контекста на сайтове, когато се използват непроверени филтри, предоставени от злонамерени лица (например, при свързване на външни комплекти правила или чрез подмяна на правила по време на MITM атака).
Авторите на списъци с комплекти филтри могат да организират изпълнението на техния код в контекста на отваряните от потребителя сайтове, като добавят правила с оператора „“, позволяващ замяна на част от URL. Операторът rewrite не позволява подмяна на хоста в URL, но предоставя възможност за свободно манипулиране с аргументите на заявката. Като маска за замяна може да се използва само текст, а поставянето на тагове script, object и subdocument .
Въпреки това, изпълнението на кода може да бъде постигнато по алтернативен начин.
Някои сайтове, включително Google Maps, Gmail и Google Images, използват техниката за динамично зареждане на изпълними JavaScript блокове, предавани във форма на чист текст. Ако сървърът допуска пренасочване на заявки, може да се постигне пренасочване към друг хост, като се подменят параметрите на URL (например, в контекста на Google пренасочването може да се извърши чрез API „“). Освен хостовете, разрешаващи пренасочване, атака може да бъде извършена и срещу услуги, които позволяват публикуване на потребителско съдържание (хостинг на код, платформи за публикуване на статии и др.).
Предложеният метод на атака засяга само страници, които динамично зареждат редове с JavaScript код (например, чрез XMLHttpRequest или Fetch) и след това ги изпълняват. Друго важно ограничение е необходимостта от използване на пренасочване или разполагане на произволни данни на страната на източния сървър, предоставящ ресурса. Въпреки това, за показване на актуалността на атаката е демонстрирано как да се организира изпълнението на своя код при отваряне на maps.google.com, използвайки пренасочване през „google.com/search“.
Корекцията все още е в процес на подготовка. Проблемът също така засяга блокерите и . Блокерът uBlock Origin не е подложен на проблема, тъй като не поддържа оператора „rewrite“. В свое време авторът на uBlock Origin
добавете поддръжка на rewrite, като се позовете на потенциалните проблеми със сигурността и недостатъците на ограниченията на ниво хост (вместо rewrite е предложена опцията querystrip за почистване на параметрите на заявките вместо тяхната замяна).
Разработчиците на Adblock Plus смятат, че провеждането на реални атаки е малко вероятно, тъй като всички промени в стандартните списъци с правила преминават преглед, а свързването на външни списъци е практикувано от потребителите много рядко. Подмяната на правилата чрез MITM е изключена от факта, че по подразбиране HTTPS се използва за зареждане на стандартните списъци за блокиране (за останалите списъци в бъдещото издание се планира забрана на зареждането по HTTP). За блокиране на атаки на страната на сайтовете могат да се използват директиви (Content Security Policy), чрез които могат да се определят конкретни хостове, от които е разрешено зареждането на външни ресурси.
Източник: opennet.ru
