Екип от изследователи от Университета на Уисконсин-Медисън е качил в уеб магазина на Chrome доказателство за концептуално разширение, което може да краде пароли в обикновен текст от изходния код на уебсайт.
Изследването на полетата за въвеждане на текст в уеб браузърите разкри, че грубият модел на разрешенията, залегнал в основата на разширенията за Chrome, нарушава принципите на най-малката привилегия и пълното посредничество.
Освен това изследователите установиха, че многобройни уебсайтове с милиони посетители, включително някои портали на Google и Cloudflare, съхраняват пароли в обикновен текст в изходния HTML код на своите уебстраници, което позволява на разширенията да ги извличат.
Източник на проблема
Изследователите обясняват, че проблемът е свързан със системната практика разширенията на браузъра да получават неограничен достъп до DOM дървото на сайтовете, които зареждат, което позволява достъп до потенциално чувствителни елементи, като например полета за въвеждане от потребителя.
Предвид липсата на каквато и да е граница на сигурност между разширението и елементите на сайта, първото има неограничен достъп до данните, видими в изходния код, и може да извлече всяко тяхно съдържание.
Освен това разширението може да злоупотребява с DOM API, за да извлича директно стойността на входните данни, докато потребителят ги въвежда, заобикаляйки всякакво замаскиране, приложено от сайта за защита на чувствителните входни данни, и да открадне стойността програмно.
Протоколът Manifest V3, въведен от Google Chrome и приет от повечето браузъри тази година, ограничава злоупотребите с API, забранява на разширенията да извличат отдалечен код, който може да помогне за избягване на откриването, и предотвратява използването на eval оператори, които водят до произволно изпълнение на код.
Въпреки това, както обясняват изследователите, Manifest V3 не въвежда граница на сигурността между разширенията и уебстраниците, така че проблемът със скриптовете със съдържание остава.
Качване на PoC в уеб магазина
За да тестват процеса на преглед в уеб магазина на Google, изследователите решават да създадат разширение за Chrome, способно да извършва атаки за улавяне на пароли, и да се опитат да го качат в платформата.
Изследователите създават разширение, представящо се за асистент, базиран на GPT, който може да:
- улавя изходния код на HTML, когато потребителят се опитва да влезе в дадена страница, посредством regex.
- злоупотребява с CSS селектори, за да избере целеви полета за въвеждане и да извлече потребителски данни с помощта на функцията „.value“.
- извършва заместване на елементи, за да замени базираните на JS замаскирани полета с опасни полета за пароли.
Разширението не съдържа очевиден зловреден код, така че избягва статично откриване, и не извлича код от външни източници (динамично инжектиране), така че е съвместимо с Manifest V3.
В резултат на това разширението е преминало успешно проверката и е било прието в уеб магазина на Google Chrome, така че проверките за сигурност не са успели да уловят потенциалната заплаха.
Екипът е следвал етичните стандарти, за да гарантира, че не са събирани действителни данни и не е извършвана злоупотреба с тях, като е деактивирал сървъра за получаване на данни, а е запазил активен само сървъра за насочване на елементи.
Освен това разширението беше настроено на „непубликувано“ през цялото време, така че да не събира много изтегляния, и беше незабавно премахнато от магазина след одобрението му.
Потенциал за експлоатация
Последвалите измервания показаха, че от 10-те хил. най-големи уебсайта (по данни на Tranco) приблизително 1100 съхраняват пароли на потребители в обикновен текстов вид в рамките на HTML DOM.
Други 7300 уебсайта от същия набор бяха счетени за уязвими за достъп до DOM API и директно извличане на стойността на потребителския вход.
В техническия документ, който изследователите от Университета на Уисконсин-Медисън публикуваха по-рано тази седмица, се твърди, че около 17 300 разширения в уеб магазина на Chrome (12,5%) разполагат с необходимите разрешения за извличане на чувствителна информация от уебсайтове.
Няколко от тях, включително широко използваните блокери на реклами и приложения за пазаруване, могат да се похвалят с милиони инсталации.
Забележителни примери за липса на защита на уебсайтове, посочени в доклада, включват:
- gmail.com – пароли в обикновен текст в изходния код на HTML
- cloudflare.com – пароли с обикновен текст в изходния код на HTML
- facebook.com – потребителски данни могат да бъдат извлечени чрез DOM API
- citibank.com – потребителските данни могат да бъдат извлечени чрез DOM API
- irs.gov – SSN са видими в обикновен текст в изходния код на уебстраницата
- capitalone.com – SSN са видими в обикновен текст в изходния код на уебстраницата
- usenix.org – SSN са видими в обикновен текст в изходния код на уебстраницата
- amazon.com – данните за кредитната карта (включително код за сигурност) и ZIP кодът са видими в обикновен текст в изходния код на страницата
И накрая, анализът показа, че 190 разширения (някои от които с над 100 хил. изтегляния) имат пряк достъп до полета за пароли и съхраняват стойности в променлива, което предполага, че някои издатели може би вече се опитват да се възползват от пропуските в сигурността.
Инфографики:arxiv.org