Ang isang kahinaan sa mga listahan ng Adblock Plus ay nagbibigay-daan sa pagpapatupad ng nakakahamak na code

browser

Recientemente natuklasan ang isang kahinaan na maaaring payagan ang mga nagpapanatili na harangan ang mga listahan ng filter para sa mga extension ng Adblock Plus, AdBlock at uBlocker browser upang lumikha ng mga filter na mag-iiksyon ng malayuang mga script sa mga website.

Sa pamamagitan ng isang base ng gumagamit na tumawid sa 10 milyong marka, kung ang mga nakakahamak na script ay na-injected sa mga ad blocker, magkakaroon ito ng malaking epekto dahil maaari silang magsagawa ng mga hindi ginustong aktibidad, tulad ng pagnanakaw ng cookies, impormasyon sa koneksyon, na sanhi ng mga pag-redirect ng pahina o iba pang hindi kanais-nais na pag-uugali.

Para sa mga na ay hindi pamilyar sa mga blocker ng ad, karaniwang gumagamit sila ng mga listahan ng URL nauugnay sa mga nakakahamak na ad at pag-uugali.

Karaniwan Pinapatakbo sila ng isang maliit na pangkat ng mga tao o kahit isang solong tao.

Kapag na-load ang mga listahang ito ng isang extension ng pag-block ng ad tulad ng Adblock Plus, pipigilan ng extension na ito ang browser na kumonekta sa mga URL na inilagay sa listahan at sa gayon pinipigilan nito ang koneksyon sa mga nakakahamak na ad o script.

Ang pagpipiliang filter na $ rewrite ay sanhi ng problema

Kapag AdblockerPlus 3.2 inilunsad noong 2018, ito nagdagdag ng isang bagong pagpipilian sa listahan ng filter, na tinawag na $ muling pagsulat.

Ang pagpipiliang ito pinayagan sa isang nagpapanatili ng listahan palitan ang isang kahilingan sa web na tumutugma sa isang regular na expression sa partikular sa isa pang URL.

Hubert Figuiere, na nagpakilala sa pagpapaandar na ito, ipinaliwanag na:

"Dahil ang Adblock Plus 3.2 para sa Chrome, Firefox, at Opera (at mga bersyon ng pag-unlad na 3.1.0.2053), binibigyang-daan ka ng isang bagong pagpipiliang filter na $ rewrite na muling isulat ang URL ng isang mapagkukunan sa halip na harangan ito.

Kapag ang Adblock Plus ay nagtalaga ng isang URL ng kahilingan sa isang filter na may pagpipiliang $ muling pagsulat, binago nito ang URL batay sa ibinigay na panuntunan at sinasabi sa browser na i-load ang mapagkukunan nang sabay.

Ang syntax ng $ panuntunan ang muling pagsusulat ay tumutukoy ng isang string na nagsisilbing isang template para sa bagong URL.

Ang $ n ay pinalitan ng regular na expression ng filter n-th sub-match. Ito ang parehong syntax tulad ng pag-andar ng JavaScript String.prototype.replace ().

Kung ang nagresultang URL ay kamag-anak (ibig sabihin wala kang host), ang pinagmulan ng orihinal na query ay gagamitin bilang batayan. Sa alinmang kaso, kung ang bagong URL ay hindi nagbabahagi ng pinagmulan, ang muling pagsusulat ay maituturing na hindi matagumpay at ang paunang kahilingan ay lilipas.

Gayundin, ang mga filter ng $ muling pagsulat ay hindi pinapansin para sa SCRIPT, SUBDOCUMENT, OBJECT at OBJECT_SUBREQUEST mga query para sa mga kadahilanang panseguridad. Ang pagpipiliang ito ay maginhawa para sa pagbabago o pag-aalis ng mga parameter ng query ».

Ang tanging downside ay ang kapalit na string ay dapat na isang kamag-anak na URL, na nangangahulugang hindi ito naglalaman ng isang hostname at, kapag muling isinulat, dapat itong kabilang sa parehong nagmumulang domain tulad ng kahilingan.

Ang pagpapatupad ng code ay ginagawa pa sa google map

Ipinaliwanag ng isang security researcher iyon:

Sa ilalim ng ilang mga kundisyon, posible para sa isang hindi pinahihintulutang mapanirang mapanatili ng filter upang lumikha ng isang panuntunan na mag-injected ng isang remote script sa isang partikular na site.

Upang gawin ito, hanapin lamang ang isang site na naglo-load ng mga script mula sa anumang domain na naglalaman ng isang bukas na pag-redirect at gumamit ng XMLHttpRequest o Fetch upang i-download ang mga script upang tumakbo.

Hindi ito masyadong mahirap hanapin dahil gawin ito nang mag-isa gamitin lamang ang Google Maps bilang patunay ng konsepto.

Ipinaliwanag ng mananaliksik na ang mga sumusunod na pamantayan ay dapat matugunan upang ang isang serbisyo sa web ay maaaring samantalahin sa pamamaraang ito:

  • Dapat mag-load ang pahina ng isang JS string gamit ang XMLHttpRequest o Fetch at ipatupad ang return code.
  • Hindi dapat paghigpitan ng pahina ang mga mapagkukunan kung saan maaaring makuha ito gamit ang mga alituntunin sa patakaran sa seguridad ng nilalaman, o patunayan ang panghuling URL ng kahilingan bago patakbuhin ang na-download na code.
  • Ang mapagkukunan ng nakuhang code ay dapat magkaroon ng isang bukas na pag-redirect sa server o walang katuturan na nilalaman ng gumagamit mula sa host.

Ang paggamit ng XMLHttpRequest o Fetch upang mag-download ng mga script at buksan ang pag-redirect ay ang dalawang mga susi sa problema.

Upang mapagaan ang problemang ito, inirerekumenda na gamitin ng mga website ang header ng patakaran sa seguridad ng nilalaman at pagpipiliang kumonekta-src upang tukuyin ang isang whitelist ng mga site kung saan maaaring mai-load ang mga script.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.