1 poin oleh GN⁺ 2025-03-15 | 1 komentar | Bagikan ke WhatsApp

> "Kami tidak butuh WebUSB!"

  • Ada cara agar halaman web dapat mengakses perangkat USB tanpa WebUSB. Selain itu, perangkat juga bisa dirancang untuk melewati persyaratan persetujuan pengguna.

Demo cepat

  • Muat u2f-hax.uf2 ke Raspberry Pi Pico, lalu muat index.html dari localhost atau konteks aman lainnya.
  • Tombol "On!" dan "Off!" menyalakan/mematikan LED, dan status pin GP22 diperbarui secara berkala di halaman.

Bagaimana ini bisa dilakukan?

  • Pico diprogram untuk mengemulasikan dongle U2F (kunci keamanan fisik dua langkah).
  • Alih-alih fungsi keamanan, data arbitrer disembunyikan di dalam "key handle" dan tanda tangan pesan U2F_AUTHENTICATE.
  • Jika key handle dimulai dengan 0xfeedface, Pico segera "mengonfirmasi" keberadaan pengguna dan mengembalikan data.

Mengapa ini bisa dilakukan?

  • Key handle U2F dirancang sebagai bongkahan data buram yang "dimiliki" oleh dongle keamanan.
  • Ini dirancang agar dongle berbiaya rendah bisa dikaitkan dengan banyak situs web.
  • Dongle secara internal menyimpan kunci kriptografi "master" yang unik, lalu saat pendaftaran membuat dan mengembalikan pasangan kunci publik/pribadi baru.
  • Karena key handle diperlakukan sebagai data buram, data arbitrer dapat disembunyikan di dalamnya.

Cara mengembalikan data

  • Menyembunyikan data menggunakan tanda tangan ECDSA.
  • Tanda tangan terdiri dari dua angka (r, s), dan masing-masing dihitung dalam rentang tertentu.
  • Chrome memeriksa apakah angka-angka dalam tanda tangan berada dalam rentang tersebut, tetapi Firefox tidak memeriksanya.
  • Untuk melewati validasi default Chrome, byte pertama dari tiap angka diatur ke 0x7f.

Apakah ini kerentanan keamanan?

  • Tidak, dan ini tidak memberi akses ke perangkat USB arbitrer.
  • Ini hanya berfungsi pada perangkat yang sengaja melanggar aturan.
  • Model keamanan perangkat USB di sebagian besar platform memang meragukan.
  • Jangan hubungkan perangkat asing yang tidak dikenal secara sembarangan ke komputer Anda.

1 komentar

 
GN⁺ 2025-03-15
Komentar Hacker News
  • Thread ini terutama membahas WebUSB, bukan soal OP. WebUSB adalah hack yang keren

    • Di satu sisi saya menginginkan WebUSB, tetapi saya tidak ingin orang awam memilikinya
    • Popup persetujuan tidak efektif, dan orang-orang secara tidak sadar menyetujui semuanya
    • Saya suka model izin di Internet Explorer. Anda harus menandai situs tertentu sebagai situs yang "tepercaya" agar bisa menggunakan fiturnya
    • Jika harus menandai situs sebagai situs "tepercaya" untuk menggunakan API berisiko seperti WebUSB dan WebBluetooth, akan lebih sedikit orang yang melakukannya tanpa sengaja
  • Firefox tidak mendukung komunikasi dengan perangkat USB sembarang. Namun, Firefox mendukung komunikasi USB dengan kunci keamanan U2F

    • Proyek ini memprogram mikrokontroler agar menyamar sebagai kunci keamanan U2F. Tujuannya adalah berkomunikasi dengan mikrokontroler lewat USB melalui Firefox
    • Dengan Javascript Credentials API dan sedikit akal-akalan, data dapat dikirim ke mikrokontroler dan respons dapat diterima
  • Orang yang menggunakan WebUSB mengatakan itu hebat, sementara yang tidak menggunakannya bingung mengapa itu diperlukan

    • Secara pribadi, WebUSB sangat bagus. Sebagian besar utilitas WebUSB juga tersedia sebagai aplikasi yang diinstal sendiri, tetapi menggunakan versi web lebih mudah
    • Saya kira ini akan populer di kalangan orang yang lelah harus punya aplikasi untuk segala hal
  • Menyesuaikan keyboard dengan firmware QMK/Via lewat WebUSB adalah mimpi buruk

    • Anda harus membiarkan browser membaca perangkat /dev/hidraw sepenuhnya sebelum browser berinteraksi dengan firmware
    • Dari sisi penggunaan, ini sangat tidak menyenangkan, dan semua alat kustomisasi offline berbasis Electron
    • Solusi yang masuk akal adalah mengatur layout keyboard yang diinginkan di situs web dengan file template json, mengunduh json hasilnya, lalu mem-flash firmware ke keyboard melalui alat flashing tingkat sudo
  • USB Serial adalah alat yang hebat, dan sekarang ada daftar alat untuk mengonfigurasi perangkat menggunakan browser

    • Ada ESPHome, Betaflight, ELRS, Flipper, dan lainnya
    • WebKit kurang didukung karena dikembangkan oleh Apple. Namun, Firefox kurang mendukung "konektivitas" hardware dan tidak ramah bagi pengembang
    • Dukungan tidak ditambahkan dengan alasan bahwa persetujuan pengguna tidak cukup untuk mengakses perangkat. Blink telah membuktikan bahwa ini bisa dibuat aman
  • Bagi orang yang sering mem-flash perangkat, keuntungannya jelas. Namun, bagi pengguna umum ini tidak penting

    • Mungkin diperlukan alat atau browser terpisah. Flash Browser bisa disertakan bersama alat tambahan
  • Mungkin lebih baik jika port USB tidak digunakan oleh kode berbasis browser

  • Mem-flash GrapehenOS ke ponsel Pixel adalah salah satu pengalaman instalasi OS yang paling nyaman dan cepat

  • Mengenkripsi kunci privat dengan kunci "master", lalu mengembalikan kunci privat terenkripsi sebagai key handle

    • Memberi peluang tanpa batas tampaknya pada akhirnya akan berbalik merugikan
  • Ada perdebatan politis terkait WebUSB

    • Saya penasaran seperti apa perdebatan politis itu