Cara Meretas Firefox untuk Mengatasi Masalah Tidak Didukungnya WebUSB
(github.com/ArcaneNibble)- Proof-of-concept ini menunjukkan bahwa halaman web dapat berkomunikasi dengan perangkat USB tertentu tanpa WebUSB, dengan membuat Raspberry Pi Pico bertindak seperti kunci keamanan U2F dan memanfaatkan dukungan kunci keamanan yang sudah ada di browser
- Pico tidak menjalankan fungsi keamanan sungguhan; ia menyembunyikan data arbitrer di key handle dan area tanda tangan ECDSA pada pesan
U2F_AUTHENTICATEuntuk mengontrol LED dan membaca status pinGP22 - U2F key handle dirancang sebagai blob data opak milik dongle keamanan; fitur yang memungkinkan dongle murah dengan memori terbatas menangani pendaftaran banyak situs ini disalahgunakan untuk menyembunyikan data
- Cara ini bukan kerentanan untuk mengakses sembarang perangkat USB, dan hanya bekerja pada perangkat yang sengaja melanggar aturan, tetapi masalah model keamanan USB—di mana perangkat USB berbahaya dapat bertindak seperti keyboard atau mouse—tetap ada
- Pokok bahasannya meluas dari sekadar apakah Firefox mendukung WebUSB menjadi bagaimana membangun platform komputasi yang sehat dan ekosistem yang dapat dipahami serta dikendalikan oleh pengembang maupun pengguna
Demo mengakses perangkat USB tanpa WebUSB
- Ini adalah proof-of-concept yang menunjukkan cara halaman web dapat berkomunikasi dengan perangkat USB tanpa perdebatan politis terkait WebUSB maupun kebutuhan persetujuan pengguna
- Demo cepat dijalankan dengan mengunggah
u2f-hax.uf2ke Raspberry Pi Pico versi RP2040, lalu membukaindex.htmldari localhost atau secure context lain - Tombol
On!danOff!pada halaman akan menyalakan/mematikan LED Pico - Status pin
GP22diperbarui secara berkala di halaman, dan dapat diuji dengan menghubungkannya singkat ke pad GND di sebelahnya menggunakan kabel atau logam
Cara kerja: menyamar sebagai kunci keamanan U2F
- Pico diemulasikan sebagai dongle U2F, yaitu kunci keamanan fisik untuk autentikasi dua faktor
- Alih-alih menjalankan fungsi keamanan sungguhan, ia menyembunyikan data arbitrer di dalam pesan
U2F_AUTHENTICATE- Data dimasukkan ke key handle dan area tanda tangan
- Jika key handle diawali dengan
0xfeedface, Pico langsung menganggap kehadiran pengguna telah terverifikasi dan mengembalikan data
- Dari sudut pandang browser, ini tampak seperti penggunaan fitur yang sudah ada untuk berinteraksi dengan kunci keamanan
Mengapa U2F key handle dapat disalahgunakan
- Key handle pada U2F secara konseptual adalah blob data opak yang dimiliki dongle keamanan
- Alur umumnya adalah sebagai berikut
- Sebagai hasil pendaftaran, dongle mengembalikan key handle
- Relying party menyimpannya apa adanya
- Saat autentikasi, nilai yang sama dikirim kembali ke dongle keamanan
- Fitur ini terkait dengan desain yang memungkinkan dongle murah dengan memori terbatas menangani pendaftaran di banyak situs web
- Dongle menyimpan kunci enkripsi master yang unik secara internal
- Saat pendaftaran baru, ia membuat pasangan kunci publik/privat dan mengembalikan kunci publik
- Nilai kunci privat yang dienkripsi dengan kunci master dikembalikan sebagai key handle
- Saat autentikasi, key handle yang diterima didekripsi dengan kunci master untuk menggunakan kunci privat
- Agar algoritme internal tidak ditentukan secara spesifik, key handle diperlakukan sebagai opak, dan sifat inilah yang digunakan untuk menyembunyikan data arbitrer
Data yang dikembalikan dikemas seperti tanda tangan ECDSA
- Untuk mengirim data kembali, data arbitrer disembunyikan seolah-olah merupakan tanda tangan ECDSA
- Tanda tangan ECDSA adalah tuple dua angka
(r, s), dan tiap angka dihitung terhadapn, yaitu order dari base point kurva eliptik - Angka-angka yang berada dalam rentang order base point secp256r1 dikemas dengan ASN.1
- Dalam beberapa kasus, tanda tangan ECDSA yang benar-benar dihitung dengan valid dapat dibedakan, tetapi komponen selain relying party tidak punya alasan kuat untuk melakukan pemeriksaan selain validasi dasar
- Ada perbedaan perilaku antar-browser
- Chrome tampaknya memeriksa apakah angka tanda tangan berada dalam rentang
0hinggan - Firefox bahkan tidak melakukan pemeriksaan rentang tersebut
- Chrome tampaknya memeriksa apakah angka tanda tangan berada dalam rentang
- Agar lolos pemeriksaan dasar Chrome secara andal, byte pertama dari setiap angka sengaja “dibuang” menjadi
0x7f- Dengan begitu, angka selalu positif dan lebih kecil dari
n - Stack perangkat lunak hingga JavaScript browser meneruskan angka yang “cukup valid” ini apa adanya
- Dengan begitu, angka selalu positif dan lebih kecil dari
Apakah ini kerentanan keamanan dan model keamanan USB
- Teknik ini bukan kerentanan untuk mengakses sembarang perangkat USB
- Ini hanya bekerja pada perangkat yang sengaja melanggar aturan, dan pada dasarnya merupakan perangkat yang sengaja dibuat rentan
- Namun, pada kebanyakan platform, model keamanan di sekitar perangkat USB umumnya masih patut dipertanyakan
- Jika perangkat USB berbahaya dicolokkan, ia dapat melakukan hal-hal yang dapat dilakukan pengguna melalui perangkat seperti keyboard atau mouse
- Jangan menghubungkan perangkat tak dikenal secara sembarangan ke komputer, ponsel, dan sebagainya
Mempertanyakan platform dan ekosistem
- Tujuan proof-of-concept ini bukan sekadar “karena bisa” secara pribadi, melainkan untuk menyoroti kondisi platform komputasi saat ini
- Dari sudut pandang pembuat widget, mereka ingin pengguna akhir dapat memakai perangkat baru semudah dan seminim mungkin rasa sakitnya
- Dalam ekosistem komputer dan widget saat ini, ada ketidaksesuaian antara apa yang secara intuitif diharapkan pengguna mungkin dilakukan dan apa yang sebenarnya mungkin dilakukan
- “Kunci keamanan” diharapkan tampak seperti produk satu tujuan yang dikemas rapi, tetapi kenyataannya ia dapat menjalankan kode arbitrer, tampil dalam bentuk apa pun, dan melakukan tindakan arbitrer
- USB Rubber Ducky dan O.MG Cable juga merupakan contoh yang menyentuh masalah ini
- Sifat “Universal” pada USB memiliki kelebihan sekaligus kekurangan
- Baik manusia maupun komputer tidak memiliki cara yang baik dan andal untuk membedakan dengan mudah apakah perangkat USB bertentangan dengan kepentingan pengguna, membantu pengguna, atau merupakan hasil dari kekuatan yang lebih besar dan perilaku emergen
- Web adalah cara termudah untuk mengirimkan perangkat lunak yang akan dijalankan di komputer orang lain
- Pengembang semakin tidak perlu mempelajari detail semua platform target, tetapi pada saat yang sama juga semakin sedikit mempelajari kebiasaan dan ekspektasi masing-masing platform
- Diskusi seharusnya bergerak melampaui “mengapa Firefox tidak mengimplementasikan WebUSB” atau “apakah Chrome akan semakin dominan”, menuju upaya sengaja merawat platform yang sehat untuk komputasi secara keseluruhan, termasuk desktop, laptop, tablet, ponsel, IoT, dan smart home
1 komentar
Komentar Hacker News
Firefox tidak mendukung kemampuan untuk berkomunikasi dengan perangkat USB sembarang, tetapi Chrome punya WebUSB untuk itu
Namun Firefox juga mendukung komunikasi kunci keamanan U2F melalui USB
Proyek ini adalah upaya membuat mikrokontroler berpura-pura menjadi kunci keamanan U2F, agar Firefox bisa berkomunikasi dengan mikrokontroler melalui USB
Dengan JavaScript Credentials API(https://developer.mozilla.org/en-US/docs/Web/API/Credential_...) dan sedikit trik, data dikirim dan respons diterima
Meski begitu, ini bisa dipakai untuk membuat perangkat kustom yang dapat digunakan halaman web tanpa prompt persetujuan
Mengustomisasi keyboard dengan firmware QMK/Via lewat WebUSB hampir seperti mimpi buruk
Agar browser bisa berkomunikasi dengan firmware, pada dasarnya satu perangkat
/dev/hidrawharus dibuat dapat dibaca oleh seluruh dunia, yang seolah mengundang segala macam aksi keyloggingCara pakainya terasa sangat tidak nyaman, dan semua alat kustomisasi offline juga berbasis Electron, jadi keuntungannya tidak besar
Solusi alternatif yang paling masuk akal adalah membuat tata letak keyboard yang diinginkan sebagai template JSON di situs web, mengunduh JSON hasilnya, lalu mem-flash firmware ke keyboard dengan alat flashing yang memakai hak sudo
Tetap saja, akan bagus kalau ada cara yang terasa lebih aman
main()yang sedang berjalan bisa diubahKeyboard sepertinya juga bisa dibuat serupa
Namun file system perlu memunculkan error jika JSON yang ditulis tidak valid, dan properti keamanan bisa diberikan pada file system teremulasi agar hanya administrator yang bisa menulis
Tidak perlu sudo, cukup setujui prompt izin saat mengunduh atau menyalin konfigurasi baru ke flash drive virtual
Setidaknya Caps Lock tampaknya juga bisa diatur dari JavaScript, sehingga praktis menjadi bus komunikasi selebar 1 bit
Dengan alat OS biasa, hingga 3 bit mungkin dilakukan
Inti model izinnya adalah keluarga browser memediasi akses hardware
Tentu saja agar browser bisa melakukan itu, sejak awal ia harus diberi izin akses hardware
Jika tidak percaya browser sebagai pengelola lapisan abstraksi hardware, itu bisa dimengerti, tetapi model yang diharapkan Via memang seperti itu
Saya tidak tahu mengapa ini terasa lebih “tidak nyaman” daripada memberi browser izin kamera, mikrofon, atau membaca penyimpanan
Bahkan di Chromebook perusahaan yang terkunci, saya bisa membuka https://usevia.app dan mengutak-atik keyboard QMK tanpa masalah, dan tentu saja di perangkat ini saya sama sekali tidak bisa menyentuh node
/devQMK sepenuhnya memakai flashing manual
Meski begitu, saya terkejut karena mengustomisasi layout, layer, dan pencahayaan lewat kode ternyata lebih mudah dari dugaan, terutama berkat dukungan komunitas
Tidak senyaman Via, tetapi tetap ada editor keymap grafis, bisa mengompilasi firmware, dan jauh tidak terlalu bongsor
Pengalaman saya bagus di board Keeb.io
Alur komentar ini menarik karena bercampur antara orang-orang yang mengatakan betapa bagusnya pengguna WebUSB, dan orang-orang yang tidak menggunakannya yang tidak paham mengapa itu diperlukan
Secara pribadi, menurut saya ini sangat bagus
Sebagian besar utilitas WebUSB yang saya pakai juga tersedia sebagai aplikasi yang bisa diinstal langsung, tetapi karena saya sangat jarang memakainya, versi web jauh lebih mudah daripada proses menginstal, memperbarui, lalu menjalankan aplikasi
Berkurangnya satu aplikasi yang harus diinstal juga merupakan kelebihan
Saya kira ini akan populer di kalangan orang yang lelah harus menginstal aplikasi untuk setiap benda
Jadi ini pedang bermata dua
Kenyamanan dan keamanan tidak terlalu cocok
Memang berguna dan mudah, tetapi juga terlalu ideal untuk lahirnya celah keamanan
Pembengkakan web harus dihentikan
Browser tidak boleh menjadi wastafel serbaguna yang memuat segala hal yang diinginkan siapa pun di industri teknologi
Menginstal aplikasi native juga bukan hal yang begitu sulit
Secara ketat itu bukan USB melainkan HID, tetapi idenya mirip
Sedikit melenceng dari topik, tetapi sebagian besar alur diskusi ini tampaknya lebih membahas WebUSB secara umum daripada tulisan aslinya
Tentu saja, hack di tulisan asli itu sendiri cukup keren
Di satu sisi, WebUSB memang sangat dibutuhkan, tetapi pada saat yang sama saya benar-benar tidak ingin WebUSB diberikan kepada pengguna umum
Pada praktiknya, popup persetujuan tidak efektif, dan orang-orang menyetujui apa saja tanpa sadar
Mereka bilang “saya tidak menekan apa-apa”, tetapi ujung-ujungnya kita harus menyingkirkan 50 notifikasi push spam dan menghapus izin push dari belasan situs “berita”
Sejujurnya, saya cukup menyukai model izin ala Internet Explorer sampai batas tertentu
Yaitu cara di mana untuk mengaktifkan fitur tertentu, situs harus ditandai sebagai “tepercaya”
Sulit ditemukan, butuh sedikit waktu, agak membingungkan, dan menampilkan ikon peringatan besar yang cukup menakutkan di popup modal bergaya sistem
Jika API berbahaya seperti WebUSB dan WebBluetooth mengharuskan situs ditandai sebagai “tepercaya”, akan jauh lebih sedikit orang yang mengaktifkannya secara tidak sengaja
Pengalaman penggunanya masih lebih baik daripada memasang aplikasi native, dan sandboxing juga didapat sebagai bonus, jadi kompromi itu tampaknya sepadan
Pengguna lansia rata-rata sama sekali tidak tahu apa itu notifikasi web
Seiring waktu, mereka tanpa sengaja mengaktifkan notifikasi dari situs web mencurigakan, lalu benar-benar percaya pada notifikasi spam web yang masuk ke ponsel seperti “HELLO YOUR PHONE HAS VIRUS DOWNLOAD "CLEANER APP" TO FIX BEFORE PHONE DIE”
Sebagian orang seolah punya kekuatan super untuk merusak sesuatu
Jika sesuatu tidak dibuat benar-benar mustahil secara harfiah, mereka pasti akan menemukan cara untuk melakukannya secara tidak sengaja
Mereka mengikuti panduan untuk mengubah pengaturan yang tidak mereka pahami, menjalankan fitur yang tidak mereka pahami, dan memberikan hak akses yang tidak mereka pahami
Itu tetap terjadi betapapun rumit prosedurnya, berapa pun banyak peringatannya, dan sekeras apa pun upaya mencegah kebodohan semacam ini
Masalahnya, ada juga orang-orang yang tahu apa yang mereka lakukan dan menggunakannya dengan sengaja
Orang-orang seperti itu bisa menghargai fitur kuat yang sama sekali tidak boleh diberikan kepada orang bodoh
Namun, begitu kekuatan itu diekspos, sulit secara realistis menghindari banjir orang yang melakukan hal-hal bodoh, dan itu menyakitkan
Masalah besarnya adalah banyak pihak tidak benar-benar memahami bahwa banyak pengguna sama sekali tidak mengerti apa yang mereka lakukan
Google tidak memahami cara merancang software yang aman untuk orang-orang seperti itu
Prosedur yang merepotkan mungkin tampak tidak berarti, tetapi sering kali punya tujuan yang jelas
Yaitu memastikan bahwa niat pengguna memang kuat
Apple belakangan ini menerapkan beberapa API web agar hanya berfungsi jika situs web dipasang, dan itu tampak seperti strategi yang memahami desain untuk manusia
Pengguna tetap bisa mengakses fitur PWA yang berguna, tetapi tidak membiarkan sembarang situs memakainya sesuka hati
Ada langkah tambahan yang bisa dipahami orang biasa
PWA yang terpasang terus terlihat di layar utama, sehingga menjadi pengingat visual atas izin yang diberikan dan sinyal jelas bahwa pengguna memang menginginkan akses itu
Banyak orang perlu berinteraksi dengan perangkat, tetapi saat ini aplikasi yang disediakan melalui App Store tertutup sering kali praktis menjadi satu-satunya pilihan
Untuk mendistribusikan cara agar lebih banyak orang bisa mengakses perangkat yang dukungan resminya sudah dihentikan, WebUSB adalah cara yang jauh lebih mudah
Di dunia lain tempat Chrome tidak mendukungnya, pengguna umum harus bisa memasang dan menjalankan [python or other scripting language]
Jika pengembangnya benar-benar bersemangat, mereka mungkin harus menyediakan aplikasi desktop, atau menempuh proses pengajuan App Store yang panjang dan mahal
Saya rasa WebUSB bisa memiliki UI yang aman, dan saya juga tidak bisa langsung membayangkan perangkat apa yang biasa terpasang pada pengguna rata-rata yang dapat dikompromikan
Dengan WebUSB, seharusnya tidak mungkin mengambil alih keyboard atau mouse (HID), penyimpanan, Wi-Fi, audio, smartcard, atau perangkat U2F
Namun, ini sangat berguna untuk printer label proprietary, berbagai mainan dan perangkat, serta pemrograman dan flashing microcontroller
Memang mudah dan nyaman digunakan, tetapi juga mudah membuat orang tanpa sengaja memberikan akses yang sangat luas kepada pihak ketiga yang tidak tepercaya
Memberikan izin kepada halaman, seperti yang dikatakan, seharusnya merupakan alur yang dimulai secara eksplisit oleh pengguna dari panel izin
Aplikasi desktop yang di-sandbox juga sama
Jika suatu aplikasi ingin terus merekam layar, aplikasi itu harus mendapatkan izin tersebut secara eksplisit dari panel kontrol izin
Aplikasi tidak boleh bisa memunculkan dialog modal yang membuat orang sekadar menekan “yes”
Dalam banyak kasus, orang tidak memahami secara teknis apa yang sedang diminta dari mereka
USB Serial benar-benar luar biasa
Akhirnya mengakhiri aplikasi Electron merepotkan yang hanya dipakai untuk satu tujuan
Sekarang ada alat untuk mengonfigurasi perangkat lewat browser, dan itu sangat bagus
Lihat saja ESPHome dan ratusan proyek berbasisnya, Betaflight, ELRS, Flipper
Bisa dimengerti kalau WebKit kurang mendukung karena dikembangkan Apple, dan juga bisa dimengerti bahwa mereka akan berhati-hati jika mengizinkan akses ke periferal
Namun Firefox berbeda
Firefox sangat kurang dalam dukungan “koneksi” hardware dan sejak lama tidak ramah bagi developer, sehingga akhirnya tidak dipakai
Alasan mereka tidak mendukungnya adalah karena persetujuan pengguna saja tidak cukup untuk akses perangkat, tetapi itu tidak masuk akal
Mereka bisa saja menaruhnya di balik semacam flag developer
Blink telah membuktikan bahwa ini bisa dibuat aman
Rasanya mereka keras kepala tanpa alasan, dan tidak melihat use case yang bisa membuat browser jadi layak dipakai
https://developer.mozilla.org/en-US/docs/Web/API/Serial
https://mozilla.github.io/standards-positions/
Kredensial U2F seharusnya tidak bisa dipancing lewat phishing
Karena API U2F di browser memasukkan nama domain ke dalam permintaan token
Namun dengan WebUSB, sebuah situs bisa meminta token untuk nama domain mana pun
Karena U2F dan WebUSB sama-sama menampilkan kotak persetujuan pengguna yang terlihat cukup mirip, secara praktis mustahil menghindari sebagian pengguna menjadi bingung
Sulit dipercaya, tetapi solusi Google adalah memasukkan banyak perangkat ke blocklist WebUSB
Sekarang pembuat perangkat U2F harus meminta Google menambahkan produk baru mereka ke blocklist setiap kali merilis produk baru
Semua orang menyukai fakta bahwa browser adalah sandbox aman yang memungkinkan menjalankan kode yang tidak tepercaya, tetapi saya tidak tahu mengapa mereka ingin melubangi sandbox itu sebanyak ini
[1] https://www.yubico.com/support/security-advisories/ysa-2018-...
[2] https://github.com/WICG/webusb/blob/main/blocklist.txt
Menurut saya, tidak sepadan mengambil risiko fingerprinting demi puluhan pengguna akhir yang tidak perlu mengunduh aplikasi Electron untuk berinteraksi dengan hardware fisik
Mengimplementasikan fitur lalu menguncinya di balik toggle developer itu gila
Itu membuang ratusan jam waktu pengembangan yang bisa dipakai untuk hal berguna, hanya untuk mengekspos fitur yang toh tidak akan ditemukan siapa pun
Sebagai developer, saya tidak masalah API khusus Chrome seperti ini tetap hanya ada di Chrome
Lagi pula, kita tetap harus menyiapkan satu browser Chromium untuk berjaga-jaga saat ada situs web yang benar-benar rusak di Firefox, jadi pakai saja itu saat mengerjakan Web USB
Ini memang demo teknologi yang keren, tetapi bukan sesuatu yang seharusnya dilakukan browser
Fakta bahwa belum ada orang yang menambahkan fitur WebUSB sebagai ekstensi Firefox juga tampaknya menunjukkan bahwa bahkan bagi orang-orang yang memakai fitur ini, ia tidak cukup bernilai untuk menghabiskan waktu pengembangan
Masalah privasi dan keamanan telah diajukan
Web Serial bukan standar web, dan tidak bisa menjadi standar sampai Mozilla atau Apple menilai masalah-masalah ini sudah diselesaikan
Google tidak bisa menjadikannya standar web sendirian; standar memerlukan konsensus
Diskusi Mozilla ada di sini: https://github.com/mozilla/standards-positions/issues/336
Diskusi WebKit ada di sini: https://github.com/WebKit/standards-positions/issues/199
Sulit membayangkan meninggalkan Firefox untuk browsing web hanya karena webusb
Seharusnya berupa software yang bisa diunduh dan tidak bergantung pada server eksternal
Namun jika perangkat itu sejak awal bergantung pada server perusahaan tersebut untuk beroperasi, maka bagus juga kalau tidak perlu mengunduh dan memercayai software
Tidak bisa menggunakan port USB dari kode berbasis browser mungkin justru hal yang baik
Karena saya tidak perlu lagi membuka Windows VM untuk menjalankan pembaruan firmware atau tool utilitas dari produsen perangkat audio yang mendukungnya, misalnya Novation
WebUSB seharusnya memungkinkan hal yang sama untuk lebih banyak jenis perangkat, tetapi tentu saja harus ada mekanisme izin yang tepat
Manfaatnya jelas bagi orang yang sering melakukan flashing perangkat
Namun pengguna biasa, yaitu kira-kira 3 miliar orang lainnya, sama sekali tidak peduli
Melubangi sandbox demi mereka itu, paling baik pun, ceroboh
Solusinya mungkin alat terpisah khusus untuk penggunaan ini, mungkin bahkan browser terpisah
Semacam Flash Browser
Itu bisa menyertakan tool tambahan untuk membantu pekerjaan ini
Misalnya allowlist atau blocklist yang sudah dikonfigurasi, bookmark untuk tool flashing umum, dan materi referensi
Ini bisa menghasilkan pengalaman yang lebih baik daripada memaksakan WebUSB mentah-mentah ke dalam browser
Saya memahami kontroversi dan kritik seputar “standar” itu, tetapi saat saya memakainya untuk mem-flash GrapheneOS ke ponsel Pixel, itu adalah instalasi OS paling nyaman, mudah, dan cepat yang pernah saya lakukan di perangkat apa pun
Secara harfiah tinggal colok, klik, lalu langsung pakai
Bagian bahwa kunci privat dienkripsi dengan kunci “master” lalu kunci privat terenkripsi itu dikembalikan sebagai key handle terasa mengejutkan
Memang sepertinya itu bisa berfungsi
Namun memberi penyerang kesempatan tak terbatas untuk mencoba mendekripsi kunci privat yang ada di tangan mereka rasanya suatu saat akan berbalik merugikan, tapi entahlah, apa yang saya tahu
Misalnya, dengan cara lain, kunci privat bisa dibuat dari key handle melalui derivasi kunci deterministik
Penyerang juga bisa melakukan brute force terhadap ini, sama seperti terhadap kunci spesifik situs terenkripsi yang tersimpan di key handle
Intinya, autentikator tanpa status, menurut definisinya, bersifat deterministik secara global, yaitu di seluruh rahasia dan situs
Jika diberikan pasangan input-output, rahasia internalnya bisa di-brute force
Solusinya adalah membuat status internal itu cukup besar sehingga secara komputasional mustahil
Saya penasaran apa yang dimaksud dengan perdebatan politis terkait WebUSB
Itu adalah API khusus Blink yang dibuat Google, dan Mozilla serta Apple menolaknya karena alasan privasi dan keamanan
Tanpa dua implementasi independen, ia tidak bisa menjadi standar web, dan Google tidak berhasil meyakinkan siapa pun di luar Google untuk mengimplementasikannya
Meski begitu, di banyak situs web Firefox dan Safari digambarkan seolah-olah “tidak mampu mendukungnya”
“This specification was published by the Web Platform Incubator Community Group. It is not a W3C Standard nor is it on the W3C Standards Track.”
— https://wicg.github.io/webusb/
“WebKit declined to implement several APIs, including WebUSB, due to concerns over fingerprinting”
“We have previously stated privacy concerns, thus the concerns: privacy label. We agree with Mozilla's security concerns raised in their standards position issue, thus the concerns: security label.”
— https://github.com/WebKit/standards-positions/issues/68
“Because many USB devices are not designed to handle potentially-malicious interactions over the USB protocols and because those devices can have significant effects on the computer they're connected to, we believe that the security risks of exposing USB devices to the Web are too broad to risk exposing users to them or to explain properly to end users to obtain meaningful informed consent. It also poses risks that sites could use USB device identity or data stored on USB devices as tracking identifiers.”
— https://mozilla.github.io/standards-positions/#webusb
Browser sudah bisa mengakses perangkat USB yang diperlukan melalui antarmuka OS biasa
Keyboard dan mouse adalah contoh yang jelas
Saya tidak tahu situs web macam apa yang perlu memiliki akses langsung terpisah
Use case-nya tampak hanya memberi akses kepada programmer web yang malas memakai aplikasi mandiri, atau menyediakan cara tambahan untuk melacak pengguna
Saya tidak ingin mempercayai keduanya
Saya bahkan tidak cukup mempercayai Google dan Mozilla untuk memberi akses seperti itu, apalagi orang asing sembarang yang membuat situs web
Tidak semua hal harus bisa diakses dari web
Saya tidak tahu di mana garis batasnya harus ditarik, tetapi bagi saya akses USB sudah melewati garis itu
Biasanya ini pertarungan yang dimenangkan oleh orang-orang yang menginginkan fitur sekarang juga
Karena celah keamanan terlihat seperti masalah hipotetis sampai benar-benar dieksploitasi di dunia nyata
Semakin demikian, ketergantungan pada Chrome akan semakin dalam
Saya juga tidak menginginkan itu