Saya Membaca Source Code Honey

TThe PrimeTime
Computing/SoftwareAdvertising/MarketingInternet Technology

Transcript

00:00:00(suara keyboard) Jadi saya ingin melihat skandal besar Honey yang sedang terjadi ini.
00:00:12Jika kamu tidak familiar dengan Honey,
00:00:14Honey adalah salah satu ekstensi Chrome untuk kupon,
00:00:17yang artinya semua kodenya tersedia untuk saya periksa.
00:00:19Jadi saya bisa melihat hal-hal yang dituduhkan dalam video-video YouTube ini dan saya bisa benar-benar melihat,
00:00:25apakah ini benar terjadi?
00:00:26Tapi lebih dari itu,
00:00:27dalam hal ekstensi,
00:00:28saya sebenarnya bisa melihat dari waktu ke waktu dan melihat,
00:00:32apakah keputusan-keputusan buruk ini dibuat dan apakah para software engineer telah melakukan perubahan untuk tidak hanya melanjutkan,
00:00:39tapi membuat perilaku buruk ini menjadi lebih baik dan lebih kokoh?
00:00:44Ya, memang begitu.
00:00:45Dan saya akan menunjukkan bagaimana itu terjadi.
00:00:47Tapi saya tahu ada banyak dari kalian yang mungkin tidak tahu apa yang sedang terjadi.
00:00:50Kalian bahkan tidak familiar dengan Honey.
00:00:52Jadi kalian belum pernah benar-benar mengikuti perkembangannya.
00:00:55Ini sebenarnya melibatkan operasi yang sangat spesifik dari Honey yang ingin saya bahas.
00:00:59Jadi kita akan menonton cuplikan tiga menit dari video pengungkapan Honey terbaru ini.
00:01:05Dan kemudian saya akan membahas tentang menelusuri kode yang diminifikasi dan apa yang saya temukan serta maksud di baliknya,
00:01:11yang cukup mengejutkan.
00:01:12Nah,
00:01:12kalau ada satu hal yang dibenci orang lebih dari penipuan,
00:01:15itu adalah pencurian.
00:01:15Dan di video pertama saya,
00:01:16saya menunjukkan bagaimana Honey mencuri uang dari para influencer.
00:01:19Tapi yang tidak saya katakan adalah bahwa perilaku ini dalam kebanyakan kasus,
00:01:23secara tegas tidak diperbolehkan.
00:01:25Kamu tahu,
00:01:25perusahaan-perusahaan yang menjalankan industri ini,
00:01:28yaitu jaringan afiliasi,
00:01:29sangat paham bahwa ekstensi kupon seperti Honey memiliki kemungkinan tinggi untuk membajak komisi dari influencer,
00:01:34blogger,
00:01:35dan afiliasi berbasis konten lainnya.
00:01:37Lebih penting lagi,
00:01:38mereka juga memahami bahwa ini tidak adil,
00:01:40terutama di bawah kebijakan klik terakhir yang menang,
00:01:44yang tetap menjadi standar industri.
00:01:46Jadi untuk mencegah jenis pencurian komisi ini,
00:01:48sebagian besar jaringan afiliasi besar memberlakukan yang dikenal sebagai kebijakan stand down.
00:01:53Mari saya tunjukkan seperti apa itu di Honey.
00:01:55Mari kita kunjungi newegg.com terlebih dahulu tanpa link afiliasi.
00:01:58Dan seperti yang kamu lihat,
00:02:00Honey langsung muncul menawarkan cashback.
00:02:02Tapi kalau kita lakukan ini lagi,
00:02:03kali ini menggunakan link afiliasi saya untuk Newegg,
00:02:06kamu akan melihat bahwa Honey tidak muncul sama sekali.
00:02:08Dan kalau kita klik ikon Honey,
00:02:09kamu bisa melihat bahwa Honey sekarang dinonaktifkan.
00:02:12Jadi begitulah seharusnya Honey berperilaku ketika pengguna sudah mengklik link afiliasi orang lain.
00:02:17Lalu di mana penipuan yang dituduhkan itu, kamu tanya?
00:02:20Nah,
00:02:20ternyata,
00:02:21Honey selalu memiliki sistem stand down yang dibangun ke dalam aplikasi mereka,
00:02:24tapi mereka secara selektif memilih kapan dan kepada siapa menerapkan aturan tersebut.
00:02:28Mari kita uji link afiliasi saya untuk Newegg lagi.
00:02:31Hanya kali ini saya punya dua browser Chrome yang sepenuhnya terpisah terbuka pada saat yang bersamaan,
00:02:36dan masing-masing login ke akun Honey yang berbeda.
00:02:38Akun Honey di sebelah kiri memiliki nol poin cashback,
00:02:41sementara akun Honey di sebelah kanan telah mengumpulkan poin cashback.
00:02:45Sekarang,
00:02:45apa yang terjadi ketika saya membuka link afiliasi Newegg di kedua browser?
00:02:49Akun Honey di sebelah kiri melakukan stand down seperti pertama kali.
00:02:52Tapi lihat ini,
00:02:53akun di sebelah kanan,
00:02:54yang memiliki poin cashback,
00:02:56tidak melakukan stand down.
00:02:58Jadi kenapa begitu?
00:02:59Jadi ini adalah hal yang ingin saya uji.
00:03:01Saya ingin menelusurinya karena ini adalah kode.
00:03:03Saya bisa memahami kode.
00:03:05Saya bisa melihat JSON yang turun dan saya bisa memahaminya.
00:03:09Tidak hanya itu,
00:03:09tapi kekuatan AI akan memungkinkan saya untuk menelusuri kode yang diminifikasi dengan kecepatan yang tidak pernah saya bayangkan sebelumnya di sepanjang karir pemrograman saya.
00:03:18Jadi yang kami lakukan adalah kami pertama kali mendapatkan banyak versi Honey.
00:03:22Jadi yang saya telusuri dimulai dari sekitar Februari 2019,
00:03:27sampai hari ini,
00:03:281901.
00:03:29Dan dengan itu,
00:03:29yang ingin saya lakukan adalah,
00:03:31oke,
00:03:32pertama-tama,
00:03:32apakah semacam poin pengguna ini yang menentukan kapan dan kapan tidak menampilkan menu stand down,
00:03:38apakah itu ada?
00:03:38Ya, itu memang ada.
00:03:40Tapi pertanyaan sebenarnya adalah, apakah itu sudah berubah?
00:03:43Karena saya pernah bekerja di perusahaan besar,
00:03:45saya pernah bekerja di perusahaan besar,
00:03:46kan,
00:03:46kalian juga pernah bekerja di perusahaan besar,
00:03:47saya yakin kalian pernah,
00:03:48atau sebagian dari kalian pernah,
00:03:49dan kalian tahu bahwa terkadang kode itu ya tetap bertahan saja.
00:03:50Kalian tahu,
00:03:51itu seperti ups kesalahan kecil,
00:03:52tapi ya tetap ada di sana,
00:03:53tidak ada yang mengubahnya selama lima tahun,
00:03:55begitulah adanya.
00:03:55Dan itulah yang saya cari,
00:03:57yaitu,
00:03:58apakah kode tersebut tetap bertahan?
00:04:00Atau sudah ada perubahan yang signifikan?
00:04:03Bukan seperti perbaikan bug kecil-kecilan.
00:04:05Baiklah,
00:04:05jadi untuk menghindari pelanggaran hak cipta,
00:04:07karena ternyata pengacara PayPal akan menggugat dengan DMCA,
00:04:10siapa pun yang benar-benar menampilkan kodenya.
00:04:13Itu berarti saya harus melakukan sandiwara aneh ini di papan tulis tua untuk menunjukkan kepada kalian apa yang terjadi.
00:04:18Jadi dimulai dari versi 11,
00:04:20ingat,
00:04:20yang sekitar tahun 2019,
00:04:22versi ini memang memiliki logika stand down.
00:04:25Bahkan ada hal-hal yang disebut logika stand down SSD.
00:04:29Itu cocok dengan file JSON yang dikirim dengan banyak data.
00:04:32Inilah stand down saya untuk pengguna yang bahkan tidak login sama sekali,
00:04:36hal-hal paling dasar.
00:04:38Di sini, kalian bisa lihat UP adalah poin pengguna.
00:04:41ADB adalah seperti waktu terakhir add block digunakan.
00:04:45Ada juga is account logged in.
00:04:47Dan ada beberapa field lain yang tampaknya muncul sesekali.
00:04:50Jadi yang menarik adalah pada tahun 2019 di bawah versi 11,
00:04:53hal-hal sering terlihat seperti ini.
00:04:55Ada seperti pernyataan switch raksasa yang akhirnya memiliki kasus-kasus di mana seperti,
00:05:00oke,
00:05:00hei,
00:05:01apakah kita menguji email?
00:05:02Dan ya, itu benar-benar memiliki string.
00:05:04Apakah email ini mengandung kata test?
00:05:06Maka selalu stand down, yang omong-omong, mencurigakan.
00:05:10Ini menghindari akun pengujian link tersebut untuk masuk dan berperilaku seperti link share test untuk melihat apakah ini benar-benar berfungsi?
00:05:16Karena mari kita hadapi saja,
00:05:17siapa di sini yang tidak punya akun tester yang tidak mengandung kata test?
00:05:20Saya pasti punya.
00:05:22Tapi meskipun begitu, ini adalah pemeriksaan eksplisit.
00:05:24Jika Anda memiliki kata test di mana pun di email Anda,
00:05:27itu akan menonaktifkan Anda.
00:05:29Tapi lebih dari itu,
00:05:30maksud saya,
00:05:30ini sudah dibicarakan,
00:05:31tapi lebih dari itu hal-hal yang benar-benar membingungkan adalah melewati serangkaian pemeriksaan dan akan seperti,
00:05:37hei,
00:05:37apakah provider yang saat ini aktif sama dengan LS,
00:05:40yaitu link share?
00:05:41Jika ya, saya ingin Anda menerapkan aturan yang tepat ini.
00:05:44Dan kemudian nanti,
00:05:45ada pemeriksaan di mana ia menelusuri semua aturan yang telah ditemukan,
00:05:49lalu ia akan satu per satu dalam loop kecil memeriksa setiap aturan ini dan memeriksa,
00:05:53apakah ada yang gagal?
00:05:55Jika ada yang gagal, itu akan stand down.
00:05:57Jadi ini adalah proses yang cukup hard coded,
00:06:00seperti yang bisa kalian lihat,
00:06:01karena ada seperti baris literal yang mengatakan,
00:06:04jika link share,
00:06:05lakukan tindakan ini.
00:06:06Jika kita berada di provider lain ini, lakukan hal lain.
00:06:08Sekarang tentu saja saya sudah mengerjakan banyak sekali proyek di mana hal semacam ini terjadi.
00:06:12Ini sangat normal.
00:06:14Anda mulai dari mana Anda seperti,
00:06:15oke,
00:06:15hei,
00:06:16kita mungkin punya satu atau dua provider dan itu saja.
00:06:18Jadi saya hanya akan menaruh beberapa kasus khusus hard code di sini dan kita akan pastikan saja hal-hal ditangani dengan cara tertentu.
00:06:24Kita stand down untuk beberapa durasi,
00:06:25yang omong-omong,
00:06:26bukan bagian yang sangat panjang.
00:06:27Kalian harus menonton video MegaLag untuk mengetahui betapa buruknya aturan tersebut sebenarnya.
00:06:34Tapi sekali lagi,
00:06:34tujuan saya adalah untuk bertanya,
00:06:36oke,
00:06:36apakah mereka membuat perubahan pada kode yang merupakan perbaikan bug?
00:06:39Apa yang terjadi?
00:06:40Nah,
00:06:40di sinilah hal-hal menjadi sedikit membingungkan karena antara versi 11 hingga 14,
00:06:46yang saya percaya sampai tahun 2022,
00:06:49ya,
00:06:492022,
00:06:50hal-hal tetap cukup konstan.
00:06:52Tidak ada yang benar-benar berubah,
00:06:53sedikit pengeditan,
00:06:54tidak ada yang benar-benar menunjukkan banyak hal.
00:06:56Tapi dimulai sekitar,
00:06:57saya percaya di versi 16,
00:06:59jadi di tahun 2024,
00:07:00ada refactor kuat yang dibuat sehingga mereka dapat menggerakkan banyak keputusan ini dari endpoint di Honey.
00:07:07Sekarang endpoint ini mengirimkan objek yang terlihat seperti ini,
00:07:11yang memiliki nilai dasar ini,
00:07:12lalu memiliki nilai-nilai ini,
00:07:14lalu memiliki nilai-nilai ini di bawah X.
00:07:16Jadi itu berarti versi sebelumnya,
00:07:18menggunakan sekelompok pernyataan if untuk menentukan jenis perilaku yang ingin dilakukannya.
00:07:23Kemudian sistem akan melakukan evaluasi aturan untuk melihat,
00:07:26apakah aturan ini benar-benar lolos?
00:07:28Apakah kita benar-benar mendapatkan hasil true atau false?
00:07:30Tapi di versi 16,
00:07:31mereka memutuskan untuk lebih serius dalam hal rekayasa perangkat lunak.
00:07:36Kita semua tahu apa yang harus dilakukan ketika kamu punya banyak pernyataan if yang melakukan pembungkusan data dan melakukan mutasi dasar pada sebuah objek?
00:07:45Tentu saja kamu ingin menjalankannya melalui semacam konfigurasi.
00:07:48Kamu ingin menjalankannya melalui sesuatu yang lebih dinamis agar sedikit lebih mudah.
00:07:52Dan itulah persis yang mereka lakukan.
00:07:53Jadi kalau kita kembali ke sini dan melihat data yang dikirim kepada saya,
00:07:56seorang pengguna Honey yang tidak login,
00:07:58kamu akan melihat di sini bahwa saya punya base class.
00:08:00Base class ini akan menjadi objek dasar untuk menentukan bagaimana Honey mengambil keputusan.
00:08:05Saat ini untuk pengguna yang tidak login dengan base class ini,
00:08:09saya memerlukan 65.000 poin pengguna agar Honey tidak mundur.
00:08:13Kalau saya punya kurang dari 65.000 poin,
00:08:15ingat saya tidak login jadi saya punya nol poin,
00:08:17sistem akan bilang,
00:08:18maaf,
00:08:18saya mundur.
00:08:18Saya menghindari ini.
00:08:20Nah,
00:08:20ketika sistem mendapatkan base itu,
00:08:22yang kemudian dilakukannya adalah memeriksa bagaimana kita sampai di sini?
00:08:25Dari mana kita sampai di sini?
00:08:27Mengapa kita sampai di sini?
00:08:28Dan sistem melakukan pemeriksaan berikutnya,
00:08:29apakah ini berasal dari salah satu jaringan afiliasi ini?
00:08:32Dan kemudian sistem akan mulai membungkus semuanya.
00:08:33Jadi,
00:08:33oke,
00:08:34jika saya datang dari tempat link share,
00:08:37sekarang poin yang dibutuhkan hanya 5.001.
00:08:40Sistem akan mengedit objek dasar ini.
00:08:41Ini sebenarnya melakukan rekayasa yang lebih baik dan lebih canggih.
00:08:44Ini bukan lagi serangkaian pernyataan if yang di-hardcode.
00:08:48Sebaliknya, sistem melakukan, hei, ambil dot base.
00:08:51Lalu saya ingin mengatakan, apakah kamu punya provider saya?
00:08:55Kalau kamu punya provider saya,
00:08:57saya ingin menyebarkan nilai-nilai provider saya atau hanya objek kosong.
00:09:01Dan kemudian sistem melakukan sesuatu yang lebih liar lagi,
00:09:04yaitu semua ini di sini di bawah X.
00:09:07Ini semua adalah nilai-nilai spesifik toko.
00:09:09Kemudian sistem akan memeriksa,
00:09:11hei,
00:09:12toko mana pun yang saat ini saya kunjungi,
00:09:14saya juga ingin menerapkan nilai-nilai itu juga.
00:09:17Dan kemudian sistem akan melakukan logika aturan dasar,
00:09:19menunjukkan bahwa ini tidak lagi berada di bawah semacam mode pemeliharaan.
00:09:23Ini menunjukkan bahwa ini tidak lagi semacam hal yang di-hardcode secara sembarangan yang sudah ada selama seperti satu dekade.
00:09:29Sebaliknya, mereka beralih dari itu.
00:09:31Dan di tahun 2024, mereka berkata, tahu nggak?
00:09:33Kita perlu lebih tangguh dan kita perlu bisa membuat lebih banyak keputusan tentang lebih banyak toko dan lebih banyak provider dengan cara yang lebih mudah dipelihara.
00:09:43Ini adalah rekayasa perangkat lunak sejati dan mereka melakukannya.
00:09:46Jadi ketika saya melihat ini,
00:09:47yang saya lihat adalah bahwa dari waktu ke waktu,
00:09:50mereka telah membuat perubahan untuk membuat sistem mereka lebih baik,
00:09:53yang berarti ada niat di baliknya.
00:09:54Mereka ingin mempertahankan apa pun yang dilakukan sistem itu,
00:09:57apakah itu curang atau tidak.
00:09:59Saya tidak bisa mengatakan itu untuk orang lain yang memutuskan,
00:10:02tapi setidaknya saya bisa mengatakan bahwa keputusan mereka adalah untuk membuatnya lebih tangguh dan lebih baik.
00:10:07Dan mengingat fakta bahwa persepsi umum terhadap sistem ini cukup mencurigakan,
00:10:11mereka telah membuat sistem mereka yang cukup mencurigakan menjadi jauh,
00:10:15jauh lebih baik.
00:10:16Tapi itu bukan semua yang saya temukan.
00:10:17Saya menemukan sesuatu yang lain yang membangkitkan minat saya.
00:10:19Saya terus melihat kata VIM yang terus muncul.
00:10:23Nah saya berpikir, VIM, apa hubungannya dengan text editor?
00:10:26Ketika saya bertanya kepada Claude tentang hal itu,
00:10:29ia sebenarnya berkata,
00:10:30hei,
00:10:30kamu sedang membicarakan VIM instance manager yang ditemukan di dalam Honey?
00:10:34Dan saya seperti, VIM instance manager.
00:10:35Oke, tidak mungkin itu.
00:10:37Itu bukan itu.
00:10:38Dan kemudian ketika saya mulai melihat ini,
00:10:41yang akhirnya saya lihat adalah ada seluruh mesin JavaScript di dalam JavaScript yang berjalan di dalam plugin Honey.
00:10:49Nah, ini benar-benar hal paling aneh yang pernah saya lihat.
00:10:54Saya mencoba membaca tentang hal itu.
00:10:56Saya bukan ahli pengembang plugin dalam hal Chrome.
00:10:59Jadi saya tidak tahu mengapa ada orang yang akan menjalankan JavaScript di dalam JavaScript.
00:11:05Tapi yang dilakukan Honey adalah sebenarnya menggunakan Acorn,
00:11:09yang merupakan parser JavaScript dan menghasilkan AST dari JavaScript yang valid.
00:11:14Dan sistem mengambil ini,
00:11:15mengevaluasi JavaScript,
00:11:17dan kemudian memasukkannya ke dalam mesin VIM ini.
00:11:19Sekarang ada beberapa referensi dalam kode yang sebenarnya merujuk ke objek lain yang disebut cart ops retrieval JS dan product ops retrieval JS,
00:11:28yang terkadang tidak null,
00:11:30sebenarnya berisi kode.
00:11:31Dan ini juga merujuk ke kode JS ini,
00:11:33yang juga terkadang tidak null,
00:11:35seperti di sini,
00:11:36ini adalah JavaScript sungguhan.
00:11:38Tapi sejauh yang saya tahu,
00:11:39sebenarnya tidak mengeksekusi kode-kode ini.
00:11:41Saya mencoba mengatur beberapa breakpoint.
00:11:42Saya tidak pernah benar-benar sampai ke titik membuat pemicu,
00:11:45tapi bagaimanapun,
00:11:46ini memang ada.
00:11:47Mereka telah menyiapkan perangkat untuk dapat mengeksekusi kode jarak jauh di mesin Anda berdasarkan apa pun yang dikembalikan dari Honey dengan cara yang sangat,
00:11:56sangat dikaburkan.
00:11:57JavaScript dalam JavaScript ini,
00:11:59mereka punya parser JavaScript.
00:12:00Mereka punya mesin virtual JavaScript.
00:12:03Ini adalah JavaScript sungguhan di dalam JavaScript.
00:12:06Tapi mereka juga punya satu bagian yang hanya berisi semua fungsi yang dijadikan string.
00:12:11Dan ada banyak JavaScript inline yang penuh dengan cara-cara mereka menelusuri halaman dan hal-hal seperti ini.
00:12:18Tapi yang itu datang bersama produknya.
00:12:22Jadi secara teknis tidak melanggar ketentuan layanan Google yang lama.
00:12:26Karena jika Anda melihat persyaratan tambahan untuk manifest V3 bagi siapa pun yang melakukan ini,
00:12:31Anda seharusnya tidak diizinkan menggunakan JavaScript eval.
00:12:33Oke, jadi kita tidak akan melakukan itu.
00:12:34Kita tidak akan eval.
00:12:35Yang akan kita lakukan adalah hard code beberapa operasi yang tidak ingin kita ketahui oleh plugin lain.
00:12:40Dan kemudian kita akan memasukkan seluruh mesin JavaScript untuk menjalankannya guna lebih mengaburkan apa yang kita lakukan.
00:12:47Yang lucu karena V3 ini di sini,
00:12:49sepertinya dirancang khusus untuk Honey karena tertulis membangun interpreter untuk menjalankan perintah kompleks yang diambil dari sumber jarak jauh,
00:12:56bahkan jika perintah tersebut diambil sebagai data.
00:12:59Jadi mereka menghindarinya.
00:13:00Ini bukan hal-hal jarak jauh.
00:13:01Ini adalah string yang sebenarnya tersedia dalam ekstensi Honey.
00:13:05Tapi ini benar-benar pengaburan.
00:13:07Ini hal yang aneh.
00:13:09Saya pribadi tidak bisa memahami satu pun alasan mengapa ini benar-benar terjadi.
00:13:14Seperti yang saya katakan,
00:13:15rupanya ini karena interaksi dengan ekstensi lain,
00:13:17ekstensi lain yaitu pemblokir iklan.
00:13:19Rupanya pemblokir iklan mungkin memblokir iklan ekstensi Honey jika secara langsung menjalankan fungsi tertentu,
00:13:25tapi entah bagaimana melalui interpreter aneh ini,
00:13:28ia dapat menjalankan hal-hal yang menghindari deteksi.
00:13:31Saya tidak tahu, tapi sepertinya kacau sekali bagi saya.
00:13:34Dan saya merasa ini sangat,
00:13:34sangat menarik karena saya tidak pernah melakukan reverse engineering apa pun.
00:13:37Saya tidak pernah benar-benar melihat kode sumber orang lain,
00:13:39terutama kode sumber yang diminifikasi.
00:13:41Saya hanya ingin menunjukkan ini kepada kalian.
00:13:42Ini mungkin rekayasa paling tidak biasa yang pernah saya lihat dalam hidup saya.
00:13:46Saya pernah menjadi bagian dari basis kode yang panjangnya lebih dari 10 ribu baris dengan mesin state aneh dan mustahil untuk dikerjakan,
00:13:54sulit dipahami,
00:13:55tapi ini harus menjadi yang teratas.
00:13:57Ini harus menjadi alat yang paling kompleks,
00:14:00paling aneh,
00:14:00level Rube Goldberg yang pernah saya lihat.
00:14:03Tapi selain itu,
00:14:04aturan dinamis untuk melakukan hal stand down itu,
00:14:07mereka kuat.
00:14:08Apa pun tujuannya,
00:14:09apakah itu curang atau tidak,
00:14:11ini telah dirancang untuk dinamis dan dikontrol melalui JSON berdasarkan per toko,
00:14:17per penyedia,
00:14:18dan per pengguna.
00:14:19Tapi bagaimanapun,
00:14:20saya ingin memberikan terima kasih khusus kepada Magalega.
00:14:21Itu sangat keren.
00:14:22Saya sempat mengobrol dengannya.
00:14:23Dia membantu saya sedikit melihat beberapa hal.
00:14:25Jadi terima kasih banyak untuknya.
00:14:26Kalian pasti harus lihat videonya.
00:14:27Ada di deskripsi.
00:14:28Sangat bagus.
00:14:29Ada beberapa di antaranya dan saya sarankan kalian menonton semuanya.
00:14:32Sangat, sangat bagus.
00:14:33Juga, apakah kalian suka hal yang saya lakukan ini?
00:14:35Apakah kalian suka format ini?
00:14:36Saya tidak tahu.
00:14:37Ini agak baru.
00:14:38Ini hanya saya menghabiskan waktu di streaming,
00:14:40bersenang-senang,
00:14:40lalu melaporkan kembali kepada kalian.
00:14:42Jika kalian ada di streaming,
00:14:42kalian akan melihat ini terjadi secara langsung.
00:14:44Bisa jauh lebih menyenangkan bagi kalian.
00:14:45Namanya saya bukan reverse engineer,
00:14:48tapi ini sangat menyenangkan.
00:14:50Saya bisa melihat mengapa orang melakukannya.
00:14:51Sampai jumpa.
00:14:52Hei, itu HTTP ya?
00:14:55Singkirkan itu dari sini.
00:14:56Bukan begitu cara kita memesan kopi.
00:14:57Kita pesan kopi lewat SSH, terminal.shop.
00:15:00Ya, kamu mau pengalaman yang nyata?
00:15:02Kamu mau kopi yang asli?
00:15:03Kamu mau langganan keren yang bikin kamu nggak perlu ingat-ingat lagi?
00:15:06Oh,
00:15:07kamu mau campuran eksklusif dengan kopi eksklusif dan konten eksklusif?
00:15:12Kalau begitu coba CRON.
00:15:13Kamu nggak tahu SSH itu apa?
00:15:14Yah, mungkin kopinya bukan buat kamu.
00:15:18♪ Kopi terminal di tangan ♪ ♪ Hidup dalam mimpi ♪

Key Takeaway

Analisis source code Honey mengungkap bahwa sistem stand down yang mencurigakan bukan sekadar bug, melainkan fitur yang sengaja dirancang dan terus ditingkatkan dari 2019 hingga 2024 menjadi sistem dinamis yang lebih canggih dan dikaburkan.

Highlights

Prime membongkar source code ekstensi Chrome Honey untuk memverifikasi tuduhan skandal pencurian komisi afiliasi dari para influencer

Honey menggunakan sistem 'stand down' yang selektif - menonaktifkan diri saat mendeteksi link afiliasi, tetapi hanya untuk pengguna dengan poin cashback rendah

Antara 2019-2024, Honey melakukan refactor besar-besaran dari logika hard-coded menjadi sistem dinamis berbasis JSON untuk kontrol yang lebih canggih

Ditemukan mesin JavaScript di dalam JavaScript (VIM instance manager) yang menggunakan parser Acorn untuk mengeksekusi kode dengan cara yang sangat dikaburkan

Sistem stand down Honey dirancang secara dinamis berdasarkan tiga parameter: toko spesifik, penyedia afiliasi, dan poin pengguna

Honey menggunakan threshold poin yang berbeda untuk jaringan afiliasi berbeda (65.000 poin untuk base class, hanya 5.001 untuk LinkShare)

Adanya interpreter JavaScript kustom diduga untuk menghindari deteksi dari ekstensi ad blocker lain

Timeline

Pengenalan Skandal Honey dan Metode Investigasi

Prime memperkenalkan skandal Honey, ekstensi Chrome untuk kupon yang kodenya dapat diperiksa secara publik. Dia menjelaskan bahwa ia akan menganalisis source code untuk memverifikasi tuduhan dalam video YouTube tentang perilaku buruk Honey. Keuntungan menganalisis ekstensi adalah kemampuan untuk melihat perubahan kode dari waktu ke waktu dan menentukan apakah keputusan buruk dibuat secara sengaja atau tidak. Untuk penonton yang tidak familiar dengan kontroversi ini, Prime akan menampilkan cuplikan tiga menit dari video pengungkapan sebelum masuk ke analisis teknis kode yang diminifikasi.

Penjelasan Mekanisme Stand Down dan Selektivitasnya

Video MegaLag menunjukkan bahwa jaringan afiliasi memiliki kebijakan 'stand down' untuk mencegah ekstensi kupon membajak komisi dari influencer di bawah sistem 'last click wins'. Demonstrasi menunjukkan bahwa Honey seharusnya menonaktifkan diri saat pengguna mengklik link afiliasi seseorang. Namun, eksperimen dengan dua browser berbeda mengungkap bahwa Honey berperilaku selektif: akun dengan nol poin cashback melakukan stand down dengan benar, tetapi akun yang sudah mengumpulkan poin cashback tidak melakukan stand down sama sekali. Perilaku inkonsisten ini menunjukkan bahwa Honey sengaja memilih kapan dan kepada siapa menerapkan aturan stand down berdasarkan status pengguna.

Analisis Source Code Versi 11 (2019) - Implementasi Awal

Prime mulai menganalisis versi Honey dari Februari 2019 (versi 11) hingga versi terkini. Di versi awal, logika stand down sudah ada dengan file JSON yang berisi data seperti UP (user points), ADB (waktu terakhir ad block digunakan), dan status login akun. Implementasi 2019 menggunakan pernyataan switch raksasa dengan kasus-kasus hard-coded yang mencurigakan, seperti pemeriksaan eksplisit untuk kata 'test' di email yang akan selalu memicu stand down. Ini diduga untuk menghindari akun testing dari deteksi. Kode juga memiliki pemeriksaan spesifik untuk provider seperti LinkShare (LS), di mana sistem akan menerapkan aturan tertentu dan kemudian memeriksa satu per satu apakah ada yang gagal untuk menentukan stand down.

Evolusi ke Sistem Dinamis Versi 16 (2024)

Dari versi 11 hingga 14 (sampai 2022), tidak ada perubahan signifikan dalam kode. Namun mulai versi 16 di tahun 2024, terjadi refactor besar-besaran untuk memindahkan logika keputusan ke endpoint berbasis JSON. Sistem baru menggunakan struktur dengan 'base class' yang menentukan threshold dasar (65.000 poin untuk pengguna tidak login), kemudian membungkus nilai berdasarkan provider afiliasi (LinkShare hanya butuh 5.001 poin) dan toko spesifik. Ini bukan lagi pernyataan if yang hard-coded, melainkan sistem yang lebih canggih dengan spreading objek dinamis. Refactor ini menunjukkan niat jelas untuk membuat sistem lebih robust dan mudah dipelihara, memungkinkan keputusan yang lebih kompleks tentang lebih banyak toko dan provider dengan cara yang terstruktur.

Penemuan VIM Instance Manager - JavaScript dalam JavaScript

Prime menemukan sesuatu yang sangat tidak biasa: seluruh mesin JavaScript berjalan di dalam JavaScript plugin Honey, disebut VIM (bukan text editor, tapi VIM instance manager). Honey menggunakan Acorn, parser JavaScript yang menghasilkan AST (Abstract Syntax Tree) dari JavaScript valid, kemudian mengevaluasinya melalui mesin VIM ini. Ada referensi ke 'cart ops retrieval JS' dan 'product ops retrieval JS' yang terkadang berisi kode aktual. Meskipun Prime mencoba mengatur breakpoint dan tidak berhasil memicu eksekusi, infrastruktur untuk mengeksekusi kode jarak jauh dengan cara sangat dikaburkan jelas ada. Ini adalah tingkat kompleksitas dan pengaburan yang sangat tidak biasa untuk sebuah ekstensi browser.

Analisis Motivasi dan Kepatuhan terhadap Manifest V3

Prime menjelaskan bahwa implementasi ini secara teknis tidak melanggar ketentuan Google Manifest V3 yang melarang JavaScript eval. Honey menghindarinya dengan hard-coding operasi sebagai string dalam produk, bukan mengambilnya dari sumber jarak jauh. Manifest V3 secara spesifik melarang membangun interpreter untuk menjalankan perintah kompleks yang diambil dari sumber jarak jauh, tetapi Honey menghindarinya karena string sudah ada dalam ekstensi. Dugaan motivasinya adalah untuk menghindari deteksi dari ekstensi lain, terutama ad blocker yang mungkin memblokir fungsi Honey jika dijalankan secara langsung. Melalui interpreter aneh ini, Honey dapat menjalankan fungsi yang menghindari deteksi, meskipun Prime pribadi tidak dapat memahami alasan pasti implementasi ini.

Kesimpulan dan Refleksi tentang Kompleksitas Kode

Prime menyimpulkan bahwa aturan dinamis untuk stand down sangat kuat dan dirancang untuk dikontrol melalui JSON berdasarkan toko, penyedia, dan pengguna, terlepas dari apakah tujuannya curang atau tidak. Dia mengakui belum pernah melakukan reverse engineering atau melihat kode diminifikasi sebelumnya, dan menganggap ini sebagai rekayasa paling tidak biasa yang pernah dilihatnya - bahkan lebih kompleks dari basis kode 10 ribu baris dengan mesin state aneh yang pernah dia kerjakan. Prime berterima kasih kepada MegaLag yang membantunya dalam investigasi dan merekomendasikan penontonnya untuk menonton semua video MegaLag tentang topik ini. Dia juga meminta feedback tentang format konten baru ini dan mengundang penonton untuk menyaksikan streaming langsung di mana analisis ini terjadi.

Community Posts

View all posts