我的音频接口默认启用了SSH。
My audio interface has SSH enabled by default

原始链接: https://hhh.hn/rodecaster-duo-fw/

## Rodecaster Duo 固件探索 去年,为了寻找游戏和工作期间无缝音频的解决方案,作者购买了Rodecaster Duo。对它的易用性印象深刻,出于习惯,他们开始研究它的固件更新流程。最初在Mac上的尝试表明,更新是一个简单的、未加密的、gzip压缩的tar包——令人惊讶的是,缺少签名检查。该设备具有双分区系统用于恢复,甚至默认启用了SSH,并预配置了公钥。 一次更新失败促使作者使用Wireshark和Windows上的USBPcap进行进一步调查,并借助Claude AI分析捕获的数据。这表明更新过程依赖于简单的HID命令('M'进入更新模式,'U'触发闪存)和将文件复制到挂载的磁盘。 利用这些知识,作者创建了自定义固件以启用密码身份验证并添加他们自己的SSH密钥,从而成功访问该设备。他们向RODE报告了默认SSH配置,但没有收到回复。总的来说,作者对Rodecaster Duo的开放性和易修改性感到惊喜,并将其突出显示为设计精良且令人愉悦的音频设备。

一名 Hacker News 用户发现他们的 Rode 音频接口默认启用了 SSH,这促使他们发表了一篇博客文章,详细介绍了对该设备固件的探索。该文章借助 Claude AI 模型,引发了评论区的讨论。 一位评论者批评该文章缺乏有价值的信息,感觉更像是对所用工具的宣传,而非真正的技术深度分析。原作者澄清,他们的动机仅仅是个人享受和与他人分享,而非商业利益。 另一位评论者质疑*公开*这些发现的意义,暗示希望*保持*接口的开放性。原作者回应说,他们希望 Rode 继续维护开放访问。这场讨论凸显了通过混淆保护安全与开放、用户可修改固件带来的好处之间的紧张关系。
相关文章

原文

last year i bought a Rodecaster Duo to solve some audio woes to allow myself and my girlfriend to have microphones to our respective computers when gaming together and talking on discord in the same room without any echo, and to be able to swap that to my work pc easily. the rodecaster is really nice, it's pretty effortless to use and works great for our home. I would gladly recommend it to anyone looking for a similar solution.

as is usual for any device in my house, i try to ensure when it's time to update the firmware I have enough tooling in place to capture how firmware updates work, or to at a minimum capture a firmware blob to try and reverse engineer it and poke around for fun and/or to see the often horrific reality that is the industry we work in.

fw update

I was feeling pretty lazy and assumed that rode would dump the firmware somewhere on my computer before flashing the device, so i set up Instruments on macos to capture disk activity, and found where the fw was dumped, and surprisingly it was just a gzipped tarball. The device I did this update on happened to have the ability to write to USB disks disabled, so the update actually failed.

Poking around a bit, i found the binaries of the stuff that actually runs on the device, as well as a shell script that handles the updates themselves. there are two partitions on the disk, so that if you brick one it boots from the other. It also doesn't have any signature checks or anything on the incoming firmware. I'm used to many vendors of this style of device requiring signed firmwares or something nowadays, kind of nice to actually own a device I can modify. I also noticed that ssh seemed to be enabled by default, and plugged in an ethernet cable and saw that ssh indeed is enabled w/ pubkey auth only. Here are the keys that are added by default:

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

since our update failed, i swapped to a windows pc and set up wireshark with USBPcap and then ran the update thru the rodecaster app. I roughly glanced at the pcap file and looked at where the update started, since it was a lot of traffic as I was also using it for audio on another computer. I wrote down the packet numbers I thought were interesting and threw them to claude code to dig thru the pcap while I was doing other stuff.

A bit later (cc only took 10 minutes or so but I was busy for a while) I came back to a breakdown of the structure, and a python script to manually update a device. The RODECaster App sends some HID control stuff to the device, one command to enter the update mode (the 'M' command), and then another (the U command) to trigger the update. Both are just single ASCII characters sent over HID report 1.

I am but a yaml-writing slave and sometimes a below-average ghidra user, and don't often interact with hardware devices, so getting some help from CC in discovery was useful, as well as pointing me to resources to actually learn more about hid devices.

The structure was pretty simple, you send the m command, and then copy archive.tar.gz and archive.md5 (obviously just with md5sum of the archive) onto the newly exposed disk. then you send the U command to trigger the flashing itself.

so the flow is:

  1. plug in the rodecaster and power it on (or vice versa)
  2. send the 'M' command
  3. mount the disk and copy archive.tar.gz and archive.md5 to it
  4. chmod 777 both of them because i dont care to figure out how to do it properly
  5. unmount the disk
  6. send the 'U' command
  7. wait for the thing to reboot into your new firmware

custom firmware

I was still working from my mac, and wanted to create some cfw to be able to ssh into the device, so i just used a container to enable password authentication for ssh (don't shoot me) as well as add my own pubkey to the authorized keys, and dump out an archive for me to flash. you don't really need much to actually flash the device, see here (example of the functions its not really much to add the rest.)

run your script to flash the thing and bingo bongo you can ssh to it

conclusion

I was really surprised that I could actually flash firmware so easily to this, and it is really nice to own a device. It's a really nice piece of kit and just kinda blends into the background and I never have to think about it. I don't really know why ssh was enabled, or why it had this key added by default, but I submitted a ticket to RODE for this as I could not find an obvious security email to report to. I did not hear back, but I will watch to see if future firmware updates change anything.

It's been a few months since i've done anything with this, and I am trying to just dump out my thoughts into a notepad and only very lightly edit it and then just poast. I really love all of the RODE stuff I have, and yet again just want to buy more gear.

if you want to ask me questions about this or have any questions, you can reach me with the primary letter of this domain, at this domain.

thanks computer, until next time

联系我们 contact @ memedata.com