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. Без исключений.
Автор: Oreolek