世界を動かす技術を、日本語で。

私のスマート睡眠マスクはユーザーの脳波をオープンなMQTTブローカーに送信します

概要

  • Kickstarterで入手したスマートスリープマスクの技術的詳細
  • Bluetoothプロトコルのリバースエンジニアリング過程
  • Flutterアプリの解析によるプロトコル解明
  • MQTT経由で他人の脳波データ取得・EMS制御の危険性
  • セキュリティ上の重大な問題点と開発元への通知

Kickstarter製スマートスリープマスクのリバースエンジニアリング体験

  • Kickstarter で購入した中国製スマートスリープマスクの入手
  • EEG脳波計測、EMS(電気筋肉刺激)、バイブレーション、加熱、オーディオ機能搭載の高性能ハードウェア
  • 公式アプリの完成度が低く、Bluetooth切断も多発
  • Claude(Opus 4.6) によるBluetoothプロトコル解析依頼

Bluetoothプロトコル解析

  • 周囲の BLEデバイス35台 から当該マスクを特定・接続
  • 2つのデータチャネル(コマンド送信用、データストリーム用)を発見
  • 標準的なコマンド(Modbus、JSON、バイト列など)を100パターン以上送信も、 非標準プロトコル で応答なし

アプリケーション解析

  • Android APK を取得しjadxでデコンパイル
  • アプリが Flutter 製であることを確認、Dart→ARM64のネイティブコード化により通常のJava解析が困難
  • 9MBバイナリブロブ 内の文字列抽出(エラーメッセージ、URL、デバッグログ等)
    • 会社の MQTTブローカー用ハードコーディング認証情報
    • クラウドAPIエンドポイント
    • 15種類のコマンドビルダー関数名(バイブ、加熱、EMS等)
    • パケット構造を示すデバッグメッセージ(ヘッダー、方向バイト、コマンド種別、ペイロード、フッター)

コマンドバイト値の特定

  • blutter というFlutterバイナリ解析ツールを使用
  • 関数のアノテーションを読解し、 全15コマンドのバイト列 を直接取得

Webダッシュボードの構築

  • 6バイトのクエリパケット送信で、153バイトの詳細データを取得
    • モデル番号、ファームウェアバージョン、シリアル番号
    • 8chセンサー設定(EEG 250Hz、呼吸、3軸加速度、3軸ジャイロ)
    • バッテリー残量(83%)
  • バイブ、加熱、EMS、音楽の各機能を Webダッシュボード から制御可能に

MQTTサーバーの脆弱性発覚

  • アプリから抽出した 共通認証情報 でMQTTブローカーに接続
  • 全デバイス共通の認証情報 で他ユーザーのデータにもアクセス可能
  • 約25台のデバイスが同時接続
    • スリープマスク: リアルタイムEEG脳波データ 配信
    • 空気質モニター:温度、湿度、CO2
    • プレゼンスセンサー:部屋の在室検知
  • 他人のスリープマスクから REM睡眠・徐波睡眠の脳波データ を取得

EMS(電気筋肉刺激)の危険性

  • EMS制御も単なるコマンド送信で可能(モード、周波数、強度、持続時間)
  • 認証情報共通化のため、第三者が他人のマスクへEMS信号を送信可能

セキュリティ問題と対応

  • 製品名・会社名は非公開だが、 開発元には脆弱性を通知済み
  • KarpathyのDigital Hygiene投稿 の再読を推奨
  • リバースエンジニアリング作業は Claude(Opus 4.6) が約30分で自律的に完了

IoTデバイスのセキュリティ課題

  • IoT製品の認証情報共通化 による深刻なリスク
  • MQTT等の 標準プロトコル利用時のセキュリティ設計不備
  • 個人情報・生体データ漏洩 の危険性
  • 遠隔からのデバイス制御 による身体的リスク(EMS等)

今後の注意点・推奨事項

  • IoTデバイス購入時のセキュリティ確認 の重要性
  • 認証情報の個別化・アクセス制御 の徹底
  • 開発者・利用者ともに デジタル衛生意識 の向上
  • 脆弱性発見時の適切な開発元通知 と情報共有

Hackerたちの意見

だからこそ、接続デバイスの監査トレイルが必要なんだよね。ユーザーはどこにどんなデータが送られているのか全然見えないし。脳波データがユーザーの知らないうちにオープンなブローカーに送信されるのは、単なるセキュリティバグじゃなくて、ガバナンスの失敗だよ。

これはガバナンスの失敗だね。最初に接続されたデバイスを買ったのもユーザーの失敗と言える。閉じられたソースの専用アプリが必要なの? 交換不可能なOS? なら、買わない方がいいよ。

プライバシーを重視した製品ラインと、政府の規制が全くない製品ラインの2つを用意すべきだと思う。前者は多分2倍の値段になるけど、後者は安くて市場投入も早い。少数の過剰に警戒心の強い人たちが進歩や最新技術へのアクセスを妨げるのは嫌だな。興味がある人がゼロのオープンなYouTubeチャンネルで自分の脳波を発信するのは全然構わないよ。

プロンプトの履歴を見てみたいな。こういう作業にどれだけ人間の介入や指導が必要なのか、いつも気になるんだよね。記事を読むと、まるで「俺がClaudeにプロンプトを送ったら、こんな結果が出てきた」って感じになるからさ。例えば、「Claudeはアプリに目をつけて、AndroidのAPKを取ってきて、jadxでデコンパイルした」って。これって全部自動でやったの?それとも著者がちょっと手を加えたりしたのかな?

正直、あんまり介入はないよ。ちょっと取り戻して投稿してみるね。

こういうことを示すライブストリームが本当に少ないよね。もし無援のAI作業がこんなにあるなら、みんな配信すると思うんだけど。

Kickstarterには、マーケットに出るためにあらゆるショートカットを使うプロジェクトがたくさんあるよね。いくつかのKickstarterプロジェクトでいい成功を収めたこともあるけど、どのプロジェクトを支援するかはすごく選んでる。大抵の場合、チームが手に負えない状況にあるか、お金が入った後で詳細を考えるつもりだってわかるんだよね。知ってる工業デザイナーたちが自分のKickstarterを立ち上げようとするのが流行ってた時期もあったけど、彼らはエンジニアリングはお金を得た後に最低入札者に外注できる商品だと思ってた。製品デザインやマーケティング(彼らの専門)が本当の価値だってね。彼らのプロジェクトは全部失敗するか、持っていたお金よりも多くの費用がかかってた。エンジニアリングが思ったよりも難しかったから。今、LLMがソフトウェアやファームウェアの部分が基本的に無料だって印象を与えているから、また同じようなことが起こりそうだね。以前はソフトウェアが難しいから棚上げされていたプロジェクトのアイデアが、今は「Claudeにプロンプトを送れば製品が動くようになる」って思っている人たちから再評価されているんだ。

今のところ、最も安いエンジニアリング会社よりも、LLMがもっと安全なものを考え出してくれると信じてる。

脳波がサーバーに送られることについて文句言ってみたら?俺は神経科学者だから、EEGデータが心を読んでるなんて言わないけど、脳データのプライバシーがないのはとても悪い前例だよ。

こんなのが研究にどれだけ役立つんだろう?俺は神経科学者じゃないから全然わからないけど、思いつくのはそれくらいかな。

健康データに関しては、データプライバシー法が既に良い前例を持ってるんじゃないかな?

EEGから覚醒レベルを読み取ることができるから、泥棒には役立つかもね。遅波状態のデバイスは理想的に見える。

脳波を収集するために人が並ぶことになるだろうね。メールを送るのがちょっと楽になるからとか、そんなくだらない理由で。

この人のプライバシーがないのは、今寝てるデータが悪影響を及ぼす理由もあるよね。考えてみると、データプライバシーが悪いと何か悪い影響が出るんじゃないかって思い始めてる。

数百万人が自発的にGmailを使ってるけど、これはDHSとかに対して、FAA702の下で令状なしにEEGの出力よりもずっと有用なデータを提供してるんだよね。「隠すことがない」人たちが自分のEEGデータを公開することに興味を持つと思う?

IoTのSはセキュリティのSだってことを忘れないで。俺は非個人(と医療)データのために、オープンMQTTを世界に展開したことがある。クラウドプロバイダーから「やめてくれ」って言われたのは、リレーDDoS攻撃に使われる可能性があるからだった。たとえ彼らが何とか認証や承認を持っていたとしても、その睡眠マスク会社を信じることはできないな。

IoTにSはないんじゃないかな?

この人、インターネット接続の睡眠マスクを買ったから、いろんなデータを集めてたのは驚くことじゃないし、セキュリティが甘いのも当然だよね(IoTはセキュリティの悪夢だってみんな思ってるはず)。でも、驚いたのは、その会社が帯域幅や電力の節約を気にしてMQTTを使う手間をかけたこと。多分、最適な選択ではなかったし、セキュリティも考慮されてなかったけど、人々の個人データを吸い上げながら効率を追求しようとしたのには本当に感心したよ。

一方で、みんなのデータをストリーミングして、利点を打ち消してるよね。

知らない人の脳波を読み取って、寝ている間に電気的な刺激を送る能力を持つことになるとは思ってもみなかった。でも、こうなっちゃったね。まるでフィリップ・K・ディックの小説みたい。

明らかに倫理的にはダメだけど、これってSFの共有夢装置を作れる力があるように聞こえる。人の脳波を読み取って、その信号に基づいて他の人のマスクに信号を送るとか。あるいは、みんなに同時に信号を送って、世界中の人が同時に夢に変化を感じるとか。実際にやるべきじゃないけど、SF小説や短編小説のインスピレーションになりそう。

インセプション

これってデバイスを買う理由になる気がするんだけど?クラウドに送るデータを全部ブロックして、ローカルでだけ動作させたいな。でもMQTTのブロードキャストを使えば、Home Assistantでローカルだけの統合ができる。実際のリスクは何なんだろう?泥棒が寝てるのを見て、家にいないのを待つんじゃなくて?自分はMQTTの自動化を実装したことはないけど、暗号化する方法ってあるのかな?それがあればいいな。

どのMQTTエンドポイントに向かっているかを制御できないってこと?デバイスのサーバーに行くだけ?ファームウェアを改造できるなら、ローカルのMQTTに送るようにプログラムできるかも。

共有されたハードコーディングされた認証情報のパターンは、IoTだけの問題じゃないよ。自分はAWSのセキュリティで働いてるけど、同じことを常に見てる。チームがアプリケーションにAWSのアクセスキーをハードコーディングして、すべての環境で共有して、誰もバイナリに対して文字列を実行しないことを願ってる。論理は同じ、怠慢も同じ、結果も同じ。違うのは、睡眠マスクの場合は誰かがあなたの脳波を読むこと。クラウドの認証情報の場合は、誰かが顧客データベースを読むこと。デバイスごとや環境ごとの認証情報のプロビジョニングは、もう難しくない。AWSにはIAMロールがあって、IoTにはデバイス証明書、MQTTにはクライアント証明書とトピックACLがある。ツールは揃ってるのに、企業はキー管理が組み立てラインにステップを追加するから、誰もv1のセキュリティアーキテクチャに時間を割かないんだよね。

誰もv1のセキュリティアーキテクチャに時間を割いてないんだよね。 それがインターネットがこんなに不安定な理由なんだ。 どこかの段階で「セキュリティのために設計しようか?」って聞かれても、「いや、印象を良くしたりキャリアを進めるために、資金を集めるための小技が必要だし、セキュリティは難しいから、実際に何をしてるのかも分からないし、ルールに従わないとクビになるよ」って返されるんだ。