HN 日本語サマリー

← 一覧へ戻る
プログラミング

私が所有する全てのもの、所有されていたもの

Everything I own, owned (schlarp.com)

161 pointsby schlarpc45 コメント

要約

著者はAI(Claude Opus 5)を活用し、自身の周辺機器(マイク、ウェブカメラ、モニター)のファームウェアをリバースエンジニアリングしました。その結果、デバイスの制御を強化し、セキュリティ上の脆弱性を発見しました。このプロセスは、AIの支援により効率的に行われ、多くの時間をかけずに完了しました。

全文翻訳

私が所有する全てのもの、所有されていたもの 2026年8月23日 この数週間、私は手の届く範囲にある周辺機器のエージェント駆動型リバースエンジニアリングを行ってきました。それらのデバイスから、マイク内にプレーンテキストのコマンドシェル、録画中にアクティビティLEDをオフにできるウェブカメラ、そしてWiFi上の誰にでもメモリ書き込みを許可するキーライトを手に入れました。周辺機器はエージェントによるREの理想的なターゲットであることが証明されています。それらは私のコンピューターに接続された小さなコンピューターであり、ホストへのデータ接続と通常はファームウェアアップデートメカニズムを備えているため、エージェントは反復するための何かを持っています。最終的な成果は、私のマシンのより良い制御と理解です。 私のプロセスは、これらの各デバイスでほぼ同じでした。デバイスのファームウェアと関連するアップデートツールをメーカーから入手し、リバースエンジニアリング環境に投入し、Claude Opus 5に私の目標を伝え、それを処理させました。デバイスによって目標は多少異なりましたが、通常は次のようなものでした。 このディレクトリには、___のファームウェアとアップデートユーティリティが含まれています。デバイスはコンピューターにも接続されており、非破壊的な方法で操作できます。以下の目標を含め、ファームウェア全体を網羅的に文書化し、相互検証してください:* ファームウェアアップデート形式とアップデートプロトコルのリバースエンジニアリング* 独自のアップデートユーティリティの実装* チェックサム、署名検証、セキュアブートを含むアップデートプロトコルのセキュリティプロパティの決定* 静的および動的解析を使用して、すべてのプロトコルサーフェスを特定し、機能を完全に列挙する* 製品内の隠し機能またはデバッグ機能とそのアクセス方法を見つける 結果に応じて、フォローアップの方向性は異なりましたが、大まかなアイデアはつかめるはずです。各デバイスのリストを順に見ていきましょう。各デバイスは、生成されたドキュメントとスクリプトでいっぱいのGitHubリポジトリにリンクしています。そのほとんどは実際のハードウェアでライブ検証されています。また、Claude Codeセッションのトランスクリプトから抽出した、各デバイスにかかった労力も記載しています。「処理時間」は、Claudeが実際に作業していた時間で、長いアイドル時間は除外されています。「私のプロンプト数」は、続行するように指示したワンワードメッセージを含む、私が入力したすべてのメッセージです。5つのデバイスすべてを合わせると、約13時間の処理時間と98回のプロンプトで、2週間の夜間にわたって行われました。 私が所有する全てのもの Insta360 Link ウェブカメラ GitHubリポジトリ - Claudeの処理時間3.7時間、私のプロンプト数33回 私はInsta360 Linkウェブカメラを使用しています。これは、顔追跡機能によりショットを自動的にフレーミングする、優れたジンバル付きパン・チルト・ズームカメラです。古典的なiSeeYouエクスプロイトのように、アクティビティLEDをサブバートできるかどうかを知りたかったのです。 興味深いことに、このカメラは内部で多くの処理を行っていることがすぐに明らかになりました。実際、それはSoCベンダーであるAmbarellaから提供されたRTOS(ThreadX)全体を実行していることが判明しました。RTOSは、前述の顔追跡や設定を制御するためのジェスチャー検出などの機能を提供する、いくつかの小さなビジョンモデルをホストしています。小さなウェブカメラの中に驚くほどの複雑さがありますが、それはまた、ここにエキサイティングな攻撃サーフェスがあることを意味します。 USB Video Classインターフェイスを介して、デバイスを「マスストレージ」モードに切り替えるXU(Extension Unit)コマンドがあります。これにより、ステージングされたファームウェアアップデートをデバイスの内部FATファイルシステムに転送でき、デバイスは再起動時にそれを適用します。このルートでは再接続して再起動するためにユーザーの介入が必要ですが、実際にはUSBベンダークラス経由でファイルの任意の読み書きと再起動コマンドを提供する別のコマンドチャネルがあります。これにより、ユーザーの介入なしにデバイスを完全にフラッシュできます。ファームウェアが適切な場所にあれば、実際にはアンチタンパーはなく、整合性を確保するためのMD5ハッシュが追加されているだけです。 インジケータLEDは、ファームウェア内に、さまざまなデバイス状態のためにインデックス付けされる色や点滅パターンなどを決定する、よく構造化された「パターン」のセットであることが判明しました。私はClaudeに、カメラアクティビティのテーブルエントリをパッチし、整合性ハッシュを修正し、カメラにフラッシュするツールを書かせました。簡単なテストでは、録画中に通常点灯する緑色のLEDが点灯しなくなったことが示されました。恐ろしい!このデバイスでは、ジンバル自体も録画中でないときは下に傾くため、完全にステルスではありませんが、それでもあまり良い気分ではありません。 パッチ適用前後のLEDの挙動。 ASUS ROG Swift PG42UQ モニター GitHubリポジトリ - Claudeの処理時間1.2時間、私のプロンプト数13回 私のASUS ROG Swift PG42UQモニターは、時々「ピクセルクリーニング」を実行するように促すポップアップオーバーレイが表示されるのが煩わしかったため、実際には私が始めた場所でした。私はこのモニターでピクセルクリーニングを意図的に実行したことはなく、これからも実行しません。気にしていないし、永遠に消えてほしいと思っています。おそらく、それをオフにできるデバッグメニューがあるか、最悪の場合、ファームウェアのブランチをパッチすることになるでしょう。 Claudeは、ファームウェアに実質的に保護がないことを見つけました。2つのスロットを持つA/Bスキームと単純なチェックサムがありますが、最終的には好きなものを書き込むことができます。ファームウェアアップデートは、USB経由でブリッジされたI2Cバスで実行されます。 ピクセルクリーニングの警告は、無効にするネイティブな方法がなく、8時間実行すると常に表示されることが判明しました。まあ、それは仕方ないです。Claudeは、その機能を無効にする適切な領域を見つけました。まだ、変更されたファームウェアを書き込むほど勇気はありません。かなり高価なモニターなので、いつかそうするつもりです。 もう一つ興味深かったのは、DDC/CIインターフェイスの探索です。これは、ディスプレイケーブル自体を介して利用可能な制御チャネルであり、ホストが入力やその他の設定を変更できるようにします。ASUSはこれをWindowsユーティリティDisplayWidgetで提供していますが、Linuxではあまり役に立ちません。そのため、ハードウェアクロスヘアやズームオーバーレイ、FPSカウンター、カウントダウンタイマーなどのDDC/CI機能の一部を切り替えるシェルスクリプトができました。将来的には、これらのいくつかをホットキーに設定して簡単にアクセスできるようにするかもしれません。 Shure MV7 マイク GitHubリポジトリ - Claudeの処理時間4.2時間、私のプロンプト数32回 この時点では、デバイスを分解する実際のインセンティブは少なくなっており、もっぱら病的な好奇心だけです。私のマイク、Shure MV7はUSBで接続され、オンデバイスのデジタル音量コントロールなど、ある程度のスマートさを備えています。 このマイクのファームウェアは、WindowsソフトウェアMOTIV Mixの中に隠されていることが判明しました。そのため、ClaudeはWineにそれをインストールし、アップデートサーバーを見つけてダウンロードしました。私は最新版ではなかったので、Linuxからマイクをアップデートするためにこれを機能させることには、実際には合理的なインセンティブがありました。ファームウェアはDSPとMCUの両方のファームウェアを含んでおり、予想通り、正直言ってかなり退屈でした。ここでも、ファームウェアフラッシュ自体に実際のセキュリティはありません。 しかし、アップデートプロトコルは、すべてが実際にはプレーンテキストのコマンドシェルを実装するUSB HIDベンダークラスプロトコル上で実行されることを明らかにしました。48種類のコマンドがあります。HIDなので、ChromeのウェブページからWebHID経由でアクセスできます。そのため、Claudeにシェル用のWebインターフェイスを構築させました。ここには、数十個のDSPノブ、任意のメモリ読み書き、LED制御、そして認証が要求されたティアの名前との文字列比較のみである4段階のユーザー権限システムなど、さまざまな興味深い設定があります。su supはそのまま機能し、最上位ティアはタッチパネルを無効にできるため、デバイスでミュートできず、マイクが実際にミュートされているかどうかに関係なくミュートLEDを個別に駆動できます。これはウェブカメラのLEDトリックと同じで、マイクでも使えます。明らかに、そのUIを使用して何か愚かなことをすると、デバイスが壊れる可能性があることに注意してください。WebHIDシェルインターフェイス。左側のDSPノブはデバイス自体の設定です。右側のコンソールは、HID経由で通信するプレーンテキストコマンドシェルです。 Elgato Cam Link 4K ビデオキャプチャ GitHubリポジトリ - 1.5時間