Уразлівасць у Adblock Plus, якая дазваляе выканаць код пры выкарыстанні сумніўных фільтраў

У блакавальніку рэкламы Adblock Plus выяўлена уразлівасць, якая дазваляе арганізаваць выкананне JavaScript-кода ў кантэксце сайтаў, у выпадку выкарыстання неправераных фільтраў, падрыхтаваных зламыснікамі (напрыклад, пры падлучэнні іншых набораў правіл ці праз падмену правіл падчас MITM-напады).

Аўтары спісаў з наборамі фільтраў могуць арганізаваць выкананне свайго кода ў кантэксце адчыняных карыстачом сайтаў праз даданне правіл з аператарам.перазапіс«, які дазваляе замяніць частку URL. Аператар rewrite не дазваляе замяніць хост у URL, але дае магчымасць вольна маніпуляваць з аргументамі запыту. У якасці маскі для замены дапушчаецца ўжыванне толькі тэксту, а падстаноўка тэгаў script, object і subdocument блакуецца.

Тым не менш, выкананне кода можна дамагчыся абыходным шляхам.
Некаторыя сайты, у тым ліку Google Maps, Gmail і Google Images, ужываюць тэхніку дынамічнай загрузкі выкананых JavaScript-блокаў, якія перадаюцца ў форме голага тэксту. Калі сервер дапускае перанакіраванне запытаў, то пракіда на іншы хост можна дамагчыся падмяніўшы параметры URL (напрыклад, у кантэксце Google рэдырэкт можа быць зроблены праз API.google.com/search«). Акрамя хастоў, якія дапускаюць рэдырэкт, напад таксама можа быць здзейснена супраць сэрвісаў, якія дапускаюць размяшчэнне кантэнту карыстальнікаў (хостынгі кода, платформы размяшчэння артыкулаў і да т.п.).

Прапанаваны метад нападу закранае толькі старонкі, якія дынамічна загружаюць радкі з JavaScript кодам (напрыклад, праз XMLHttpRequest або Fetch) і затым выконваюць іх. Іншым важным абмежаваннем з'яўляецца неабходнасць выкарыстання рэдырэкту або размяшчэнні адвольных дадзеных на боку зыходнага сервера, які аддае рэсурс. Тым не менш, у якасці дэманстрацыі актуальнасці нападу паказана як арганізаваць выкананне свайго кода пры адкрыцці maps.google.com, выкарыстоўваючы рэдырэкт праз "google.com/search".

Выпраўленне пакуль знаходзіцца ў працэсе падрыхтоўкі. Праблема таксама закранае блакавальнікі AdBlock и uBlock. Блакавальнік uBlock Origin праблеме не схільны, бо не падтрымлівае аператар "rewrite". У свой час аўтар uBlock Origin
адмовіўся дадаваць падтрымку rewrite, спаслаўшыся на патэнцыйныя праблемы з бяспекай і недастатковасць абмежавання на ўзроўні хаста (замест rewrite была прапанавана опцыя querystrip для ачысткі параметраў запыту замест іх замены).

Распрацоўнікі Adblock Plus лічаць правядзенне рэальных нападаў малаверагодным, бо ўсе змены ў штатных спісах правіл праходзяць рэцэнзаванне, а падлучэнне іншых спісаў практыкуецца карыстачамі вельмі рэдка. Падмену правіл праз MITM выключае ўжыванне па змаўчанні HTTPS для загрузкі штатных спісаў блакавання (для астатніх спісаў плануецца забараніць загрузку па HTTP у будучыні выпуску). Для блакавання атакі на баку сайтаў могуць прымяняцца дырэктывы. CSP (Content Security Policy), праз якія можна відавочна вызначыць хасты, з якіх дапушчаецца загрузка вонкавых рэсурсаў.

Крыніца: opennet.ru

Дадаць каментар