Пользователь
0,0
рейтинг
19 января 2014 в 23:41

Разработка → Сюрприз от неизвестного: доверие к расширениям Chrome

16 января Amit Agarwal, разработчик расширения Add to Feedly опубликовал заметку в блоге, в которой признал, что его расширение было продано неизвестному за сумму в несколько тысяч долларов («предложение из четырёх цифр»).

Add to Feedly — это расширение, которое добавляло удобную кнопку подписки на RSS канал текущей страницы через сервис Feedly (популярная альтернатива почившему Google Reader). Расширение было сделано Амитом за час и набрало 30 000 пользователей в магазине Chrome. Расширение было продано, деньги получены через PayPal, и Амит передал права на расширение другому аккаунту Google.

Через месяц новые владельцы отправили обновление в магазин Chrome. Никаких новых фич, никаких исправлений багов. Только добавление рекламы на все страницы, которые просматривает пользователь. Все ссылки на каждом сайте превратились в реферальные, по которым выкидывалась реклама. Кроме того, новые хозяева получили возможность отслеживать все переходы пользователей. Проще говоря, автообновление Chrome загрузило вредоносный код напрямую в 30 000 аккаунтов, а синхронизация Chrome Sync распространила это по каждому подключённому компьютеру с установленными Google Chrome, Chromium или Chrome OS.


Проблема вредоносных обновлений существует давно и не ограничена Chrome. С Mozilla Firefox тоже были похожие скандалы. Но есть существенное различие: в разделе Mozilla Extensions каждое обновление проходит ручную проверку модераторов, в то время как Chrome Store предполагает, что разработчику приложения уже доверяют его пользователи. К тому же, правила Mozilla требуют предоставлять на проверку исходники расширений, в отличие от правил Chrome Store. Кроме того, расширения на Chrome уже могут включать скомпилированный код Native Client.

Альтернативно честная монетизация

Вы можете быть уверены в том, что Google борется и будет бороться с вредоносным кодом, который отправляется в Google Store, и ваш любимый граббер музыки не станет подсовывать фишинг-страницу. Но всё ещё остаётся вопрос рекламы.

Представим, что разработчик решил заработать на своём расширении. Он договаривается с рекламной сетью и выкладывает обновление, в котором включает рекламу или сбор (анонимной) статистики. Либо он продаёт расширение, и тогда кто-то другой включает рекламу или сбор статистики — это не так важно для пользователя. Важно то, что завтра вы открываете браузер и видите новую рекламу на привычных сайтах. В Chrome вы не можете откатиться до предыдущей версии или запретить обновление, вы можете только полностью отключить привычный скрипт.

Монетизация расширений за счёт рекламы — это безопасный и легальный метод, который активно применяется в разработке. Можно уверенно сказать, что запрещать рекламу в расширениях Google не будет: многие приложения и расширения живут только на этом. Но сколько ссылок и баннеров вы готовы терпеть ради удобного и привычного функционала?

Пользователи Reddit собрали список расширений, которые вставляют в страницы рекламу (в том числе заменяют родные баннеры на свои), следят за своими пользователями (анонимно или явным образом) или просто ведут себя «подло». Часть списка (например, Add to Feedly) уже была удалена из Chrome Store.

Разберём для примера расширение Neat Bookmarks. Оно позволяет удобно управлять закладками в браузере, при этом имеет поддержку интерфейсов для слабовидящих и управления с клавиатуры. Нас интересует то, что оно распространяется с партнёрской рекламой. Реклама включена по умолчанию, и об этом информирует отдельный абзац на странице, которая открывается после установки расширения.

В настройках Neat Bookmarks также есть галочка для отключения рекламы — но при попытке нажать на неё открывается страница с просьбой о пожертвовании. Только на ней пользователь узнаёт о том, что реклама отключается только после пожертвования (любой суммы) через PayPal. Таким образом, пользователь приносит доход разработчикам — напрямую или косвенно, о чём он осведомлён — после установки. Если вы не читаете страницы после установки и не смотрите в настройки расширений, вы не узнаете про этот включённый код до того, как он заработает. Доход от расширения поступает неизвестным лицам, которые купили расширение в прошлом году.

Существует свободный от рекламы форк расширения с открытым кодом под названием Neater Bookmarks — но у него намного меньше пользователей, а значит, он стоит вторым в поисковой выдаче.

Что делать?

Проверить расширения можно только после установки посредством просмотра их исходного кода, при этом перед пользователем встаёт задача расшифровки сжатых JavaScript файлов — часто с неизменёнными строковыми переменными (где и хранятся адреса для «звонков»), но иногда специально обфусцированных. Расширения с применением Native Client (а в будущем их станет больше) потребуют особого изучения и отладки. Также существуют расширения для Firefox и Chrome, которые уведомляют о новых версиях установленных «примочек».

Люди, понимающие Javascript, могут пользоваться архивом Userscripts.org как источником альтернативных расширений. Скрипты на этом сайте не проходят никаких фильтров (что значит, там очень много опасного кода и предполагается, что вы лично читаете код всего, что ставите), но вы можете прочитать код перед установкой. Если устанавливать скрипты через расширение TamperMonkey, то вы можете настроить автообновление (TM предупреждает о новых версиях и может спрашивать вас перед установкой).

К сожалению, это — всё, что могут сделать продвинутые пользователи. Google Store жёстко связан с Google Chrome. Процесс автообновления не отключаем (в отличие от Mozilla Firefox, где есть опция ручного обновления расширений). Если вы устанавливаете расширение, то вы безоговорочно доверяете его разработчикам — сейчас и в будущем, нынешним и будущим разработчикам. Если у вас спрашивают ваши данные на habr.ru, то вы должны быть готовы предоставить все данные с habr.ru. Без исключений.
Доверяете ли вы тому, что устанавливаете в браузер?
2%
(38)
Лично инспектирую код при установке
5%
(132)
Пользуюсь только расширениями с открытым исходным кодом
41%
(997)
Читаю все отзывы (и смотрю на рейтинг)
23%
(544)
Смотрю на рейтинг
13%
(319)
Мне всё равно, главное чтобы работало
16%
(384)
Ничему не доверяю

Проголосовало 2414 человек. Воздержалось 422 человека.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Александр @Oreolek
карма
31,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (48)

  • +25
    Сказать честно, затрудняюсь даже вспомнить, когда последний раз качал какое-то категорично новое расширение; Пользуюсь от силы пятью привычными, в больших нужды больше нет. Если какой-то из них выкатит обновление, откровенно говоря, обновлю даже не смотря.

    Поверхностная проверка проходит без особого фанатизма: рейтинг + несколько последних комментариев.
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Расширения обновляются без уведомления если новой версии не требуется новых прав доступа. Поэтому под раздачу и попали в первую очередь всякие «Add to...», требующие «Access your data on all websites». Но эти расширения и без перепродажи были в группе риска.

        Другое дело, что очень много полезностей в Chrome можно сделать исключительно имея вышеуказанный permission. У меня так вообще почти у всех установленных расширений он есть. И это — большая недоработка API расширений, с моей т.з.
    • 0
      А какими, если не секрет?
    • 0
      У меня было всего 3 расширения, одно из готорых Google Docs, двумя другими уже давно пользовалась. А таки в одном из них оказался рекламный вирус (может и не вирус) — Smooth Gestures, ниже уже о нем упоминалось. Хорошо, что их встраиваемый джаваскрипт был кривой и выдавал ошибку в консоли. А так — сидела бы и не знала что происходит.
      Так что малое количество расширений еще ничего не гарантирует.
  • 0
  • +4
    Пользуюсь ESR-веткой Firefox, установлено много (около двадцати) дополнений, использую Sync, но дополнения обычно не обновляю. Проблем не испытывал.

    Кажется, что такая тактика действительно избавляет от множества проблем ;)

    P. S. А, ну если и ставлю какой-нить юзерскрипт, то стараюсь его вычитывать.
    • +1
      Интересный факт: на каждой странице каждого дополнения для Firefox есть маленькая ссылочка на обзор исходников (блок «Информация о версии», по умолчанию свёрнут).
      • +2
        В админке каждого дополнения есть галочка «Показывать исходники».
        По умолчанию включена, но можно отключить.
      • +1
        Кстати, это ещё один плюс центра аддонов фаерфокса — можно найти старую версию современного дополнения, которая работает со старыми фоксами (если брать ESR, то он может отставать на много версий, тем более репид-цикл разработки...). Не уверен, что такое есть в хроме, и не придётся пользоваться ради этого каким-нить аналогом oldapps.com.
  • +1
    Альтернативный ответ. В случае проблем — начинаю проверять. Недавно поиск с гугла стал проходить через левый домен. Оказалось "[какой-то] Resizer" — расширение для изменения размеров окна браузера стало так монетизироваться.
    • 0
      Нарвался на этот же "… Resizer", при чем у меня стояло расширение, убивающее некоторые механизмы реферальных ссылок (или adblock со злыми фильтрами, не суть). Из-за интерференции этих двоих, ссылки с выдачи Гугла открывали пустую белую страницу. Долго недоумевал, чистил куки, грешил на то, что Гугл прикрутил себе в рекламу кривые объявления.
      • 0
        грешил на то, что Гугл прикрутил себе в рекламу кривые объявления

        Серьёзно? :D
  • +1
    Помню, несколько месяцев назад заметил подозрительную рекламу в браузере, стал искать. Отрубал все расширения, на Neat Bookmarks вышло. Посмотрел код — а там скрипт грузится с рекламой или т.п.

    Помню, в прошлом, в годах так 2000, были программы. которые искали в кеше браузера рекламные скрипты (так называемые ad). Видимо, их время опять пришло — в этот раз нужно постоянно натравливать эти программы на код установленных расширений…
    • +2
      Было аналогичное со Smooth Gestures.

      Около двух лет все было нормально, потом добавили отключаемую рекламу в абсолютно не этичном тоне — выключатель был озвучен в стиле «Если вам плевать на то, что мы умрем с голоду, можете отключить рекламу вот здесь».

      Через месяц я начал видеть какую-то абсолютно левую рекламу на страницах, потом мне стали предлагать какие-то левые товары в интернет-магазинах, стал искать в чем дело — оказалось, что этот аддон принудительно переключает флажок «Показывать рекламу» при каждом запуске хрома, и отключить можно только за деньги.

      Удалил к чертовой матери.
      • 0
        Видимо, это как-то связано с тем, что это расширение уже не нужно, т.к. есть chrome://flags/#enable-smooth-scrolling
        • 0
          Smooth Gestures добавляло в хром поддержку жестов мыши на манер старой Оперы. Было очень удобно, что во всех браузерах работали привычные движения мышью. В своё время при дебаге сайта увидел левые запросы на левые домены, оказалось виновато это расширение. Полез в стор – там уже набор комментариев с единицей, я добавил свой.
          Сейчас, пока писал комментарий, глянул – появилась ad-free версия, надо попробовать поставить в новую оперу плагин для хрома, чтобы было как в старой опере.
          • 0
            Тьфу, увидел первое слово, а второе слово мозг проигнорировал. Прошу прощения. Раньше использовал расширение Smooth Scroll (или как то так) и поэтому автоматически на него подумал.
  • +1
    А у меня как-то неожиданно ноут начал говорить какую-то одну и ту же фразу(забыл какую). Даже не просто реклама, а стремление увести куда-то, вроде бы.
    Проверил. Это был один из плагинов для жестов. Причём, там в отзывах уже давным-давно писали про это, но, видимо, nobody cares.
    Fuck you, Google.
    • 0
      «Проверьте вашу почту», да.
  • +1
    У меня такое было с одним из расширений для ютуба. Сначала не понял, с чего ютуб вдруг такую стрёмную рекламу начал показывать. но потом нашёл и отключил.
  • +16
    Добавьте в голосование «До этого доверял».
    • +5
      Вот да.
      У меня тоже случился кризис доверия прямо сейчас.

      Блин, я не настолько знаю JavaScript, чтобы читать код самостоятельно. То есть читать-то я его могу — могу даже вслух и нараспев — но вредоносный паттерн не распознаю.

      И вот сейчас я слегка в офигении — делать-то что? Отслеживать отзывы и надеяться на то, что сообщество предупредит? Издержки постоянного отслеживания очень высоки. Не пользоваться плагинами вообще? Я редко их ставлю, и те, что остаются — не случайны. Надеяться, что минует меня чаша сия? Не выход.

      Блин, вот бы кто-нибудь, заслуживающий доверия, написал плагин для отслеживания нехорошего поведения других плагинов :).
      • +3
        Я думал над этим — impossible. Магазин Google не имеет стороннего API и не выдаёт полного списка расширений, только поиск. Он не будет оповещать об обновлениях сторонние проги. Фактически о новой версии расширения можно узнать максимум за несколько часов до того, как она распространится по всему миру, это ничтожно мало для ручной проверки. Ставить расширения с других сайтов в Chrome запрещено. Опять же, до установки вы даже не можете удостовериться, что вот этот код на Github действительно используется в конкретном расширении — это всего лишь обещание от автора.

        Короче, это задача исключительно Google. Если они не смогут защитить своих пользователей от подлой рекламы, они потеряют пользователей.
  • 0
    а если в расширении вставлен Google Analytics это слежение за пользователями? а если на сайте вставлен Google Analytics это слежение за пользователями?
    • +1
      Гуглоаналитика следит через куки, расширение может следить напрямую, за конкретным гуглоаккаунтом.
    • +1
      Это слежение с целью сбора статистики. GA записывает всё о вашем поведении на сайтах, через cookie. Многие расширения используют GA, хотя не все признаются в этом.

      Большую опасность представляет откровенная слежка, когда расширение чётко шлёт какой-нибудь уникальный ID, имя аккаунта Google, всю вашу историю посещений и списывает пароли из тегов . Это уже откровенный зловред, и такие надо однозначно жечь. Но смысл в том, что если расширение начинает отправлять информацию на какой-то «левый» домен, вас обычно не предупреждают и тем более не спрашивают об этом. Тем более вы не можете знать, как будет использована информация о вас. Что именно считает статистика, для кого и зачем — неизвестно.

      Сбор статистики — это нормально в интернете, фактически каждый сайт следит за посетителями. Но в случае расширений хорошим тоном считается хотя бы уведомлять пользователя. Для примера, расширение Ghostery имеет функцию GhostRank — сбор анонимной статистики. Об этом написано на странице в Маркете перед установкой, об этом написано на специальной странице, которая открывается после установки. Галочка по умолчанию отключена, и расширение просит включить её добровольно — указывая, что это сбор статистики. Да, пользователь не знает, что именно записывается — но он знает, кем, где и зачем. По-моему, это честно.
      • 0
        ну во-первых не только через куки. Отправляется все что можно получить через js. И в расширении все также как на сайте. А что бы получать что-то болшее надо получить высокие разрешения для дополнения Chrome, на которые вы соглашаетесь при установке.
        во-вторых да, многие расширения используют GA (ну и почему только GA — любой подобный сервис по сбору статистики), сам гугл советует это делать — а что такого, сайты же собирают статистику почему расширение не может собирать. Автор должен знать сколько пользователей пользуются, из каких стран и т.п. И потом гугл использует эту инфу для контекстной рекламы например. Так что расширение ничем особо не отличается от обычного сайта и ненадо сгущать краски.
        • 0
          Есть расширение для отключения передачи данных в Google Analytics. Другой вопрос, насколько оно действенное.
          От персонализации рекламы по cookie есть такое расширение.
        • +2
          > Автор должен знать сколько пользователей пользуются, из каких стран и т.п.

          А не пойти ли ему? Пусть установки считает через маркет, например.

          > И потом гугл использует эту инфу для контекстной рекламы например.

          А не пойти ли и гуглу со слежкой за мной?

          > Так что расширение ничем особо не отличается от обычного сайта

          Расширение имеет доступ ко *всем* сайтам. Нормально так, да?
          • 0
            ну а куда деваться — жизнь несправедлива. кто против слежки знает как от нее избавиться. Хотя почему несправедлива, все справедливо — вы бесплатно пользуетесь например гуглом, а гугл собирает статистику, там у них соглашении так и написано. А если не нравиться — ну не пользуйтесь.

            > Расширение имеет доступ ко *всем* сайтам.

            ну если учесть что GA стоит на всех сайтах, то статистика собирается по всем сайтам и всем пользователям.
            • 0
              > ну если учесть что GA стоит на всех сайтах

              Не на всех.

              > то статистика собирается по всем сайтам и всем пользователям.

              Блокируется элементарно.
              • 0
                1. думаю на 99% сайтов стоит какая либо статистика.
                2. ну так если сбор статистики элементарно блокируется на сайте — в расширении тоже элементарно. Че тогда говорить. Проблемы то нет значи. я же сказал выше: кто не хочет что бы за ним следили — блокирует (или думает что блокирует), а кому пофиг — тому пофиг. Я не понимаю почему сайтам можно ставить сбор статистики а расширению нельзя…
                • 0
                  Дело не в том, что можно сайтам а запрещено расширениям. Дело даже не в том, что многие расширения не предупреждают об использовании систем аналитики — сайты тоже не предупреждают, это не обязательно за пределами США.

                  Предположим, что вы обнаружили что одно из ваших расширений отправляет пакеты на какой-то левый домен. Без предупреждения и возможности отключить в настройках. Это может быть неизвестная вам система статистики (в том числе частная установка Piwik), а может быть что угодно. Доступ ко всем сайтам — это доступ именно ко всем сайтам, даже защищённым https. Что, если расширение «спалит» баланс у вас на банковском счету? Обычный пользователь не может заблокировать по щелчку мышки связь с неизвестным доменом, это надо знать магию файла hosts как минимум.

                  Ещё раз: сбор статистики — это пример правомерного использования. Статистика собирает данные о вашем поведении, а не пароли и псевдонимы. Проблема именно в том, что политика Google позволяет распространять не только adware, но и malware.
                  • 0
                    ну в статье говориться что если расширение собирает статистику оно уже вредоносное. Пароли и банковские балансы это не статистика. Я призываю не смешивать понятия. Сбор статистки это одно, а зловредный код это другое. И за зловредный код гугл сразу удалит расширение из магазина и, кстати, благодаря свой системе обновлений расширений, оно исчезнет и у всех пользователей
                    • 0
                      Понятия идут вместе, потому что это — специально скрытый от пользователя код связи с третьими доменами. Как вы сами заметили, считать можно всё, что доступно через JS. В том числе на закрытых страницах, даже через https, потому что код расширений внедряется на стороне клиента.

                      Есть и другое соображение. Любой анонимный набор статистики сервер собирающей стороны получает в комплекте с IP юзера. Это заложено в протоколе HTTP, никакой суд не может заставить убрать IP-адрес из отправляемых данных. И тут остаётся только один вопрос: доверяете ли вы людям, которые втайне от вас записывают ваше поведение? Для того, чтобы не являться шпионской программой, принимающая сторона должна стирать записи IP-адресов — но пользователи не могут это проверить. В том числе это касается пользователей, которые сидят в «режиме инкогнито» и не предполагают, что кнопка добавления в закладки может сопоставить их через IP с основным аккаунтом.
  • –3
    Ad Muncher нас спасет, по крайней мере от рекламных баннеров, а на слежку начхать.
  • +1
    Расширение было сделано Амитом за час
    было продано неизвестному за сумму в несколько тысяч долларов
    вот это интересно.

    А в остальном новостей нет. Такая политика Google была известна давно.
  • +2
    chrome.google.com/webstore/detail/chrome-extension-source-v/jifpbeccnghkjeaalbbjmodiffmgedin
    Довольно полезное дополнение, для просмотра исходников расширений в Chrome Web Store.
  • 0
    Ставлю минимум расширений-обычно 1 или 2 но не более. Обычно это Adblock и еще что-то. Так что если у меня появляется реклама на страницах-значит что-то 100% не так…
  • +2
    Судя по своему личному опыту могу сказать следующее:

    Mozilla Extensions каждое обновление проходит ручную проверку модераторов

    Бывает, что разрешения аппрувят спустя час после загрузки на проверку, подозрительно быстро. Видимо все же зависит от человека который проверяет.

    К тому же, правила Mozilla требуют предоставлять на проверку исходники расширений

    Раньше, я минифицировал js код в аддонах и они проходили ревью стабильно. Всего лишь один раз, они попросили не минифицировать код и то это было скорее даже пожелание. Так что требования показывать исходники не совсем обязательное.

    Кроме того, расширения на Chrome уже могут включать скомпилированный код Native Client.

    Насколько я знаю (ибо не использую NaCl), если ваше расширение использует NaCl, оно то как раз будет проверяться вручную, поправьте если я ошибаюсь.
  • –1
    Использую Оперу, там весь набор необходимого мне функционала идет в коробке. Жаль что в последних версиях там много чего порезали:(
  • 0
    Не доверяю расширениям, а также тому, что без моего ведома пытается что-то делать.
    По этой причине не использую расширений в браузерах, а из браузеров только опера 12.16 и фаерфокс как альтернатива. Только эти 2 браузера по своей функциональности устраивают из коробки.
  • +4
    Видимо, не зря я использую Файерфокс, а не Хром.
  • 0
    Использую только Google Mail Checker, но, если не ошибаюсь, оно от самого гугла.
    Поэтому «сплю спокойно».
  • +1
    Кстати, появился аналог Add to Feedly. Как утверждается в описании ADWARE FREE.
    chrome.google.com/webstore/detail/add-to-feedly/ghaljlgnomaiedigplceadckbkkdkfem/details
  • +2
    Нарвался на то, что одно из расширений начало тихо и спокойно френдить пользователей в твиттере.

    Обнаружил, когда их было около 1000 (при нормальной цифре <100). Естественно, сначала отключил авторизацию всех приложений. Не помогло. Выключил расширения, кроме минимального набора — перестали добавляться.

    Не разбирался, какое из приложений это делало: запускать расширения, зная, что одно из них скомпрометировано, нет никакого желания.
  • 0
    Ну не все отзывы, конечно, читаю — в опросе вы погорячились))

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.