Sidik jari yang efisien melalui cache favicon browser







Situs Demo favicon - ikon .ico berukuran 16 * 16 atau 32 * 32 piksel kecil pada tab browser. Membantu Anda menavigasi ratusan tab. Twitter memiliki burung biru, Gmail memiliki simbol surat merah, Wikipedia memiliki huruf W.



Namun ternyata ikon ini mewakili kerentanan yang dapat digunakan untuk melakukan sidik jari - untuk mengidentifikasi pengguna bahkan melalui VPN dan mode penyamaran di browser ( lihat demo ).



Programmer Jerman Jonas Strehle di repositori Github menjelaskan metode untuk menginstal cookie super non-removable melalui favicon: β€œCookie super memberikan ID unik kepada pengunjung situs melalui favicon. Tidak seperti metode pelacakan tradisional, ID ini dipertahankan hampir selamanya dan tidak dapat dihapus oleh pengguna menggunakan metode sederhana. Metode pelacakan bekerja bahkan dalam mode penyamaran. Cookie Super tidak dihapus saat Anda mengosongkan cache, menutup browser, atau memulai ulang sistem Anda, menggunakan VPN atau pemblokir iklan. ”



Bagaimana sidik jari bekerja



Untuk menampilkan ikon, atribut berikut dimasukkan ke dalam kode halaman:



<link rel="icon" href="/favicon.ico" type="image/x-icon">
      
      





Favicon harus sangat mudah diakses melalui browser. Oleh karena itu, mereka di-cache dalam database lokal terpisah, yang disebut cache favicon (F-Cache), tempat URL, ID favicon, dan masa pakai disimpan.



Saat pengguna mengunjungi situs, browser memeriksa F-Cache lokal untuk entri yang berisi URL situs web aktif. Jika entri ditemukan, ikon dimuat dari cache. Jika tidak ada entri, browser mengirimkan permintaan GET untuk mengunduh favicon dari server.



Mekanisme ini memungkinkan server untuk belajar banyak tentang pengunjung. Dengan menggabungkan status dikirim dan gagal favicon untuk URL tertentu, klien diberi template unik (nomor identifikasi). Kemudian ID disimpan:



const N = 4;
const ROUTES = ["/a", "/b", "/c", "/d"];
const ID = generateNewID(); // -> 1010 β€’ (select unassigned decimal number, here ten: 10 -> 1010b in binary)
      
      





const vector = generateVectorFromID(ID); // -> ["/a", "/c"] β€’ (because [a, b, c, d] where [1, 0, 1, 0] is 1 -> a, c)
      
      





Setelah memuat ulang situs, ID ini dapat dipulihkan dari daftar permintaan jaringan yang dikirim oleh klien untuk favicon yang hilang - dan dengan demikian mengidentifikasi browser.



const visitedRoutes = [];
Webserver.onvisit = (route) => visitedRoutes.push(route);  // -> ["/b", "/d"]
Webserver.ondone = () => { const ID = getIDFromVector(visitedRoutes) }; // -> 10 β€’ (because "/a" and "/b" are missing -> 1010b)
      
      





Penulis meluncurkan situs web untuk mendemonstrasikan sidik jari menggunakan favicon. Kode sumber dan penjelasan rinci tentang mekanisme tersebut telah dipublikasikan .



Bagian terburuk dari kerentanan ini adalah betapa mudahnya untuk melewati metode tradisional yang digunakan orang untuk melindungi privasi mereka. Sidik jari menerobos mode "pribadi" Chrome, Safari, Edge, dan Firefox, kata Strehle. Pembersihan cache, VPN atau pemblokir iklan - tidak ada yang menghalangi favicon berbahaya.



Kesimpulan yang sama dicapai oleh para peneliti dari University of Illinois dalam karya ilmiah yang baru-baru ini diterbitkan "Tales of Favicons and Caches: Persistent Tracking in Modern Browsers"."Kami menemukan bahwa menggabungkan teknik pelacakan favicon kami dengan sidik jari melalui atribut browser yang tidak dapat diubah memungkinkan situs untuk memulihkan ID pelacakan 32-bit dalam dua detik," kata studi tersebut. - Karena kerentanan yang parah, kami mengusulkan untuk membuat perubahan pada cache browser favicon untuk mencegah bentuk pelacakan ini. Kami telah membagikan temuan kami dengan pengembang vendor browser yang saat ini sedang menjelajahi opsi mitigasi. ”



Sidik jari melalui favicons saat ini berfungsi di semua browser utama, termasuk browser seluler (tanda tambah):



Browser





Windows





MacOS





Linux





iOS





Android





Catatan
Chrome (v 87.0) + + + + + ?
Safari (v 14.0) ? + ? + ? ?
Edge (v 87.0) + + ? ? + ?
Firefox (v 85.0) + + ? ? ? Sidik jari lain dalam mode penyamaran
Berani (v 1.19.92) + + + ? ? ?


Tabel berikut menunjukkan waktu minimum yang dibutuhkan untuk melakukan serangan. Angka sebenarnya juga bergantung pada faktor tambahan seperti kecepatan koneksi internet, lokasi, kinerja perangkat keras, dan jenis browser.



Pengalihan

(N bit)
Jumlah klien yang dapat dibedakan Waktu perekaman Waktunya membaca Skala serangan
2 empat <300 md <300 md Satu pengguna dengan empat browser
3 8 <300 md ~ 300 md Perkiraan jumlah Kardashian
empat 16 <1 dtk ~ 1 d Sekelompok tetangga Anda
8 256 <1 dtk ~ 1 d Semua teman Facebook Anda
sepuluh 1024 <1.2 dtk ~ 1 d Desa yang sangat kecil
20 1.048.576 <1,8 dtk <1,5 dtk Kota kecil (San Jose)
24 16.777.216 <2,4 dtk <2 dtk Semua Belanda
32 4 294967 296 ~ 3 d <3 dtk Semua orang dengan akses internet
34 17179 869 184 ~ 4 d ~ 4 d 4



All Articles