この記事は、国際的に高名な賞金稼ぎ(バグバウンティハンター)とそのチームが、とある IoT デバイス攻略するために熱く戦った 3 年間の記録である。獲得した賞金総額は 12 万ドル。
なお本稿は CODE BLUE 2023 の注目セッションを当時の取材メモや撮影写真をもとに蔵出しでお届けするものである。いかにも CODE BLUE らしいセッションである。
● 賞金稼ぎのセオリー
挑戦したのはセキュリティ企業 DEVCORE のリサーチャーであるオレンジ・ツァイ氏。ツァイ氏は、Webアプリケーションの脆弱性のエキスパートであり、専門カンファレンスでの講演、CTF やバグバウンティコンテストでの入賞経験も豊富、「オレンジ」というファーストネームもよく知られている。
彼が今回挑んだのは IoT やハードウェアハッキングで名高い「Pwn2Own」だ。Webアプリケーションの脆弱性を研究するうち、より低レイヤのセキュリティに興味を持ち始めたことがきっかけで彼は Pwn2Own を知った。ハッキングの対象として選んだのは「Sonos One」という IoT ワイヤレススピーカーだ。なぜそれを選んだのか。
「どうせやるんなら僕は他人と違う題材をネタに選ぶ。Sonos のスピーカーのハッキングに成功したものはまだいない。いないということは賞金も高いということだ(ツァイ氏)」

なお「成功した者がいない」のは彼が Pwn2Own に挑戦を始めた 2020 年当時のことである。翌 2021 年にはハッキングに成功する者も現れている。だが、未踏製品ほど金脈(重大な脆弱性)が潜んでいるというのは一攫千金を狙うの賞金稼ぎのセオリーかもしれない。
ちなみに Pwn2Own の賞金は攻撃が成功するとおよそ 4 ~ 6 万ドル(日本円でおよそ 600 ~ 900 万円)。単なるバグの発見だけ(攻撃実証は失敗)にはじまり、下は 1 万ドルから上は 10 万ドルまで設定されている。10 年以上前の 2013年に TEAM of MBSD が 5 万ドルの賞金を獲得したことはかつて記事にした通りだ。
● 初年度の挑戦:自分で自分を褒めてやりたい
ターゲットは決まった。だが、最初の挑戦はタイミングが悪かったという。Pwn2Own のアナウンスは 7 月 28 日。申し込み期限は 11 月 2 日。ツァイ氏が Sonos のハッキングを開始したのが 10 月 15 日。期間はたった 2 週間。そんな短期間でどれだけハッキングができるのか? 思い立ったが吉日というが、その時点でそもそも Sonos のスピーカーハードウェアも持っていないという状況だった。物理デバイスなしでどうやって IoT 機器のハッキングを行えばいいのか? ハード前提のファジング、ファームウェアの解析などは当然できない。
手がかりは Webインターフェイスを持つ製品のデバッグモードと UPnP のための SOAP サービス群のみだったという。しかるべきアプリやサービスを利用すれば、Sonos スピーカーの再生やボリュームを操作することができる。製品のデバッグモードを解析しネットワーク障害向けデバッグツールも手に入れた。バウンティハンターは逆境でこそ磨かれる。しかし、Ping コマンドや nslookup など簡単な調査はできるものの、任意のコマンドを実行できるものではなかった。本人曰く「これでハッキングしてたんだから自分を褒めたい。同じツールでバグを発見した人がいたらビールをおごるよ」だそうだ。
最終的に UPnP のサービスを起動させるモジュール(Sonos Controller)を開発し、任意の mp3 の再生、ボリュームの操作などができるようになった。だがハッキングはこの程度で終わりではない。Pwn2Own で賞金を獲得するにはこんなスクリプトキディレベルでは話にならないからだ。Webセキュリティのエキスパートであるツァイ氏は、ハッキングした情報と Sonos Controller の技術で、本体ファームウェアのオンラインアップデートにマルウェアや任意のファイルを忍ばせるために Wget の手法が使えないか考えた。
ネット上にあがっていた Sonos のファームウェアを解析したが、最新のものはなかなか手ごわい。最終的に 2018 年にリリースされた Version 45.1 に binwalk(ファームウェアのアーカイバ)が使えることを発見した。エクスプロイトの糸口が見えたが、どうやってマルウェア・攻撃ファイルを読み込ませるか。SSRF や Wget はうまくいかなかった。ファームウェアの暗号化も RSA によって、ダウンロードファイルの偽装も SHA-256 によって阻まれた。
「しかたがないので、典型的な CTF よろしく、Sonosファームウェアのフォーマットをリバースエンジニアリングした。あ。もしハッシュ関数を解読できた人がいたら来年僕といっしょに Pwn2Own に出ようよ。賞金は折半でね(ツァイ氏)」
ペイロードには運よく発見したバッファーオーバーフローの脆弱性(これもバージョン依存だが)で攻撃を成立させた。
「まさにバッファーオーバーフローの種は尽きまじ、だね」
こうして、Sonosスピーカーの偽ファームウェアのアップデート手法を発見した。ローカル環境で実験はうまくいったが、肝心の競技ではなぜかうまく動作しなかった。
結局、最初の年の挑戦は失敗に終わった。だが 2 週間という限られた時間を考えると「よくやった方」だとする。得られた情報もすくなくない。課題は「C++ の解析スキルをもっと上げないと」だそうだ。
● 2 年目:準備万端、余裕のはずだったが…
2 年目の挑戦(2021 年)も同じ Sonosスピーカーを選んだ。
「だって、最初の年は成功してないじゃん。このまま終わるのは寝ざめが悪いだろう。それに Synactiv が DMA攻撃による Sonos のメモリダンプの方法を発表したんだよね。これで去年本番でうまくいかなかった理由がわかるかもしれない!」
極めてエンジニア、ハッカーらしい選択だ。Synactiv の発見は 3 月 9 日。2021 年の Pwn2Own のターゲット機器の発表は 8 月 11 日。今回は 9 月 3 日に正式な調査、ハッキングを開始したという。二度目の挑戦は 3 か月という時間を得ることができた。
まず、Synactiv の情報をもとに、USB3380 というハードウェア評価ボードを入手して Sonosスピーカーのファームウェアをダンプする段取りだった。だが、ネットを探しても USB3380 が売り切れで見つからない。ようやく台湾のショップで在庫を発見。DEVCORE は台湾の会社だから 24 時間以内の発送で無事に手に入れることができた。
ファームウェアがフルダンプできればリバースエンジニアリングし放題で今年の Pwn2Own は勝ったも同然、と彼が思ったかどうは不明だが、戦略の道筋が見えたとしても現実はそう簡単には運ばなかった。USB3380 は USBソフトウェア開発のためのキットである。USBインターフェイスの他に開発ターゲットデバイスとの接続に PCIe を利用する。入手できたのは miniPCIe 仕様のボードだ。
「miniPCIe のスロットなどはいまどき過去の遺物だ。周囲ではそんな PC やラップトップは見当たらない。運よく友人が古い ThinkPad を持っていることを発見して、借りて改造することにした。裏ブタを開けてワイヤレス WiFi カードを取り外して評価ボードをつないだよ(ツァイ氏)」
だが、ここでもトラブルが続発する。