1 poin oleh GN⁺ 2 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • LinkedIn mengirim permintaan URL chrome-extension:// di Chrome untuk memeriksa apakah ekstensi tertentu terpasang, dan item yang tidak terpasang tercatat sebagai error kegagalan permintaan di konsol alat pengembang
  • Menurut catatan browsergate.eu dan repositori pelacakan GitHub, pemindaian ini telah berlangsung setidaknya sejak 2017, dan daftar target bertambah dari 38 menjadi 6.278 per April 2026
  • LinkedIn sudah memiliki nama, pemberi kerja, jabatan, riwayat karier, dan lokasi pengguna, sehingga pemindaian ekstensi bukan sekadar sidik jari perangkat anonim, melainkan cara menambahkan daftar perangkat lunak ke identitas profesional yang telah terverifikasi
  • Pemindaian ini merupakan bagian dari sistem pengambilan sidik jari perangkat APFC milik LinkedIn, yang membangun profil bersama 48 karakteristik browser dan perangkat lain seperti canvas fingerprint, WebGL, perilaku audio, font, informasi layar, memori perangkat, dan IP lokal WebRTC
  • Hasil deteksi dikemas sebagai AedEvent dan SpectroscopyEvent, lalu dienkripsi dengan kunci publik RSA sebelum dikirim ke endpoint li/track milik LinkedIn; browsergate.eu menyatakan metode ini melanggar EU Digital Markets Act dan investigasi pidana telah dibuka

Daftar perangkat lunak yang ditempelkan ke profil identitas pribadi

  • Pengambilan sidik jari pada umumnya dibahas sebagai cara untuk mengenali kembali browser pengunjung anonim tanpa cookie
  • Dalam kasus itu, profil dapat diidentifikasi di tingkat perangkat, tetapi tidak selalu terhubung ke identitas pribadi
  • LinkedIn tidak hanya berurusan dengan pengunjung anonim; platform ini sudah memiliki nama, pemberi kerja, jabatan, riwayat karier, kisaran gaji, jaringan profesional, dan lokasi pengguna
  • Pemindaian ekstensi LinkedIn bukan membuat profil perangkat untuk pengunjung yang tidak dikenal, melainkan menambahkan daftar perangkat lunak yang rinci ke identitas profesional yang sudah terverifikasi
  • Daftar pemindaian LinkedIn mencakup ratusan ekstensi terkait pencarian kerja, sehingga dapat digunakan untuk mengetahui apakah seseorang diam-diam sedang mencari pekerjaan sebelum memberi tahu pemberi kerjanya
  • Ekstensi yang berkaitan dengan konten politik, praktik keagamaan, bantuan disabilitas, dan neurodiversitas juga masuk dalam daftar, sehingga perangkat lunak browser dapat menjadi dasar untuk menyimpulkan kehidupan pribadi seseorang
  • Karena LinkedIn mengetahui tempat kerja pengguna, hasil pemindaian seorang karyawan dapat membantu mengungkap alat internal, produk keamanan, langganan pesaing, dan alur kerja organisasi tersebut, bukan hanya informasi tentang individu
  • Dalam privacy policy LinkedIn, pemindaian ekstensi tidak diungkapkan, dan pengguna tidak diminta persetujuan maupun diberi tahu

Masalah yang melampaui LinkedIn

  • Penindakan dan preseden

    • LinkedIn menggunakan daftar ekstensi untuk menarik kesimpulan tentang pengguna yang memasang ekstensi tertentu dan mengambil tindakan penegakan terhadap mereka
    • Menurut browsergate, Milinda Lakkam mengonfirmasi di bawah sumpah bahwa “LinkedIn took action against users who had specific extensions installed.”
    • Pengguna tidak punya cara untuk mengetahui bahwa perangkat lunak mereka sedang didaftarkan, bahwa daftar itu dipakai merugikan mereka, dan bahwa praktik tersebut tidak muncul dalam kebijakan privasi LinkedIn
  • Ekosistem pengambilan sidik jari

    • Pengambilan sidik jari browser biasanya dibahas sebagai masalah satu situs yang mengumpulkan sinyal, membangun profil, dan mengenali pengguna di berbagai sesi
    • Pemindaian ekstensi LinkedIn menghasilkan daftar perangkat lunak yang rinci dan terhubung ke identitas yang telah terverifikasi, dan profil itu tidak harus tetap berada di dalam LinkedIn
    • Jika LinkedIn membeli dataset perilaku pihak ketiga dan sidik jari pengguna ada di dalamnya, LinkedIn dapat menambahkannya ke informasi pengguna yang sudah dimilikinya
    • Perilaku penelusuran di luar LinkedIn, riwayat pembelian, pola lokasi, dan minat dapat menjadi bagian dari profil yang dikaitkan dengan akun LinkedIn
    • Sebaliknya, LinkedIn mengintegrasikan skrip pihak ketiga, termasuk reCAPTCHA enterprise dari Google yang dimuat pada setiap kunjungan halaman, sehingga data mengalir lintas platform
    • Sidik jari yang ditautkan LinkedIn ke identitas terverifikasi dapat memengaruhi sistem iklan dan pelacakan di luar linkedin.com
    • Sekali masuk ke LinkedIn, sidik jari yang dibuat pada kunjungan itu dapat mengikuti pengguna di seluruh web
  • Kelompok pengguna yang benar-benar terancam

    • Bagi jurnalis, pengacara, peneliti, dan penyelidik hak asasi manusia, profil LinkedIn dapat menjadi salah satu dokumen identitas terverifikasi paling rinci di internet
    • Profil LinkedIn adalah informasi yang sengaja dibangun dengan nama asli untuk tujuan profesional
    • Pemindaian ekstensi menautkan riwayat pemasangan alat privasi, ekstensi keamanan, alat investigasi, dan aplikasi produktivitas ke profil tersebut tanpa sepengetahuan pengguna
    • Jika menggunakan LinkedIn dan Chrome, pengumpulan ini sedang terjadi sekarang

APFC dan pengambilan sidik jari JavaScript tingkat lanjut

  • Pemindaian ekstensi bukan fitur yang berdiri sendiri, melainkan bagian dari sistem pengambilan sidik jari perangkat yang lebih luas yang secara internal disebut LinkedIn sebagai APFC
  • APFC adalah singkatan dari Anti-fraud Platform Features Collection, dan secara internal juga disebut DNA, Device Network Analysis
  • LinkedIn lebih terbuka soal metode pelacakan ini dibanding pemindaian ekstensi, tetapi metode seperti ini umum ditemukan di situs web komersial
  • Sistem ini mengumpulkan 48 karakteristik browser dan perangkat pada setiap kunjungan
  • Yang dikumpulkan mencakup canvas fingerprint, renderer dan parameter WebGL, perilaku pemrosesan audio, font yang terpasang, resolusi layar, rasio piksel, hardware concurrency, memori perangkat, level baterai, alamat IP lokal melalui WebRTC, zona waktu, bahasa, dan lainnya
  • Pemindaian ekstensi adalah salah satu input yang membentuk profil yang lebih besar

Apa yang terjadi secara teknis

  • Kode LinkedIn mengirim permintaan fetch() ke URL chrome-extension:// untuk mencari file tertentu yang dipasang di Chrome
  • Jika ekstensi tidak terpasang, Chrome memblokir permintaan tersebut dan mencatat kegagalannya
  • Jika ekstensi terpasang, permintaan akan berhasil secara diam-diam dan LinkedIn mencatatnya
  • Dalam lingkungan yang terverifikasi, pemindaian berjalan sekitar 15 menit dan mencari lebih dari 6.000 ekstensi
  • Pengguna dapat melihatnya sendiri dengan membuka LinkedIn di Chrome lalu membuka tab konsol di alat pengembang
  • Error merah di konsol masing-masing merepresentasikan bagian dari sidik jari pengguna

Struktur kode dan cara deteksi

  • LinkedIn menjalankan kode JavaScript di browser semua pengunjung Chrome, dan sistem yang menangani pemindaian ekstensi ada di dalamnya
  • File tersebut adalah file JavaScript yang diminifikasi dan sebagian diobfuscasi, berukuran sekitar 1,6MB
  • Minifikasi pada umumnya adalah pemadatan kode untuk performa, sedangkan obfuscation adalah langkah terpisah yang membuat kode lebih sulit dibaca dan dipahami
  • LinkedIn mengobfuscasi modul persis yang berisi sistem pemindaian ekstensi, lalu menyembunyikannya di dalam file JavaScript yang panjangnya ribuan baris
  • Di dalam file itu terdapat array hardcoded berisi ID ekstensi browser
  • Per Februari 2026, array ini berisi 6.278 item
  • Setiap item memiliki dua field: ID ekstensi Chrome Web Store dan path file tertentu di dalam paket ekstensi itu
  • Path file tersebut bukan nilai acak, karena ekstensi Chrome dapat mengekspos file internal ke halaman web melalui field web_accessible_resources
  • Jika ekstensi terpasang dan menyatakan file tertentu dapat diakses, maka permintaan fetch() ke chrome-extension://{id}/{file} akan berhasil
  • Jika tidak terpasang, Chrome akan memblokir permintaan itu
  • LinkedIn mengidentifikasi file tertentu yang dapat diakses untuk masing-masing dari 6.278 ekstensi dalam daftar dan mendeteksinya secara langsung
  • Daftar ini terus dipelihara dan diperluas, dan tampaknya ada alat yang merayapi paket ekstensi Chrome Web Store serta mem-parsing web accessible resources dari tiap manifest untuk menambahkan target deteksi

Dua mode pemindaian dan Spectroscopy

  • Pemindaian ekstensi berjalan dalam dua mode
  • Mode pertama menggunakan Promise.allSettled() untuk mengirim semua permintaan sekaligus, sehingga seluruh ekstensi dideteksi secara paralel
  • Mode kedua mengirim permintaan secara berurutan dengan jeda yang dapat dikonfigurasi di antara tiap permintaan, menyebarkan aktivitas jaringan sepanjang waktu agar kurang terlihat oleh alat pemantauan
  • LinkedIn dapat beralih di antara kedua mode itu menggunakan feature flag internal
  • Pemindaian juga dapat ditunda dengan requestIdleCallback, sehingga dijalankan saat browser sedang idle dan pengguna tidak merasakan dampak performa
  • Sistem deteksi kedua bernama Spectroscopy bekerja secara independen dari daftar ekstensi
  • Spectroscopy menelusuri seluruh pohon DOM dan memeriksa referensi URL chrome-extension:// di semua node teks dan atribut elemen
  • Cara ini dapat menangkap ekstensi yang memodifikasi halaman meskipun tidak ada dalam daftar hardcoded LinkedIn
  • Jika kedua sistem digabungkan, hasilnya mencakup baik ekstensi yang terpasang maupun ekstensi yang benar-benar berinteraksi dengan halaman

Pengiriman telemetri

  • Kedua sistem deteksi mengirim hasil ke pipeline telemetri yang sama
  • ID ekstensi yang terdeteksi dikemas sebagai objek AedEvent dan SpectroscopyEvent
  • Objek-objek ini dienkripsi dengan kunci publik RSA lalu dikirim ke endpoint li/track milik LinkedIn
  • Sidik jari yang telah dienkripsi kemudian disisipkan ke header HTTP pada semua permintaan API yang terjadi selama sesi berikutnya
  • LinkedIn menerima nilai ini bersama semua tindakan yang diambil pengguna selama kunjungan

Konteks hukum

  • browsergate.eu merangkum logika hukum terkait secara rinci
  • Pada 2024, Microsoft ditetapkan sebagai gatekeeper berdasarkan EU Digital Markets Act, dan LinkedIn adalah salah satu produk yang tercakup regulasi tersebut
  • DMA mewajibkan gatekeeper mengizinkan alat pihak ketiga mengakses data pengguna, dan melarang tindakan terhadap pengguna alat tersebut
  • browsergate.eu menilai bahwa LinkedIn secara sistematis menindak pengguna alat pihak ketiga dan memakai pemindaian ekstensi tersembunyi untuk mengidentifikasi mereka, sehingga melanggar ketentuan tersebut
  • Apakah klaim ini akan diterima secara hukum adalah masalah penilaian hukum
  • Cybercrime Unit dari Bavarian Central Cybercrime Prosecution Office in Bamberg mengonfirmasi bahwa investigasi pidana telah dibuka
  • Lembaga ini menangani kasus kejahatan siber berat lintas yurisdiksi
  • browsergate.eu menyatakan telah mengonfirmasi investigasi pidana dan memberikan nomor perkara, serta sedang menyiapkan publikasi dokumen pengadilan lengkap

1 komentar

 
GN⁺ 2 jam lalu
Opini Hacker News
  • “Bahwa penyelidikan kriminal telah dimulai sudah tidak diragukan lagi.” Bagus. Perusahaan seperti ini memang pantas dilempari batu, dan harus siap menerima yang lebih buruk dari itu

    • Yang benar-benar perlu dilakukan adalah mengungkap ide siapa ini sejak awal
      Jika ada tim yang berkomitmen untuk tidak merusak situs web sampai di bawah standar rata-rata, mereka seharusnya bisa menyaring pelamar berdasarkan daftar tokoh utama perusak layanan yang sudah diketahui
      Mungkin sudah terlambat untuk memotongnya dari akarnya, tetapi tidak ada alasan membiarkan orang-orang seperti ini terus bergerak tanpa batasan dan makin membesar
  • “Lalu saya melihat pembicaraan soal browsergate meledak di mastodon dan berpikir ‘masa iya’, ternyata gugatan hukumnya memang sedang disiapkan.” - un-nf
    Farrell v LinkedIn Corporation 4:26-cv-02953-KAW (N.D. Cal. Apr. 6, 2026)
    https://ia601503.us.archive.org/33/items/gov.uscourts.cand.4...

  • Kenapa Chrome saya memberi tahu situs web mana pun daftar ekstensi yang saya pasang?

    • Tepatnya bukan memberitahukannya begitu saja. Situs membuat daftar ID ekstensi dan daftar file yang diketahui ada di dalam ekstensi tersebut, lalu menelusuri setiap pasangan dan mencoba memuat file itu
      Jika tidak terjadi error, maka mereka tahu ekstensi itu terpasang. Cara ini cerdik dan merepotkan, tetapi bisa melewati mekanisme keamanan yang dibuat untuk mencegah hal seperti ini
      Saya membaca bahwa alasannya adalah untuk memblokir pengguna ekstensi scraper yang diketahui dipakai untuk mengakali syarat layanan, tetapi saya tetap belum sepenuhnya yakin
    • Bagian yang relevan di tulisan aslinya adalah ini:
      “Ekstensi Chrome dapat mengekspos file internal ke halaman web melalui field web_accessible_resources di manifest.json. Jika ekstensi terpasang dan resource tersebut diekspos, request fetch() ke chrome-extension://{id}/{file} akan berhasil. Jika tidak terpasang, Chrome memblokir request dan promise akan di-reject.
      LinkedIn menguji semua ekstensi dalam daftar dengan cara ini.”
    • Pertanyaan yang sama juga bisa diajukan tentang berbagai kesalahan keamanan mengerikan yang sudah dilakukan browser web selama puluhan tahun
    • Jadi informasi itu memang diberikan ke situs web? Saya kira ini semacam hack baru yang mendeteksi sendiri lewat perilaku yang hanya muncul jika ekstensi tertentu terpasang
      Tapi untuk melakukan itu pada 6.300 ekstensi rasanya terlalu banyak kerja. Apakah ada layanan yang menyediakan ini?
    • Brave secara eksplisit memblokir ini
  • Teman-teman, jika di tempat kerja kalian diminta mengimplementasikan hal seperti ini, apa yang akan kalian pilih: menolak dan bertahan sampai kehilangan pekerjaan, atau menurut dan mempertahankan pekerjaan?
    Sebagai praktisi, di mana batas antara telemetri dan pengawasan seharusnya ditarik?

    • Saya memilih untuk tidak bekerja di LinkedIn, Meta, atau tempat yang didanai Saudi maupun Israel. Mencari kerja memang jadi sedikit lebih sulit, tapi tidur malam lebih nyenyak
    • Ada juga pilihan ketiga. Bilang akan mengerjakannya, lalu sengaja gagal atau mengulur-ulur tanpa akhir. Sulit membuktikan bahwa seseorang sengaja merusak pekerjaan
      Tapi kalau sudah main permainan seperti itu, mungkin memang sudah waktunya cari kerja baru ;)
    • Menurut saya, memberi tahu dunia secara anonim tentang apa yang akan terjadi juga sebuah pilihan. Dengan begitu pekerjaan tetap aman, tetapi orang-orang setidaknya jadi tahu
      Namun, kalau yang tahu fakta itu cuma sekitar tiga orang, identitasmu bisa langsung ketahuan
    • Saya juga memikirkan hal yang sama. Mungkin ini dibuat oleh orang-orang yang tidak mudah mencari pekerjaan lain, dan butuh pekerjaan itu karena asuransi kesehatan atau alasan finansial. Bisa jadi mereka hidup dari gaji ke gaji
      Bisa juga diperintahkan oleh manajer yang kondisinya serupa, sementara atasan di atasnya hanya peduli peningkatan pendapatan dan tidak peduli caranya. Meski begitu, rasanya aneh kalau tidak ada seorang pun yang berkata, “Sebenarnya kita sedang melakukan apa?”
      Untuk menjawab pertanyaannya, tentu saya akan menolak. Saat ini saya cukup beruntung bisa mengambil keputusan seperti itu tanpa konsekuensi besar. Tapi siapa yang akan datang ke HN dan berkata, “Ya, saya memang tidak punya moral!”? Bahkan dengan akun burner pun belum tentu bisa dipastikan nyata
    • Sejujurnya, kalau saya mungkin akan mengimplementasikannya. Menurut saya, kalau semua situs web bisa mengetahui ekstensi yang terpasang, itu tanggung jawab Chrome. Lagipula ini juga tidak benar-benar merugikan pengguna
  • Bagian paling relevan yang saya temukan di tulisan aslinya adalah ini:
    “Ekstensi Chrome dapat mengekspos file internal ke halaman web melalui field web_accessible_resources di manifest.json. Jika ekstensi terpasang dan resource tersebut diekspos, request fetch() ke chrome-extension://{id}/{file} akan berhasil. Jika tidak terpasang, Chrome memblokir request dan promise akan di-reject.
    LinkedIn menguji semua ekstensi dalam daftar dengan cara ini.”

    • Kalau begitu, apakah mungkin membuat ekstensi palsu yang seolah terpasang yang mengembalikan jawaban ya/tidak secara acak untuk query seperti ini? File apa saja yang diuji oleh LinkedIn atau situs pelacak sidik jari lainnya tampaknya cukup jelas, dan seperti kata penulis postingan asli, bisa diamati
      Akan menarik juga melihat situs lain mana yang menguji file-file yang sama; apakah sudah ada yang menelitinya?
    • Kode yang datang dari situs seharusnya tidak diberi akses ke situ, apalagi itu juga bukan kode yang datang dari ekstensi
  • Ini praktik yang cukup standar dalam pelacakan sidik jari perangkat. LinkedIn kemungkinan memakai ini untuk melindungi platform dari scraping dan semacamnya, dan daftar ekstensi punya entropi yang cukup untuk mengidentifikasi pengguna serta menjadi komponen sidik jari yang berguna

    • Sudah cukup mudah membuat dan memakai ekstensi yang membantu scraping sekaligus, jadi sebenarnya tidak banyak yang bisa dihentikan LinkedIn
      Saya sudah melihat orang membuat dan memasang ekstensi Chrome lokal hanya dalam beberapa hari, lalu AI disuntikkan ke developer tools agar bisa men-scrape hampir situs web apa pun. Itu pun sudah beberapa bulan lalu
      Menurut saya sekarang tidak ada cara mudah untuk mempertahankan diri dari itu. Tinggal soal waktu sebelum langkah-langkah pemrograman defensif seperti ini menjadi tidak berguna
  • Apakah ini halusinasi? Kutipan ini tidak bisa saya temukan di tempat lain
    “Menurut browsergate, Milinda Lakkam mengonfirmasi di bawah sumpah bahwa ‘LinkedIn mengambil tindakan terhadap pengguna yang memasang ekstensi tertentu.’”

    • Kurang lebih benar, tetapi itu bukan kutipan persisnya. Saya tidak menelusuri lebih jauh dari tautan ini:
      https://browsergate.eu/the-evidence-pack/
      Sistem LinkedIn “mungkin telah mengambil tindakan terhadap pengguna LinkedIn yang memasang [XXXXXX].”
      Edit: bagus! Saya baru sadar teks yang diindent sekarang terbungkus baris juga di browser mobile. Setidaknya begitu di ffm. Penasaran kapan itu diperbaiki
  • Secara adil, kebijakan privasi LinkedIn memang menyatakan bahwa mereka mengumpulkan informasi ini. Lihat https://www.linkedin.com/legal/privacy-policy?ref=cms.hondas...
    “1.5 Perangkat dan lokasi
    Saat Anda mengunjungi atau meninggalkan layanan kami (termasuk beberapa plugin serta cookie kami atau teknologi serupa di situs pihak lain), kami menerima URL dari situs yang Anda datangi dan situs yang Anda tuju berikut waktu kunjungan Anda. Kami juga menerima informasi tentang jaringan dan perangkat Anda (misalnya alamat IP, server proxy, sistem operasi, browser web dan add-on, pengenal dan fitur perangkat, ID cookie dan/atau ISP, atau operator seluler Anda). Jika Anda menggunakan layanan kami dari perangkat seluler, perangkat tersebut akan mengirimkan data lokasi kepada kami berdasarkan pengaturan ponsel Anda. Kami akan meminta persetujuan sebelum menggunakan GPS atau alat lain untuk mengidentifikasi lokasi akurat Anda.”
    Bagian yang relevan di sini adalah “termasuk beberapa plugin

  • Saya sudah menghapus akun LinkedIn, dan hidup jadi lebih baik

    • Itu omongan yang mudah kalau Anda sedang punya pekerjaan. Mencari kerja tanpa akun LinkedIn tidak sesederhana itu