Небезпечний світ шкідливих розширень та захист від них. Досвід Яндекс.Браузера

Браузерні розширення останнім часом, на жаль, все частіше використовуються не для того, щоб приносити користь, а як інструмент шахраїв. Сьогодні ми хочемо поділитися з вами нашим досвідом боротьби з шкідливими розробками, розповісти про заходи і технологіях, які захищають користувачів Яндекс.Браузера.



Навесні 2014 року підтримка Яндекс.Браузера звернула увагу на стрімко зростаюче число звернень від користувачів, у яких йшлося про «зараженні браузера вірусом» та агресивній рекламі, спливаючій на відвідуваних сайтах. Найбільш поширеним симптомом була підміна або додавання нових рекламних блоків на популярних в Рунеті сайтах (ВКонтакте, Яндекс, ...). При цьому розробники шкідливих розширень не обтяжували себе турботою про користувачів і не гребували відверто шахрайських або шок-рекламою. Зустрічалися й інші прояви. Наприклад, автоматичне відкриття вкладки з певним сайтом, підміна пошуку за промовчанням або навіть крадіжка даних.

У певний момент кількість таких звернень стало досягати 30% від усіх повідомлень підтримку. Спостереження підтримки також підтверджувалися статистикою основних причин видалення нашого браузера (при видаленні користувачам пропонується описати причину). Багато люди щиро вважали, що це наша команда вирішила таким ось способом монетизувати браузер. За короткий період часу кількість вилучень Яндекс.Браузера, пов'язаних з діяльністю сторонніх шкідливих розробок, подвоїлася. Потрібно було терміново втрутитися і почати працювати над цією проблемою.

Перший удар

Найпростіше і найшвидше, що ми могли зробити в цій ситуації, — це впровадити чорний список розширень. Тут нам допомогли колеги, які відповідають за безпеку в Яндекс.Пошуку і мають солідний досвід у боротьбі з шкідливими сайтами. Саме їх дані лежать в основі технології Safe Browsing, використовуваної в Яндекс.Браузері. В результаті спільної праці Яндекс.Браузер 14.5 навчився блокувати роботу розширень, чий ID занесений в список шкідливих додатків. Сам список регулярно поповнювався, після чого нова версія за лічені години поширювалася серед користувачів через Safe Browsing API.



Це був наш перший серйозний удар по шахрайським розширень, які раніше не зустрічали якогось особливого опору з боку браузера. Цей крок призвів до того, що за лічені тижні кількість скарг скоротилося в 10 разів. На жаль, ефект тривав недовго. Радість від швидкої перемоги змінилася розумінням, що це лише початок справжньої боротьби за безпеку користувачів.

Безпека чи свобода?

Навесні минулого року ми навчилися оперативно виявляти і блокувати широко поширені шкідливі розширення через чорний список. Ось тільки творці подібних розробок не розгубилися і перейшли до нової тактики. Дізналися ми про це все тих же скарг. Користувачі періодично надсилають нам погані розширення для аналізу. Завдяки такій допомозі ми поповнюємо наш чорний список. Але в якийсь момент до нас почали надходити дуже дивні зразки. Наприклад, нам прислали розширення під назвою NxAxR, ID якого дорівнював «pioclpoplcdbaefihamjohnefbikjilc». Якщо ви пошукаєте цей ID в пошуку, то дізнаєтеся, що належить він цілком безпечного розширення Evernote Web Clipper, яке опубліковано в Chrome Web Store і вже точно ніяких капостей творити не могло (але ми, до речі, все одно перевірили). Причому з часом аудиторія подібних підробок стала навіть більше, ніж в оригінальних розширень. Але ми не могли забанити той же NxAxR по ID, адже після такого кроку Evernote був би забанений теж.



Майже одразу була відкинута ідея злому акаунтів Chrome Web Store, яка теоретично могла б пояснити оновлення розширення для зберігання нотаток до шкідливого рекламного поделия. Аккаунт ніхто не зламував, а в каталозі раніше поширювалася правильна версія розширення. На щастя, думати довелося недовго, тому що наші розробники і самі здогадалися про механізм, який використовують шахраї.

Шкідлива програма, запущена на комп'ютері користувача, встановлювала своє розширення в браузер не через штатні для цього інструменти, а прямим редагуванням профілю. При цьому підробка маскувалася на рівні ID під відоме розширення, яке опубліковано в Web Store. Навіть «update_url» (адресу сервера, де браузер повинен перевіряти наявність нових версій) був вказаний правильно. А щоб шкідливі функції розширення не пропали після першого ж оновлення оригіналу, зловмисники виставляли завідомо велику версію. Браузер порівнював версії в маніфесті розширення і на сервері. Якщо на комп'ютері новіше, то оновлення не відбувалося.



До речі, з часом творці небезпечних розширень зрозуміли, що назви виду «NxAxR» привертають непотрібну увагу користувача, тому стали називатися, наприклад, «Перекладач для Chrome». Таке і видалити страшно: раптом перекладач дійсно перестане працювати.

Перед нашою командою стояла велика і цікава задача. Потрібно було розробити технологію, яка вміла б виявляти підробки і захищала людей від них. Хотілося б мені в цьому місці розповісти вам про фантастичні ідеї, які ми перебрали, але все було куди простіше (і швидше, що особливо важливо). Щоб розпізнати підробку нам потрібно було порівняти її з еталоном, тобто з завідомо оригінальної копії, яку користувач встановлює з офіційного каталогу. Проблема полягала в тому, що багато розширення поширювалися альтернативними способами і ніяк не були пов'язані з каталогом. У цьому випадку ніякого еталона просто немає. І шкідливі розробки особливо зловживали подібним. У цій ситуації забезпечити захист від підробок ми могли лише попередньо обмеживши встановлення розширень перевіреними джерелами.

Як ви вже здогадалися (або навіть пам'ятайте серпень минулого року) ми ввели обмеження на встановлення розширень зі сторонніх джерел. Тим не менш наша команда прагнула до того, щоб не тільки захистити користувачів від шкідливих розширень, але і зберегти право вибору. Користувачі повинні мати можливість вибирати як розширення, так і каталог, з якого їх можна встановити. Саме тому в свій час ми додали в браузер розділ Доповнення. І саме з цієї ж причини ми не тільки ввели обмеження, але і підтримали каталог Opera Addons, встановлювати розширення з якого можна так само просто, як і з Chrome Web Store. До того ж ті розробки, що були встановлені з сторонніх джерел, не були повністю заблоковані. Ми лише відключили їх за замовчуванням. Після перезапуску браузера люди зберегли можливість активувати вручну і продовжити роботу.



Як би важко не було поєднати безпеку і свободу вибору, здається, нам вдалося знайти баланс між ними.

Перевірка достовірності

Після введення заборони на установку зі сторонніх джерел, браузер отримав можливість виявляти підробки, порівнюючи їх з еталонами. Але як саме потрібно порівнювати? Якщо порівнювати вміст маніфесту, то цього недостатньо, тому що шахраї зможуть впроваджуватися в існуючі js-файли. Порівнювати вміст всіх js і html файлів? Це довго і може позначитися на продуктивності. Багато хто з вас вже могли здогадатися, що в остаточному підсумку вибір припав на порівняння хешів. Якщо розширення встановлювалося з Opera Addons, Web Store або Доповнень, то у Яндекс.Браузера є хеш безпечної копії. Досить зіставити його з хешем поточного розширення, щоб швидко виявити ті, в які вносилися зміни.



Звучить просто, але на налагодження цієї технології пішло чимало часу. Нам довелося шукати золоту середину між ефективністю захисту, кількістю помилкових спрацьовувань і впливом на продуктивність. Просимо прощення за те, що не розкриваємо тут всіх деталей. Сподіваємося, що ви зрозумієте причину. Багато користувачів заплатили за безпеку незручностями, пов'язаними з встановленням розширень, але в кінцевому рахунку ця міра дозволила нам повторити успіх чорного списку і в рази знизити кількість «заражених» браузерів.

Групові політики та інші лазівки

Чорні списки Safe Browsing, обмеження джерел і перевірка справжності значно ускладнили роботу шахраїв. Вони відступили, перерахували свої втрати, але, як і в минулий раз, знайшли альтернативний варіант. Причому в цей раз основний удар прийняв на себе Chrome Web Store.

Каталог Web Store відкрито для вільного додавання розширень і не вимагає премодерації. Цим і скористалися зловмисники. У каталозі ми і раніше знаходили деякі, скажімо так, не зовсім корисні зразки. Але в 2015 році подібна активність явно зросла. Шахраї намагалися обійти захисні заходи простим кількістю: одне популярне розширення швидко потрапить у чорний список, але якщо завантажити безліч копій, то у деяких цілком є шанс вижити й окупити вкладення.

Незважаючи на те, що подібні розширення мали назви і функції явно орієнтовані на залучення користувачів (Скачати музику/відео з ВКонтакте» і подібні), основним каналом для поширення раніше був софт на комп'ютері користувача. Браузер при цьому ніхто не «зламував». Було досить використовувати задокументований проект Chromium спосіб. Установник створював в реєстрі ключ виду HKEY_LOCAL_MACHINE\Software\Yandex\Extensions\extension_ID, в якому був прописаний адреса каталогу Web Store. Після перезапуску браузер сам завантажував CRX-файл з вказаної адреси і встановлював. Подібний спосіб у свій час був придуманий для нативних програм, які несли з собою власне розширення (наприклад, Skype або антивірус Касперського). Але завдяки відносній простоті застосування цей інструмент досить швидко освоїли і розробники шкідливих додатків.

У проекті Chromium також існує можливість встановлювати як сам браузер, так і розширення для нього засобами групових політик. Вони створювалися спочатку для корпоративного сегмента. Але як і у випадку з першим способом, основне застосування знайшлося зовсім в іншій області. Розширення встановлюються без будь-якого попередження. Але найнеприємніше тут те, що в групових політиках можна прописати заборону на відключення або видалення таких розширень. І без уміння працювати з системним реєстром користувач від них позбутися не зможе.



Способи установки розширень через реєстру або групові політики, незважаючи на їх первісне призначення, застосовувалися в основному шахраями. Проблеми багатьох тисяч наших користувачів значать більше, ніж зручність для декількох сторонніх програм. Тому навесні цього року ми відключили подібні лазівки.

А що далі?

Ми б не хотіли спойлер і позбавляти задоволення тих, хто знаходиться по той бік барикад, тому не станемо розповідати про наші плани і майбутні технології. З рештою ми можемо поділитися деякими власними спостереженнями.

По-перше, поширення рекламних та інших небезпечних розширень це ціла індустрія, у якої є гроші, час і кращі уми для пошуку все нових способів обходу захисту. Щоб успішно протистояти такій загрозі, ми виділили в команді цілий напрямок, відповідальна за безпеку користувачів.

По-друге, заходи, що вживаються як в Яндекс.Браузері, так і в інших браузерах і каталогах, поступово створюють для шахраїв несприятливі умови. Їм доводиться шукати альтернативні канали для підміни реклами або крадіжки даних на комп'ютері користувача. І тут важливо не випускати їх з поля зору. У майбутніх постах ми постараємося розповісти про це докладніше.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.