1 poin oleh GN⁺ 3 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Dengan mengekstrak file firmware, struktur internal perangkat dapat diperiksa dengan mudah, dan Rodecaster Duo ternyata memiliki SSH yang terbuka secara default
  • Paket pembaruan berbentuk gzipped tarball, dan perangkat memiliki dua partisi untuk boot ke sisi lain jika terjadi kerusakan, serta skrip shell untuk pembaruan
  • Firmware yang masuk tidak memiliki verifikasi tanda tangan, koneksi SSH aktual terkonfirmasi melalui sambungan Ethernet, dan hanya mengizinkan autentikasi pubkey
  • Di Windows, alur pembaruan USB ditangkap dan diketahui bahwa masuk ke mode pembaruan serta menjalankan flashing dilakukan dengan perintah ASCII tunggal M dan U; setelah menyalin archive.tar.gz dan archive.md5, firmware baru dipasang lewat reboot
  • Di macOS, firmware kustom digunakan untuk mengaktifkan autentikasi kata sandi SSH dan menambahkan kunci publik sehingga koneksi nyata bisa dilakukan, tetapi alasan SSH aktif secara default dan adanya kunci bawaan tetap tidak terungkap

Pembaruan firmware dan SSH yang aktif secara default

  • Rodecaster Duo memudahkan pemeriksaan file yang dikirim ke perangkat selama proses pembaruan firmware, dan SSH aktif dalam keadaan default
    • Di macOS, aktivitas disk dilacak untuk menemukan lokasi penyimpanan firmware, dan firmware berbentuk gzipped tarball sederhana
    • Pada perangkat yang dicoba diperbarui, fungsi penulisan ke disk USB dinonaktifkan sehingga pembaruan tersebut gagal
  • Di dalam perangkat terdapat biner eksekusi dan skrip shell untuk pembaruan, dan pada disk ada dua partisi sehingga jika salah satunya rusak, perangkat akan boot dari yang lain
    • Firmware yang masuk tidak memiliki verifikasi tanda tangan
    • Setelah kabel Ethernet dihubungkan, terkonfirmasi bahwa SSH memang terbuka, dengan hanya autentikasi pubkey yang diizinkan
  • Ditemukan dua kunci SSH bawaan yang sudah ditambahkan
    • ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCX/bCFTDgViuPvdFL/VMMVRrw9b5S8HcDQk17qoCEYwmI+IIG8rEAsLiaeCOwyhf9IN+8/LRaN0Z5ZfU3WMbmsKEg8zd1Yvqq74nFbhO47vbtzmCi9S4ucIKkBEVOyvyN5lt9hWf5t5nZSmlfldZK3Pem5y8wHM5A+K/gSnzp4gwQ1QYfFb068uQ+ciIdOhb8SkUs8CwzotglIbp19I6ZmXmsNj/TmpbUf5rMfUAf1gysZ5j1UdRWrvWVh5daqvZRsBBPbXEeJfDU3Nr3HR14XYt9mgexrz/5oyKSj/lQYLmh9cDfsxvkGNIQ8fF9l+n2L1KZM4lLgiGk4KFBjQHaIBZx9OebCiiZCO4NTJUBDk9a+SZpiDiipADV07s7vTInYyFA6GrmKtnq3M6upT4WJBvVuL/BMnK5yY1RZtoqox2/pcCg2rH5S1GIy0v0HFJisl7kWInlaG2mdsaCx19wAjCFe/qT9LyxjQ6+0rArI55/JJFDkNeMjrewRQwNdASjCox8vqXCBfjvsR9qv70/ywcymgsnLAnq2LuYg5FYwMMDYOvVnhACC+BYTdNDTn5oeMIjQCUenY/DPCHpJkf4YOf3YCMUTEU9tExhtwW/X+m21hS3+STLtTfqbUeg9CeuPQZgfl9vc65n3tMxAdlEGEDoTaNMAgr2TzJv92Ka9iQ==
    • ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaNyzPfIcEeQsfzyQs/wyX6mX52kiS+4eNHfCaxFlgj

Alur pembaruan dan firmware kustom

  • Di Windows, lalu lintas pembaruan ditangkap dengan Wireshark dan USBPcap untuk melihat alur kontrol yang dikirim aplikasi RODECaster ke perangkat
    • Ada 'perintah M' untuk memasukkan perangkat ke mode pembaruan dan 'perintah U' untuk menjalankan pembaruan
    • Kedua perintah dikirim sebagai satu karakter ASCII melalui HID report 1
  • Struktur pembaruan yang sebenarnya cukup sederhana
    • Setelah mengirim perintah M, archive.tar.gz dan archive.md5 disalin ke disk yang baru terekspos
    • archive.md5 adalah nilai md5sum dari arsip
    • Setelah itu, disk di-unmount dan perintah U dikirim untuk memulai flashing, lalu perangkat reboot dan naik dengan firmware baru
  • Di macOS, dibuat firmware kustom menggunakan container untuk mengaktifkan autentikasi kata sandi SSH dan menambahkan kunci publik sendiri ke authorized keys
    • Contoh fungsi minimum yang diperlukan untuk flashing dapat dilihat di sini
    • Setelah menjalankan skrip dan melakukan flashing, perangkat dapat diakses melalui SSH
  • Perangkat ini memungkinkan firmware di-flash dengan sangat mudah, dan alasan SSH aktif secara default serta adanya kunci bawaan masih belum diketahui
    • Masalah ini telah dilaporkan ke RODE melalui tiket, tetapi tidak ada tanggapan
    • Akan terus dipantau apakah ada perubahan pada pembaruan firmware berikutnya

1 komentar

 
GN⁺ 3 jam lalu
Komentar Hacker News
  • Yang selalu bikin frustrasi dalam pembahasan seperti ini adalah fakta bahwa signed firmware dan open firmware sebenarnya bukan lawan kata
    Menyalakan verifikasi secara default itu tidak masalah, tetapi orang yang membeli perangkat kerasnya seharusnya tetap bisa mengambil kendali pemilik dengan cara mendaftarkan kunci sendiri, memindahkan jumper, atau menekan tombol saat boot
    Dalam praktiknya, yang benar-benar memberi opsi seperti ini paling hanya beberapa Chromebook dan perangkat jaringan, jadi setiap kali topik keamanan firmware muncul, ujung-ujungnya selalu jadi perang antara "kunci rapat semuanya" melawan "buka semuanya total", sementara struktur di mana pengguna yang membayar bisa memutuskan justru hilang
    Cara Rode mendistribusikannya sebagai tarball + hash itu sangat bagus, dan kalau nanti dibuat lebih ketat pun semoga tetap dengan mekanisme yang memungkinkan saya menginstal apa pun yang saya mau ke perangkat yang saya miliki
  • Saya benar-benar suka bahwa image firmware-nya cuma tarball + hash
    Semoga lebih banyak perangkat yang terbuka seperti ini, dan semoga Rode tidak melihat ini lalu mengunci upgrade firmware
    • Kalau ada orang dari Rode yang membaca ini, justru hal seperti inilah yang bikin saya ingin membeli perangkatnya
      Tolong jangan diubah
    • Beberapa tahun lalu saya harus memperbarui firmware printer HP, dan saya suka karena caranya ternyata sangat sederhana
      Itu printer sekitar tahun 2009, dan untuk menaikkan RAM ke 256MB dibutuhkan update firmware, tetapi saya cuma perlu mengirim tarball ke printer lewat jaringan dengan FTP
      Saya kirim pakai FileZilla, printer bekerja beberapa menit, lalu update langsung selesai, dan sejak itu saya jadi berpikir: memangnya kenapa update firmware harus lebih rumit dari ini?
      Kalau demi keamanan perlu checksum, ya silakan, tetapi akan bagus kalau cukup unggah satu blob lewat FTP, SCP, atau SFTP lalu selesai
    • Meski begitu, saya tetap merasa perintah update sebaiknya hanya bisa diaktifkan lewat input seperti tombol fisik
      Harus dibuat hanya bisa dilakukan setelah masuk semacam DFU mode, karena kalau tidak, apa pun yang bisa mengakses USB dapat mendorong firmware yang salah dan membuat perangkat jadi brick
    • Secara pribadi saya tidak ingin audio interface saya menjalankan SSH, dengan struktur di mana seseorang bisa menambahkan authorized key sewenang-wenang
  • Judul Audio interface saya adalah komputer Linux 64-bit mungkin akan terdengar lebih menarik
    Kalau 10 atau 20 tahun lalu, fitur seperti ini kemungkinan besar diimplementasikan di SoC 16-bit atau 32-bit kecil dengan RTOS seperti VxWorks
    Karena juga punya banyak kontrol fisik, langkah berikutnya bahkan terasa wajar kalau dijadikan konsol game
    • Audio interface saya juga sebenarnya adalah komputer Linux, dan di dalamnya memang ada FPGA yang diprogram di lapangan
      Selain itu ada dua port 1GbE, dan masing-masing berkomunikasi dengan bagian mesin yang berbeda
      Tapi konfigurasi seperti ini tidak terlalu aneh di dunia audio profesional, jadi memang terlihat mengesankan kalau dipakai di meja rumah, tetapi di industrinya sendiri cukup biasa
      Mungkin ceritanya akan jadi lebih menarik setelah berhasil mendapat root shell atau setelah membuatnya brick
    • Video dongle Anda juga bisa jadi komputer Unix: https://www.macrumors.com/2025/02/04/doom-apple-lightning-hdmi-adapter/
    • Sekarang memang ada tekanan RAM/storage, tetapi harga chip sudah sangat murah
      Dari sisi biaya dan kompatibilitas juga tidak mudah mengalahkan Linux
  • Begitu perangkat mulai memakai DSP yang layak, struktur seperti ini cukup umum
    Biasanya di bawahnya ada Linux minimal yang berjalan di ARM SoC, dan BSP vendor kadang kebetulan terkirim dengan sshd masih aktif
    Ini lebih dekat ke situasi di mana tidak ada orang di sisi audio yang benar-benar bertanggung jawab atas rootfs, bukan karena niat jahat
    Intinya adalah apakah ini hanya terbuka di jaringan sisi USB, atau benar-benar terbuka juga ke LAN
    Yang pertama cuma sebatas merepotkan, yang kedua benar-benar mengkhawatirkan
    • Sayangnya, default Linux memang tidak terlalu bagus untuk produksi massal perangkat seperti ini
      Sebaliknya, Android membagi jenis image default seperti eng / userdebug / user, jadi kalau hanya memilih default yang sudah diprakonfigurasi dengan benar, kesalahan seperti ini lebih mudah dihindari
    • Ini memang benar-benar mendengarkan juga di LAN
      Saya belum sempat mengecek apakah antarmuka itu juga terbuka saat terhubung ke Wi‑Fi hanya untuk memakai fungsi tertentu
  • Sampai sekarang masih terasa mengejutkan bahwa semua orang seperti membawa AI-hacker di saku mereka
    Tinggal lemparkan ke agent, dan dalam hitungan menit ia bisa memeriksa firmware dan memberi pendekatan untuk memodifikasi perangkat
    Tahun lalu, hal seperti ini setidaknya terasa seperti pekerjaan untuk hacker sekelas Hotz, atau seseorang yang mau bertahan menggali sangat lama
    • Itu sama sekali tidak benar
      Memang benar LLM membuat analisis, debugging, dan bypass jadi jauh lebih mudah, tetapi tingkat perlindungan perangkat ini sangat rendah sehingga orang dengan kemampuan menengah pun kemungkinan bisa melakukannya kalau punya motivasi dan waktu
      Tidak ada firmware terenkripsi, tidak ada pemeriksaan tanda tangan, bahkan ada akses SSH bawaan
      Sebaliknya, hypervisor PS3 yang dibobol George Hotz dirancang jauh lebih kuat dari sudut pandang penyerang, dan eksploitasi nyatanya bahkan memerlukan voltage glitching dengan FPGA
      Serangan seperti itu memang bisa dibantu LLM, tetapi karena tidak ada loop umpan balik yang sepenuhnya lengkap, tetap masih sangat membutuhkan tangan manusia
      https://rdist.root.org/2010/01/27/how-the-ps3-hypervisor-was-hacked/
    • Kalau melihat tulisannya, Claude Code pada dasarnya tampak hanya dipakai sebagai pengganti Wireshark dan Google untuk menafsirkan trafik USB HID dan mencari dokumentasi protokol
      Kalau Wireshark belum terpasang, ini mungkin bisa sedikit menghemat waktu, tetapi juga ada sedikit risiko halusinasi
      Selebihnya, yang dilakukan hanya memodifikasi ~root/.ssh/authorized_keys dan /etc/shadow dari tarball firmware di dalam Docker, lalu memakai skrip Python sederhana untuk mengirim pesan HID terkait dan menyalin tarball yang sudah dimodifikasi ke volume yang diekspos perangkat seperti USB drive
      Jadi ini bukan pekerjaan yang membutuhkan hacker gila, cukup kemampuan dasar Linux sysadmin dan level bisa merangkai pustaka USB HID untuk menulis program kecil yang sepele
      Tetapi saya sempat bingung kenapa ia memasang paket whois di kontainer Ubuntu, lalu masuk akal setelah ingat bahwa di keluarga Debian, mkpasswd ada di situ karena alasan historis
      Juga, kalau sshd_config perangkat itu masih default apa adanya, kemungkinan login root dengan kata sandi memang sejak awal tidak bisa dilakukan karena PermitRootLogin
      https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=116260
    • Saya juga pernah memakai AI untuk mengaktifkan SSH pada salah satu Phase One digital back yang saya punya, dan pada unit lain saya me-reverse-engineer firmware-nya lalu mem-patch agar dikenali sebagai model berbeda
      Saya menyamarkan Credo 50 sebagai IQ250, padahal bagian dalamnya pada dasarnya sama
    • Dulu saya harus menghabiskan berjam-jam menelusuri packet capture dan bermacam data, jadi menyenangkan bahwa sekarang waktu itu tidak perlu lagi dihabiskan
      Menggali memang seru, tetapi makin bertambah usia rasanya makin sulit menghabiskan 16 jam memelototi firmware blob acak
    • Dalam kebanyakan kasus, LLM tidak mampu melakukan pekerjaan pada level seperti itu
      Lagi pula, menangani perangkat dengan SSH yang terbuka memang tidak membutuhkan keterampilan khusus
  • Saya punya masalah yang sama, jadi saya benar-benar penasaran bagaimana penulis menyelesaikannya
    Terutama bagian ingin bermain game dan memakai Discord di ruangan yang sama, sambil saya dan pacar saya masing-masing menyambungkan mikrofon ke komputer sendiri tanpa echo
    • Rodecaster bisa terhubung ke dua komputer
      Keduanya cukup masuk ke panggilan Discord yang sama, lalu gabungkan dua mikrofon ke input salah satu komputer, sementara yang satunya menerima audio di klien dengan mikrofon dimute
      Karena mixing terjadi secara lokal, tidak akan timbul echo
      Sesederhana itu sampai rasanya saya ingin bilang, kirim email saja kalau ada yang masih ingin ditanyakan
    • Baru-baru ini saya melakukan vibe coding kasar untuk jack mixer dalam Rust, dan itu bisa menerima audio lewat LAN lalu mengirimkannya lagi
      Latensinya sekitar 40 ms, dan kalau lewat Wi‑Fi sekitar 50–60 ms
      Anda bisa menjalankan mixer di satu PC dan memakai mikrofon lokal sebagai satu channel input, lalu PC lainnya menyiarkan mikrofonnya agar masuk sebagai channel 2 ke mixer, jadi masalahnya bisa diselesaikan dengan cara serupa
      Musik juga bisa diputar dari PC lokal, dan mixer atau broadcaster bisa membuat sink lokal
      Di akhir semuanya dicampur di mixer, lalu main out dikirim ke Discord, sedangkan jalur monitor mengeluarkan audio Discord dan kemudian merelay-nya kembali ke PC lain untuk pemantauan real-time
    • Saya juga sempat berpikir bukankah ini masalah yang selesai kalau memakai headset dengan boom mic yang terarah
      Tentu saja, mungkin saya salah memahami situasinya
  • Tulisannya bagus, dan domain-nya juga keren
    Saya tidak tahu banyak soal Zola, jadi tidak tahu apakah ini template umum atau kustom, tetapi tampilannya sangat bagus
  • Banyak vendor tampaknya melihat security pada dasarnya sebagai sinonim dari pencegahan penyalinan
    Karena itu mereka tampaknya memaksakan hal-hal seperti signed image
  • Saya penasaran kenapa tujuannya adalah disclosure
    Untuk interface seperti ini, saya justru merasa lebih baik kalau dibiarkan tetap terbuka
    • Itu bukan tujuan utama, dan saya juga berharap RODE tetap membiarkannya terbuka
  • Orang-orang Rode di Australia relatif mudah diajak komunikasi, jadi kalau ada sesuatu yang perlu dilaporkan, rasanya Anda bisa langsung menelepon saja
    Di sana mereka hampir bicara seperti bahasa Inggris, jadi mestinya bisa saling paham