
Halo semuanya!
Nama saya Vadim, dan saya adalah salah satu konsultan teknis dan, sekaligus, administrator sistem RosKomSvobody .
Tapi postingan ini bukan tentang saya. Ini akan menjadi cerita tentang situasi mencurigakan (dalam hal privasi dalam konteks ponsel) yang baru-baru ini kami temui.
Itu bisa dalam gaya "Aaaaaaaaa! Lihat, Kakak (Google) mengikuti kita," tetapi saya tetap akan mencoba melakukan beberapa jenis analisis dan mengajukan hipotesis yang masuk akal tentang mengapa apa yang terjadi bisa terjadi.
Saya minta maaf sebelumnya jika seseorang tidak menyukai format ala "majalah} {akep to zero". Tulis - Saya akan dikoreksi.
Jadi Salah satu pembaca kami mendekati kami, mengklaim bahwa ketika memasuki situs kami (yang, ironisnya, ubin teratas kampanye kami menentang pengenalan wajah - BanCam menggantung di atas), kamera depan diaktifkan.
Faktanya adalah bahwa ia adalah pemilik ponsel dari ponsel generasi baru tanpa "belenggu", di mana kamera depan ditempatkan di baki "keluar" yang terpisah. Yang sebenarnya, pergi ketika mengakses kamera.
Seperti yang mungkin Anda tebak, pikiran pertama saya adalah kecurigaan bahwa kami entah bagaimana secara ajaib, terlepas dari semua "mekanisme keamanan" yang saya bangun, masih diretas dan "dibangun."
Namun, penyelidikan mengungkapkan bahwa semuanya sesuai dengan situs kami.
Setelah melakukan penyelidikan tersebut dan mendiskusikan temuannya dalam obrolan teknis RosKomSvoboda, saya ingat bahwa saya sudah menemukan di beberapa forum di Internet bahwa Trojan "menyelinap" melalui jaringan spanduk (ketika membuka forum dari ponsel Android) Paket-apk (tampaknya, dengan harapan bahwa pengguna akan menginstalnya, berpikir bahwa ini adalah klien resmi forum ini).
Setelah memikirkan ide ini, saya menyarankan untuk memeriksa "pelacak" yang ada di daftar yang diizinkan (pembaca ini menggunakan Firefox dan addBlock uBlock diinstal di dalamnya).
Beberapa jam percobaan menunjukkan bahwa kamera berhenti bergerak jika Anda memblokir akses ke domain google.com
. Juga, di suatu tempat pada saat yang sama, pengguna ini mengatakan bahwa situasi ini juga direproduksi di situs web kod.ru
(sebelum itu kami bekerja dengan versi "hanya bersama kami").
Setelah masuk lebih dalam ke penggalian, saya menemukan bahwa permintaan ke google.com
tidak hanya memancing pelacak Google (alias "analytics"), tetapi bahkan "menanamkan" video YouTube pada halaman. Reproduksibilitas keluar kamera di kod.ru
juga termasuk dalam teori ini (ternyata, ada juga video dari YouTube pada halaman yang diuji).
Untuk mengkonfirmasi lebih lanjut teori ini, saya mencari posting blog acak ala "cara memasukkan video YouTube ke blog, instruksi video" dengan video bawaan, dan situasinya juga direproduksi di situ.
Jadi Bagus Saat ini, kami memiliki informasi seperti itu di tangan kami: kehadiran video YouTube bawaan di halaman memicu pemuatan beberapa skrip dari google.com
, dan itu, pada gilirannya, memicu keluarnya kamera.
Ok, gali lebih jauh.
Mengaduk-aduk alat debugging browser, saya menemukan bahwa aneh dan sangat dikaburkan (begitu banyak sehingga tidak ada deobfuscator yang saya coba dari hasil pencarian dapat menangani) dimuat dari www.google.com
(yaitu www
) dimuat, bahkan dengan nama dan itu dikaburkan (mengetahui Google, saya dapat berasumsi bahwa setelah beberapa saat skrip ini akan hilang, dan sebagai gantinya akan diletakkan skrip dengan nama yang berbeda (tapi sama-sama tidak dapat dibaca). Jadi, ini kodenya , untuk berjaga-jaga).
Melihat sekilas pada skrip tidak menunjukkan referensi ke kamera di sini, dan tidak ada waktu dan kesempatan untuk menyelami debugging lebih dalam dan menafsirkan apa yang dilakukannya di sana (meskipun jika ada pembaca yang ingin, Anda dapat melakukannya).
Kami mencoba masuk dari sisi lain:
Secara pribadi, saya memiliki telepon tanpa kamera keluar, jadi sangat mudah untuk menangkap daya tarik padanya sehingga saya tidak bisa. Tapi saya bisa menghubungkannya melalui USB dan membuat adb logcat | grep -C5 camer
adb logcat | grep -C5 camer
( grep
- karena kalau tidak, ada terlalu banyak sampah yang tidak relevan untuk setiap bersin, termasuk mengetuk layar dengan jari Anda atau memindahkan ponsel di ruang angkasa). Apa yang sebenarnya saya lakukan ...
Jadi, upaya nomor satu: Saya pergi ke situs yang diuji, dan ... tidak ada!
Pikiran itu merayap masuk, bahwa masalahnya tampaknya, bagaimanapun, di suatu tempat di sisi pengguna.
Sejalan dengan proses ini, kami membahas situasi dalam obrolan teknis RosKomSvobody yang disebutkan sebelumnya. Setelah beberapa waktu, salah satu peserta menerima pendapat bahwa, kata mereka, browser seluler itu licik: mereka tidak selalu meminta hak akses global ke kamera, dan jika tidak diberikan, dalam beberapa kasus mereka mungkin tidak bertanya!
Saya pergi ke pengaturan aplikasi dan melihat bahwa, ya, saya belum menetapkan izin untuk kamera untuk Firefox. Saya menyalakannya, periksa lagi, dan melihat selembar untuk beberapa "layar" dengan yang berikut:

Ya! Banding ke kamera, maka masih ada!
Selain itu, segera setelah baris dengan "dapatkan info perangkat" ada pembukaan eksplisit perangkat kamera:
12-12 17:10:14.734 751 6924 I QCamera : <HAL><INFO> int qcamera::QCamera2Factory::cameraDeviceOpen(int, struct hw_device_t **): 405: Open camera id 0 API version 256
Saya memeriksa hal yang sama dengan Chrome, dan semuanya direproduksi: jika hak atas kamera diambil, maka dalam log βdiam dombaβ, dan jika dikeluarkan - lembar yang sama dengan mengakses kamera muncul dengan tutup susu kunyit.
Jadi masalahnya adalah:
a) bukan lokal untuk pengguna,
b) tidak spesifik untuk browser.
Menariknya, selama semua acara ini, tidak ada peramban ini yang mencoba mengatakan sepatah kata pun tentang meminta izin untuk mengakses kamera dari salah satu situs yang berpartisipasi dalam pengujian (dan memang, dari YouTube dan google.com
juga).
Mengingat hal di atas, dua hipotesis muncul pada saya:
- Baik Kakak, bagaimanapun, mengawasi Anda, atau
- skrip mengerikan yang mengerikan itu pada kenyataannya memanggil beberapa bagian dari API Kamera di browser untuk sidik jari pengguna, tetapi tidak mengakses kamera secara langsung. Oleh karena itu, tidak ada permintaan untuk mengaksesnya (namun, jika Anda melihat video di awal artikel, Anda dapat melihat bagaimana LED berkedip antara membuka dan menutup kamera, yang membuat Anda berpikir).
Namun, peramban mematuhi logika di sini: "saat menginisialisasi API Kamera, jika tidak ada akses ke kamera, maka kami tidak melakukan apa pun (kami bahkan tidak memintanya sampai ada kebutuhan nyata), dan jika ada, kami menginisialisasi kamera dan memeriksa perangkat apa yang kami miliki di sana dan apa yang ada mereka dapat "(yang, tampaknya, perangkat" ditemukan ").
Vendor telepon pengguna, tampaknya, tidak secara khusus menyelidiki penemuan kruk perangkat lunak di atas kamera dan memecahkan masalah secara sederhana (yang ia hormati): ketika mengakses kamera, ia pergi. Saat Anda membuka perangkat dan bertukar data dengannya, dioda akan berkedip.
Secara total, ternyata masalahnya tidak begitu fatal seperti yang terlihat di awal, dan, semoga, tidak ada yang mengambil gambar (walaupun ini, bagaimanapun, masih "tidak akurat", karena kompetensi saya dalam mengetahui Kode sumber Android tidak cukup untuk menjamin dengan jelas dalam hal mana lembar panggilan ke kamera di logcat berbicara tentang gambar yang diambil, dan di mana - hanya tentang percakapan sekuler aplikasi dengan perangkat).
Namun demikian, fakta bahwa membuka halaman web apa pun yang akan ada iframe dengan video bawaan dari YouTube mengarah ke panggilan ke kamera (dan bahkan beberapa jenis negosiasi dengan perangkat) masih agak menyedihkan dalam konteks privasi. dan, menurut saya, masih layak untuk didiskusikan oleh komunitas.
Apa yang kamu pikirkan
PS Dalam bahasa Inggris, posting ini dipublikasikan di Medium .
UPD : terima kasih kepada habrachia berez dan ksil untuk paket koreksi pengejaan (jika tidak, ketika Anda membaca dan menulis ulang potongan teks yang berbeda, seperti biasa, "memperbaiki beberapa bug, membawa banyak yang lain")