1 ポイント 投稿者 GN⁺ 2025-01-18 | 1件のコメント | WhatsAppで共有
  • 中国で購入した Ethernet-to-USBアダプターにマルウェアが内蔵されているという主張が広まったが、確認された手がかりは古いRJ45-to-USBチップのドライバー配布方式に近いものだった
  • CrowdStrike Falconスキャンの「ロシア語要素」は、Igor Pavlovによる 7-Zip自己解凍EXE の特徴と一致し、ファイル内容もCoreChips ShenzhenのSR9900向け公開ドライバーと一致しているように見えた
  • SR9900は情報がほとんどないチップだが、Realtek RTL8152B の直接的なクローンと見られ、USB 2.0・100BASE-TXデバイスが自前のストレージからドライバーを提供していたWindows 7前後の文脈と合っている
  • PCB上の25x40型 512 kB SPIフラッシュ はパケット窃取用ストレージではなく、製造ツールがISO 9660イメージとWindowsドライバーをそのまま書き込み、仮想CD-ROMのように使う構成であることが確認された
  • SR9900内部のUSB・Ethernetマイクロコントローラーのコードは未確認の領域として残るが、今回の事例だけで「怪しいハードウェア」を即座に悪性と断定する根拠は乏しい

サプライチェーン悪性ハードウェア疑惑の出発点

  • 情報セキュリティ分野では 大規模なサプライチェーン・サボタージュ の主張がよく登場するが、実際にはその多くが誤りであるという前提から出発する
    • こうした攻撃が不可能だからではなく、実行が複雑で時間がかかり、リスクも高いからである
    • 現実的には、認証情報を盗む、あるいは悪性ファイルをダウンロードさせる手法のほうが単純である
  • ある若い創業者が、中国で購入した Ethernet-to-USBアダプター にマルウェアが事前搭載されていたとソーシャルメディアで主張し、議論が拡大した
    • その主張には、仮想マシン回避、キー入力のキャプチャ、ロシア語要素の使用といった表現が含まれていた
    • 関連投稿は数百万回閲覧されたが、具体的な技術情報は不明確だった

公開スキャンとドライバーファイルの確認

  • 投稿者が共有した CrowdStrike Falconスキャンレポート は曖昧で、決定的な証拠というより 混乱を招く手がかり に近かった
  • 解析対象のバイナリは、Igor Pavlovが作成したオープンソース圧縮プログラム 7-Zip ベースの自己解凍EXEだった
    • ロシア語要素は、作者の国籍に由来する痕跡と見ることができる
    • ドライバーをインストールする自己解凍アーカイブであるという点が、疑わしく見えた動作の大半を説明している
  • アーカイブの内容は、CoreChips Shenzhenが作成したRJ45-to-USBチップ向けの 署名済み公開ドライバー 2.0.7.0 と一致しているように見えた
    • 同梱の .inf ファイルでは、同社はCorechip Semiconductorという名称も使用している

SR9900チップと旧式設計の文脈

  • ドライバーは SR9900 というチップを参照している
    • チップとメーカーに関する公開情報はほとんどない
    • 調査の結果、SR9900は Realtek RTL8152B の直接的なクローンと見られた
  • 英語の製品紹介には「SR」が「Supereal」を意味することを示唆する記述があり、Superealというブランド名は、過去に業界で問題を起こした 偽FTDI FT232RLチップ の文脈でも登場している
  • この系譜が重要なのは、元になったRealtekの設計が 2013年のデータシート に基づく古い設計だからである
    • デバイスは100BASE-TXとUSB 2.0をサポートする
    • Windows 7時代の周辺機器の慣行とつながっている
  • 当時はCD-ROMドライブが姿を消しつつあった一方で、すべてのコンピューターが常時オンラインだと仮定するのも難しかった
    • 一部の周辺機器が、自前のドライバーを格納した 大容量記憶装置 として自らを露出する方式は、当時の文脈では自然だった
    • セキュリティの観点でも、ドライバーファイルを渡す他の一時的な方法と比べて、特別に良いとも悪いとも言いにくい

SPIフラッシュの実際の用途

  • 分解写真には、SR9900の隣に25x40型 シリアルフラッシュIC が実装された単純なPCBが写っていた
    • 512 kBフラッシュがファームウェア用なのか、窃取したパケットの保存場所なのかが核心的な疑問だった
  • SR9900とRTL8152Bの文書は、付随するフラッシュICの目的を十分に説明しておらず、回路図画像検索でも元のRealtekチップのシリアルピンに何かが接続された設計は見つからなかった
  • SPIバス自体は単純である
    • ホストが任意の速度でクロック信号を提供する
    • 各クロックの立ち上がりエッジで、周辺デバイスは「serial in」の1ビットを読み、ホストは「serial out」の1ビットを読む
    • ハンドシェイク、ヘッダー、パリティビット、フロー制御はない
  • 一般的なシリアルフラッシュの読み出しは、READコマンド 0x03 と3バイトのアドレスを送った後、データを連続して受け取る構造である
    • そのため、実際のドングルを購入してメモリ内容をダンプする方法も可能だった
  • CoreChipsのWebサイトで中国語原文を見つけて検索した末に、「SR9900 series chip Windows system mass production tool」に関する古い中国語フォーラム投稿と、パスワード付き・有料ダウンロードのアーカイブを見つけた
    • 「SR9900(A)設計資料1018.rar」を2.99ドルで入手して確認した
    • アーカイブには、レトロなUIの SR9900Efuse 製造ツールが含まれていた
  • 同梱されていた168 kBの ISO 9660ファイルシステムイメージ には、自己解凍形式のWindowsドライバーが入っていた
    • 製造ツールは .iso ファイルをSPIフラッシュにそのまま書き込む
    • チップは物理CD-ROMを置き換える「ソフトウェア定義」CD-ROMのように動作する
    • ディスクイメージは こちら から入手でき、パスワードは rj45 である
  • CD-ROMイメージは「ULTRAISO V9.3 CD & DVD CREATOR, (C) EZB SYSTEMS」で作成されていた
    • UltraISOはWindows XP時代を思わせるツールとして紹介されている
    • 実行条件としてIntel Pentium 166MHz以上が必要である

任意の仮想CD-ROM機能と残る限界

  • メインアーカイブには「SR9900(A)設計前必読.docx」という文書も含まれていた
    • 自動翻訳された文言によると、SR9900をUSBネットワークカードとして使用する際、Windowsドライバーのインストール用 仮想光学ドライブ としてSPIを使える
    • SPIフラッシュには、Windows向けSR9900ドライバーをあらかじめ焼き込むことができる
    • フラッシュチップの使用は任意であると明記されていた
  • 今回の事例で奇妙に見えた点は、悪性動作ではなく 旧式周辺機器のドライバー配布方式 に由来するものとして整理できる
    • ハードウェア研究室がなくても、公開資料の検索と根気だけで核心的な疑問を解消できた
  • 完全には確認していない領域は、SR9900 IC内部の2つの小さなマイクロコントローラーコアである
    • 内部にはUSBとEthernetのコアがあり、それぞれ内部コードを実行する
    • チップメーカーが関与していると仮定するなら、内部を覗くことは可能かもしれない
    • RealtekはRTL8152向けの オープンソースLinuxドライバー を提供しており、このドライバーはメモリ上のファームウェアにパッチを当てる
    • 見た限りでは、暗号化や署名が適用されているようには見えなかった
  • 悪性USBドングルの可能性を完全に排除することはできない
    • イランの核開発プログラムの科学者なら心配すべきだという表現が出ている
    • 戦略的に重要な民間企業のCISOであれば、一定の注意が必要である
    • 家庭用ネットワーク用途では、今回の事例だけで差し迫った脅威と見る根拠は乏しい

1件のコメント

 
GN⁺ 2025-01-18
Hacker News の意見
  • この表現は誤解を招く。問題だったのは偽チップそのものというより、偽物を検出すると FTDI 公式ドライバが動作中だったハードウェアの PID を 0000 に変更し、以後認識されないようにしてしまったことだった: http://www.rei-labs.net/changing-ftdi-pid/

    • 一部は正常に動作していたが、自分が持っていたものの中には CBUS ピンで妙な挙動をするものもあった
    • 偽チップは不確実性を生み、さまざまな種類の機器に広がって汚染したという点でも厄介だった。こっそり紛れ込んだ 偽造部品は受け入れがたい
  • 「Intel Pentium 166MHz 以上が必要」という文言で笑った。記事も面白いし、「頭のいい人が退屈して、常識的には明白な結論を最後まで掘り下げるのだが、それを証明するには意外な 創造性と根気が必要になる」ジャンルが本当に好きだ

    • メモリチップの内容をダンプしようと Dark Web(amazon.com) に行ってドングルを1つ買う準備ができていたという部分も外せない
    • 真実は複雑で、高くつき、不便だという好例だ。証拠もなく悪い計画を持つ邪悪な国家レベルの行為者を想定するほうが、この記事のように茂みをかき分けて入っていくよりずっと簡単で、時間や専門性の面でもずっと安上がりだ
      自分は被害者で、陰謀を暴いたのだと言うほうが、これが単にエンジニアリングでよくある 継ぎはぎ的な成果物だったと受け入れるより楽でもある。筆者に拍手を送りたい
    • 面白くもあるが、こうした作業は元記事の根底にある 外国人嫌悪を露呈させるという点で重要だと思う。回路基板にフラッシュチップが1つある? なんてことだ、中国のスパイウェアに違いない!
      中国のスパイウェアが問題ではないという意味ではない。だが、それを見分ける基本的な技術力がないなら「中国! 中国! 中国!」と騒ぎ回るべきではない。政治家がフェイクニュースを拾い上げ、愚かな政策の口実にするやり方であり、社会に有害だ
  • この「悪性」ドングルのツイートを見た瞬間、以前自分が扱ったものとまったく同じだと分かった。悪性というより、ただ面倒な代物だ
    https://blog.brixit.nl/making-a-usb-ethernet-adapter-work-sr...
    自分の場合は CD ドライブとして見えないようにするため SPI フラッシュモジュールを無効化したが、この記事の筆者は SPI がオプションだという資料まで見つけていた。面白いことに、この記事はいまやリフラッシュして本物の 悪性 RJ45 ドングルを作るためのツールまで提供することになっている

    • フラッシュチップ写真の左上にある U3 は何が起きていたのだろう?
      3ピン SOT23 パッケージ用のダイオードフットプリントを入れておいて、特殊部品の在庫がなかったため SOD323 ダイオードを2本のピンの間に30度ほど傾けて取り付けたように見える
    • 皮肉だ。セキュリティ問題の大半は、善意でハードウェアとソフトウェアを分解し、「ハッキング」方法を説明する人たちが作っているのだと確信している
      意図しない結果だとすれば、そもそもせいぜい 隠蔽によるセキュリティでしかなく、人々がそれに依存しないよう明らかにされるべきだ
    • 偽の CD に autorun.inf を追加できるのだろうか?
    • CS と S0 をショートすると、なぜ動作しなくなるのだろう?
  • USB 機器がストレージのように偽装して自前のドライバを提供する方式はかなり好きだ。最近の「正しい」やり方は Microsoft のサーバにあれこれ置いておき、挿されたら必要なものをダウンロードさせることなのだろうが、手動でドライバをインストールしなければならないものを十分に経験してきたので、それが見た目ほど簡単ではないことは分かっている。例えば私は ベンダー別 ADB ドライバをダウンロードしなければならないことが非常に多い
    いずれにせよ、周辺機器が初期設定を助けてくれるのは賢いやり方で、ドライバが機器の中に入っていれば、正規のダウンロード元を探し回るより少し楽になる

    • そもそも自前のドライバが必要ない機器のほうが良い。特殊なドライバが必要なものもあるだろうが、USB メモリやマウスのようなものは標準ドライバでそのまま動作し、必要ならインターネットからアップデートを受け取るのが筋だ
    • Linux でそのまま動作するほうがありがたい。実際、たいていはそうなっており、今日の Linux は最高の プラグアンドプレイ OS だと思う
      ただし複数の動作モードは、4G/LTE USB ドングルのような機器の設定を難しくした。USB ストレージとして見えたり、何らかの種類のシリアルデバイスとして見えたり、CDC-ACM モデムデバイスのようなものとして見えたりし、正しいモードに切り替えるにはツールとベンダー別の AT コマンドを組み合わせる必要がある。挿すだけですぐ本来の役割を果たす単純な機器に戻ってほしい
    • この場合はもう少し筋が通る。RJ45 ドングルのドライバをインストールしなければならない状況なら、たいてい ネットワーク接続がない可能性が高いからだ
    • NuBus と似たようなものだろうか? 記憶が正しければ、初期の Macintosh 用カードは通常、最低限の基本ドライバを ROM に持っていて、Forth や 680x0 アセンブリで書かれていた
  • 現在の最先端がどうなっているかは知らないが、長い間、USB 周辺機器 IC に小さなフラッシュを付けて VID/PID やその他の USB 設定情報を保存することは一般的だった。そうすれば挿したときにデバイスが正しく列挙され、適切なドライバに関連付けられるからだ。設計時点によっては、サプライチェーンで簡単に手に入る最小容量が 512kB だった可能性もあり、数十バイトを保存するためにそういうチップを使うのも不思議ではなかった
    ISO 部分は少し奇妙だが、正直に言えば、大容量 USB ストレージを制限する企業 IT セキュリティポリシーを回避する創造的な方法だ。光学ドライブは別のデバイスクラスを使うため、ほとんどの制限を回避できる可能性があり、光学ドライブとネットワークアダプタが結合した複合デバイスとして列挙されれば、「USB ドライブ」がロックされたコンピュータでも自前のドライバをインストールできそうだ

    • しばらくの間、Windows は USB メモリよりもディスクの 自動実行を簡単に実行していた。そのディスクがエミュレートされた USB ディスクドライブ内にあってもそうだった
  • 奇妙なのは、フラッシュは追加してコストをかけているのに 磁気絶縁部品は省いている点だ。直列コンデンサだけがあり、ジャックも小さいので統合磁気部品が入っているようには見えず、直列コンデンサを一緒に入れるのも筋が通らない

    • わあ、よく見ている。PCB は磁気部品か直列コンデンサのどちらかを入れられるように設計されていて、コンデンサ側は DNP 扱いにされるべきだったように見える
      自分が買った USB Ethernet ドングルに磁気絶縁部品がないと知ったら、本当に腹が立つと思う
  • 「悪意ある」USB Ethernet ドングルがあるのかと言えば、当然ある。ただし、この品物はそれではない
    https://hak5.org/products/lan-turtle

    • 記事でもこの点は明示的に認めている。悪意あるハードウェアは情報機関と民間のペネトレーションテスターの双方が使ってきた前例が多く、10年ほど前には筆者自身も仕事用に悪意あるプラズマボールを作ったという。ここで重要な問いは、悪意ある RJ45-USB アダプターを作れるかではなく、今回の品物が本当に「中国がまたやった」という事例なのかだった
    • 悪意ある Ethernet パッチケーブルも外せない: https://imgur.com/Gpgj7w7
  • RJ45 厳格派の立場では、これは 8P8C と呼ぶべき。では失礼

    • コネクターを RJ45 と呼ぶのはよいが、この品物を「RJ45 ドングル」と呼ばれるとまぶたがピクつく。これは Ethernet ドングルである。RJ45 はほかにもさまざまな用途に使える
      たとえば、多くのネットワーク機器のコンソールポート用に、USB を RS232 シリアルへ変換する「RJ45 ドングル」も見たことがある
    • 今日知った。このコネクターを25年ほど使ってきたのに、8P8C と呼ぶのは初めて聞いた。昔 Amiga 同士を接続するときに同軸ケーブルを使ったように、Ethernet が別の物理層も使っていたことは知っていたが、今日になってようやく 8P8C を知った
    • Network+ を勉強した人は、RJ45 が言及されるたびにこのコメントを付けるべきか悩むようになる気がする
    • 出ていかずに残って、これからも教え続けるべき。重要なことだから。両者は双方向に置き換えて使える概念ではないため
    • RJ31X や RJ38X もある。どちらもキーなし構成の 8P8C モジュラーコネクターを使っていた
  • USB-1000BASE-T、最近では 2.5GBaseT ドングル全般で性能を気にする人なら、USB デバイスであることと PCI Express デバイスであることの違いを知っておくとよい
    最新の Linux カーネルを使うノートPCにホットプラグしたあと、sudo lsusb -vsudo lspci -v のどちらに表示されるかを見ればよい
    ネイティブ PCIe デバイスははるかに高い性能を出し、2.5GBASE-T のワイヤースピードまで可能で、USB 上の Thunderbolt 実装を通じてホストと通信する。USB 専用デバイスもそれなりに動作はするが、安いのには理由がある。もちろん低価格ノートPCには Thunderbolt 実装自体がない場合もあるので、それも考慮すべき

    • 2.5GBaseT だけではない。私は [1] の 10GBase-T Thunderbolt ドングルを持っている。一般的なドングルより少し大きく、内蔵ケーブルの代わりに USB-C メスポートがあり、温かくはなる
      それでも基本的にはドングルで、Mac で iperf3 を使うと 9.4Gbit/s が出る。当然 PCIe デバイスとして表示される
      [1] https://www.amazon.com/gp/product/B0DHSWSSBY
    • USB 方式がなぜ劣るのか、詳しく説明してもらえるだろうか。Wikipedia によると 2008年の USB 3.0 でも 5Gbit/s に到達できるので、素朴に考えると 2.5GbE のワイヤースピードは簡単に出るように思える
    • Realtek RTL8156、つまり USB 2.5G Ethernet は高速で非常に安定している。サーバー用途にも問題なく、i225 よりこちらを選ぶ
    • Thunderbolt/USB4 でなければ、USB 経由の PCIe はないのでは? ほかに何かあるのだろうか?
      USB ポートしかなく性能を気にするなら、より大きな違いは USB Ethernet デバイスが CDC-NCM を実装しているか、それとも CDC-ECM だけを実装しているかだろう。CDC-ECM はフレームを1つずつドライバーへ送り、ドライバーが1つずつ確認・処理しなければならないため CPU 作業が多く発生する一方、より新しい CDC-NCM はフレームをまとめて送る
      私のノートPCでは 1Gbit ECM ドングルでもギガビット速度は出るが CPU コア1つを100%使い、1Gbit NCM ドングルでは CPU 使用率がほとんどない
    • 誤って PCIe 方式のドングルを買ったら、自分が接続するどの USB ポートでも動作しない気がする。私の理解では USB ポートしかないから。あるいは通常は USB デバイスにフォールバックして動作するのだろうか?
  • Ethernet ポートで有害な接続を作るのは極めて難しいが、USB ポートで有害な接続を作るのは非常に簡単だ。ありのままに呼ぶべき。これは Ethernet ソケットも付いた 悪意ある USB ドングルである