
2026/04/25 4:30
私のオーディオインターフェースは、SSH がデフォルトで有効になっています。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Rodecaster Duo は、ファームウェア署名検証の欠如に起因する深刻なセキュリティ脆弱性を有しています。この欠陥は、研究者がコンテナを通じて SSH パスワード認証を有効にする自製ファームウェアの開発および展開に成功した事例から明らかとなりやすく、カスタムソフトウェアへのフラッシングを可能にしています。同装置は USB 書き込みを無効化することでブリック状態を防ぐように設計されていますが、この制限は回避可能であり、初期試みが失敗した場合(例:macOS)や予期せずトリガーされた場合でもファームウェア更新が進められる可能性があります。USB HID プロトコルの解析により、ファームウェア更新はレポート 1 を介して送信される単純な ASCII コマンド('M」と 'U」)によって開始されることが明らかとなり、実際のファイル操作にはディスクのマウント、
archive.tar.gzおよびarchive.md5の複製、許可付きパーミッションの設定(777)、そして再起動が含まれます。同装置はデフォルトで公開鍵認証とハードコードされた鍵を使用した SSH が有効になっており、これらの鍵が変更されない場合、セキュリティリスクを引き起こします。これらの欠陥についてサポートチケットへの回答はなく、システムのオープンな性質が、この専門的なオーディオツールを有益な改変のプラットフォームであると同時に、潜在的なセキュリティ侵害のプラットフォームにも変えつつあります。本文
昨年、オーディオ面での課題を解決し、友人とのゲームやディスコードでの対話を快適にするために Rodecaster Duo を購入しました。これでそれぞれのカスタマイズされた PC にマイクを接続でき、同じ部屋にいる場合でもエコーのない会話が可能となり、作業用 PC との切り替えもスムーズに行えます。Rodecaster は非常に使いやすく、家庭での利用にも最適です。同様のソリューションを検討されている方には強くお勧めします。
家中の機器に限らず、ファームウェア更新 때마다ツールを用意して仕組みを調べるだけでなく、少なくともファームウェアのデータをキャプチャし、趣味としてリバースエンジニアリングすることに努めています。
ファームウェア更新
私は多少怠惰だったので、Rode がフラッシュ処理の前にファームウェアを一時的に PC にダンプするはずだと予測し、macOS で「Instruments」を使用してディスクアクティビティをキャプチャしました。その結果、ファームウェアは単なる gzip 圧縮された tarball として保存されていることが分かりました。更新対象のデバイスでは USB ディスクへの書き込みが無効化されていたため、アップデートが失敗してしまいました。
少し調べたところ、デバイス上で動作するバイナリや、更新処理を担うシェルスクリプトを発見しました。ディスクには 2 つのパーティションがあり、どちらか一方が壊れてももう一方から起動するよう構成されていました。また、入力されるファームウェアに対する署名チェックも存在しません。近年では類似のデバイスのベンダーが署名付きファームウェアを要求するのが一般的ですが、自由に修正可能なデバイスを手元に持っていることに嬉しく思いました。さらに SSH がデフォルトで有効になっており、イーサネットケーブルを接続したところ、パブリックキー認証のみで SSH が起動していることも確認できました。デフォルトで追加されたキーは以下の通りです:
-
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
アップデートの失敗を受け、私は Windows PC に切り替え、Wireshark と USBPcap をセットアップして Rodecaster アプリ経由での更新を実行しました。PC 側でもオーディオ処理を行っていたためトラフィック量は多かったですが、更新が始まる部分に注目し、パケット番号をメモして Claude Code に渡して分析をお願いしました。
数十分後(CC が分析自体に要したのは約 10 分程度でしたが、他の作業も同時進行でした)に、アップロード構造の分解と、デバイスを手動で更新するための Python スクリプトを得ることができました。Rodecaster アプリは HID コントロールをデバイスに送信し、「M コマンド」で更新モードに入り、「U コマンド」で実際のフラッシュを開始します。どちらも HID レポート 1 を介して送られる単一の ASCII 文字です。
私は YAML の記述に特化しており、Ghidra も中級者未満、ハードウェアデバイスとの相互作用も限られているため、CC に発見をサポートしてもらうこと、あるいは HID デバイスに関する学習リソースを教えてもらうことは非常に助けになりました。
構造は比較的シンプルで、「M コマンド」を送信し、新しいディスクに
archive.tar.gz と archive.md5(ファイルの md5sum)をコピーします。その後、「U コマンド」を送ってフラッシュを開始すると完了です。
フローチャート
- Rodecaster をプラグインして電源を入れる(または逆順)。
- 「M コマンド」を送信する。
- ディスクをマウントし、
とarchive.tar.gz
をコピーする。archive.md5 - 両ファイルを
でパーミッションを変更する(仕組みを深く理解する必要がなかったため適当に設定)。chmod 777 - ディスクをアンマウントする。
- 「U コマンド」を送信する。
- 新しいファームウェアで再起動されるのを待つ。
カスタムファームウェア(Custom Firmware)
まだ Mac で作業していたため、SSH でデバイスにログインできるように CFW(カスタムファームウェア)を作成し、パスワード認証を有効化するとともに、自分の公開キーを追加してアーカイブを作成しました。デバイスをフラッシュするには特別な手続きは不要です。ここでは実装の詳細な説明よりも具体的な例を示します。
スクリプトを実行してデバイスをフラッシュすると、すぐに SSH でログインできるようになります。
結論
これほど簡単にファームウェアのフラッシュが可能だと本当に驚きました。また、自分の所有するデバイスとして非常に心地よいと感じています。この機器は素晴らしい製品で、背景に溶け込み、気にする必要がありません。なぜ SSH がデフォルトで有効なのか、なぜこのキーが最初から追加されているのかは不明ですが、Rode へチケットを提出しました(セキュリティ報告用の明らかなメールアドレスが見つからないため)。返信はありませんでしたが、今後のファームウェアアップデートにおいて何か変わるか注視しています。
これからは数ヶ月経過しますが、メモ帳に書き留めたいと思い、最小限の編集を加えて投稿しようとしています。私は Rode の製品全般を非常に気に入っており、さらにギアを購入したいと考えています。
この内容に関するご質問やご意見は、このドメインの主要文字を通じて私までご連絡ください。
Thanks computer! また次回まで。