Coway の空気清浄機をリバースエンジニアリングしてクラウド接続を回避する

2026/11/13 7:03

Coway の空気清浄機をリバースエンジニアリングしてクラウド接続を回避する

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

Coway 空気清浄機の制御手法の進化は、不安定なクラウドベースのハッキングから、Home Assistant を使用した堅牢かつローカル限定のソリューションへ移行しました。初期の統合では、Coway の IoCare アプリをリバースエンジニアリングし、Raspberry Pi アクセスポイントを用いたマン・イン・ザ・ミドル(MITM)プロキシ構成を利用しました。この初期アプローチは、弱い eMudhra ルート証明書を利用して Amazon のルート CA を差し替える HTTP 要求の傍受に依存しており、サーバーのダウン時間、SSL の変更、Coway によるアカウントBANなどの理由で信頼性の問題を抱えていました。重要な転換点は、Bluetooth キャラクターISTIC ス通过へのリバースエンジニアリングにより、Wi-Fi プロビジョニングが暗号化されたペイロードを使用していることが明らかになったことです。Android アプリのデコンパイルを AI に活用してこの発見を加速させた結果、設定時の Bluetooth 構成ペイロードにカスタムサーバー認証情報を直接埋め込むことが可能となりました。この手法は、永続的な外部プロキシまたはクラウドインフラストラクチャの必要性を排除し、Apple HomeKit などのスマートホームエコシステムとのシームレスな統合を可能にする直接的なローカル Wi-Fi 通信を実現します。加えて、このセキュリティ分析は、埋め込まれたルート証明書が利用可能な広範な脆弱性を明らかにしており、これはメーカーに対してプロビジョニングプロトコルの更新およびデバイスセキュリティ基準の強化を促す可能性があります。

本文

空気清浄機 Coway Airmega を Home Assistant で完全制御:MitM と Bluetooth プロトコルの逆解から自走サーバーへ

2017 年、西海岸の激しい野火により空気が悪化しました。断熱材も気密性も不足する家屋で、煤(すみ)窒息を避けるため多くの人が空気清浄機を購入しました。特に不動の名物製品である Coway Airmega は、高価な箱型ファンに HEPA フィルターとセンサーが搭載された実用的なデバイスでした。

妻の「夜間のホワイトノイズ」と私の「睡眠中の必要性」を経て、このデバイスは家庭必需品となりつつありました。スマート照明と連携させるためには、旧モデルでは Wi-Fi 接続の欠落が障壁となりました。現在は廃盤となった Coway Airmega IconS(Wi-Fi 接続対応)を購入し、Apple Home との連携を試みました。

既存の連携アプローチとその限界

1. Coway クラウド依存による脆弱性

Coway の公式 iPhone アプリはクラシックな IoT アプリですが、起動が遅く認証が煩雑です。これをリバースエンジニアリングして Home Assistant 統合を作成し、クラウド経由での制御を実現しました。

動作フロー:

graph LR
A[Home Assistant] -->|IoCare 連携 | B[Coway IoCare クラウド]
B -->|ステータス・コマンド | C[Airmega IconS]
D[Apple Home] -->|「グッドナイト」ボタン | A

しかし、このアプローチには以下の致命的な欠点があります。

  • サービスの不安定さ: Coway のサーバーが年 1〜2 回ダウンすることがあり、遠隔制御不可になります。
  • 統合の破損リスク:
    • コミュニティと長期的な議論を経て許可されたアクセス制限。
    • アプリリニューアルに伴うサービス名変更(IoCare → IoCare+)。
    • HTML レイアウトの細かな変更によるスクリピング失敗。
    • アカウント凍結リスク。
  • サービスの存続不確実性: 将来的に利用課金化または終了される可能性が高く、既に廃盤のモデルは対応できないでしょう。

突破口:中間者攻撃(MitM)の自動化

Coway のクラウドから脱出し、独自のサーバーで制御する道を探りました。

1. 技術的障壁と変化

完全な MitM(中間者攻撃)環境構築には、隔離された Wi-Fi ネットワークへの接続やルーター設定の変更など、多くの手間がかかります。しかし、状況に変化がありました。

  • セキュリティインシデント: eMudhra という証明書発行機関の秘密鍵が弱かったため、ルート CA が入手可能になりました(2026 年 10 月の事例)。これにより MitM で SSL 検証を通過させやすくなりました。
  • AI の活用: LLM(大規模言語モデル)を活用し、MitM 環境のセットアップやファンの内部構造調査を自動化しました。

2. Raspberry Pi と mitmproxy によるトラフィック傍受

空気清浄機とインターネット間に Raspberry Pi を挟み込み、

mitmproxy
で通信の中継・復号化を行いました。

ネットワーク構成:

  1. 空気清浄機(Wi-Fi) ↔️
    Raspberry Pi
    (Wi-Fi アクセスポイントとして隔離ネットを構築)
  2. Pi のトラフィック →
    mitmproxy
    で中継・ログ記録
  3. mitmproxy
    ↔️ ノート PC(イーサネット経由でブリッジ)

nftables ルールの設定例: Pi 上で masquerade と redirect ルールを設定し、HTTP/HTTPS を

mitmproxy
(ポート 8080) へ前方転送します。

sudo nft -a list ruleset table inet mitmproxy_ap { # ハンドル 8
    set client_interfaces { # ハンドル 4
        type ifname
        elements = { "wlan0" }
    }

    chain prerouting { # ハンドル 1
        type nat hook prerouting priority dstnat; policy accept;
        meta nfproto ipv4 iifname @client_interfaces tcp dport { 80, 443 } counter packets 2 bytes 120 redirect to :8080 # ハンドル 6
    }
    # ... (他のチェーン略)
}

eMudhra 証明書の自動利用: 標準パッケージの

mitmproxy
にビルトインオプション
--emudhra-old
を使用し、旧 eMudhra ルート CA を自動的にトラフィック傍受に活用します。

mitmweb \
  --mode transparent \
  --showhost \
  --listen-host 0.0.0.0 \
  --listen-port 8080 \
  --web-host 127.0.0.1 \
  --web-port 8081 \
  --set web_open_browser=false \
  --emudhra-old

3. 仮説の検証:ルート CA の動的ダウンロード

アプリが「接続失敗」を報じても、隔離ネットに接続していることが確認できました。分析の結果、ファンは平文 HTTPで Amazon のルート CA を読み込んでいることを発見しました。

結論: デバイスは組み込みの固定ルート証明書を持っていないため、外部から公開されている証明書をダウンロードして検証しています。

この仮説を検証し、公開証明書を読み込む場所を

mitmproxy
が生成する自身の CA で差し替えました。

def response(flow: http.HTTPFlow) -> None:
    if (
        flow.client_conn.peername[0] == "10.42.0.93" # デバイス IP
        and flow.request.scheme == "http"
        and flow.request.method == "GET"
        and flow.request.pretty_host == "rootca-fs.iocareus.com.s3.ap-northeast-2.amazonaws.com"
        and flow.request.path.split("?", 1)[0] == "/AmazonRootCA1.pem"
    ):
        certificate = Path("/var/lib/mitmproxy-ap/mitmproxy-ca-cert.pem").read_bytes()
        flow.response = http.Response.make(
            200,
            certificate,
            {
                "Content-Type": "application/x-pem-file",
                "Cache-Control": "no-store",
            },
        )

この変更により、ファンは新しい CA を信頼し、残りのトラフィックを

mitmproxy
が傍受・中継できるようになりました。クラウドサービスへの接続が不要となりました。

4. MQTT プロトコルの発見と独自サーバーの構築

コマンド実行時の通信を解析すると、ポート 8883 で TLS over MQTT のトラフィックが確認できました。 API レスポンスから以下のような情報を取得し、キーとサーバー位置を特定しました。

{
    "header": { "success": true, "result": "S1000" },
    "payload": {
        "macAddr": "<redacted>",
        "host": "a29vouc2qruduj-ats.iot.ap-northeast-2.amazonaws.com",
        "port": 8883,
        "caUrl": "http://rootca-fs.iocareus.com.s3...",
        "certSvrUrl": "https://icert-fs.iocareus.com/<redacted>..."
    }
}

成果:

  • ファンが MQTT サーバーに接続するためのキーとサーバーアドレスを独自に生成・制御可能になりました。
  • mitmproxy
    のプラグインで応答を操作し、独自キーを注入することで、MQTT プロトコル自体のプロキシ化も実現します。

Bluetooth 経由でのプロビジョニングと完全脱獄

Coway アプリでは初期設定(プロビジョニング)が Bluetooth を通じて行われます。ここでも独自のサーバーへの転換を目指しました。

Android アプリのデコンパイルによる解析

従来のデコンパイルやオブフスケーションへの対処に加え、Android ブルートゥースデバッグログを AI に解析させることで、プロトコルを再構築しました。

この調査から、プロビジョニングの詳細な手順が明らかになりました。

  1. MAC アドレス取得: キャラクター
    FFA0
    を通じてデバイスの識別情報を Bluetooth で読み取る。
  2. 暗号化キー設定: 特性
    FFA2
    に 20 文字のランダム ASCII キーを書き込む。
    P001 + プロトobuf { command: 1, key: Base64(random_letters) }
    
  3. AES キー生成: キーと MAC アドレス(上段 12 文字)を連結して AES キーを構築。
  4. 構成ペイロードの作成・暗号化: JSON ペイロードをプロトobuf で包装し、PKCS#7 でパディング後、AES で暗号化する。
    {
      "cmd": 2,
      "ssid": "Example Wi-Fi",
      "pwd": "example-wifi-password",
      "bssid": "AABBCCDDEEFF",
      "macAddr": "112233445566",
      "caUrl": "http://192.0.2.1:8080/ca.pem",
      "certSvrUrl": "https://192.0.2.1:9443/iot/v1/cert/r0",
      // ... その他パラメータ
    }
    
    • caUrl
      : 平文 HTTP でルート CA を読み込む場所。
    • certSvrUrl
      : MQTT 構成情報を取得する HTTPS POST 宛先。

独自のサーバーへの完全移行

AI と Python スクリプトを活用し、このフロー全体を再実装しました。Bluetooth ログに含まれるデータが復号化の正しさを保証するため、手動でのデコンパイル分析よりも効率的です。

最大の発見: ペイロード内の

caUrl
と
certSvrUrl
を自由に設定できることが分かりました。これにより、

  • 独自の Web サーバーで CA 証明書を提供。
  • 独自 MQTT サーバーで構成情報を提供。

することで、MitM 環境(隔離ネットやルーター設定)の構築すら不要になりました。設定時は Coway アプリを一部使用して Bluetooth プロビジョニングを行い、その後 Wi-Fi で直接独自のサーバーと通信するようになります。

Home Assistant 統合の完成

これら発見に基づき、Home Assistant 用カスタム統合を開発しました。

  • Web ブルートゥース連携: Home Assistant サーバーがBluetoothを持たない場合でも、ラップトップをファンの隣に設置して Web ブルートゥースを使用し、設定可能です。
  • 完全な独立: 一度設定すれば、デバイスと Coway クラウドとの通信は完全に遮断され、Home Assistant を介して全てを制御できます。
  • Apple Home へのブリッジ: 独自サーバーで動作しているため、Apple Home との連携も維持可能です。

ついに、「グッドナイト」ボタンを押すだけで、灯りが消え、設定済みの音量のホワイトノイズが流れ、Air Purifier が自律的に稼働します。Coway クラウドへの依存は解消され、完全なる自走型の IoT デバイスとしての運用を実現しました。

同じ日のほかのニュース

一覧に戻る →

2026/11/14 6:05

FAA が全米の地上停止を発表

## 日本語翻訳: 航空交通管理システム指令センター(ATCSCC)は、2013 年 11 月 26 日 13:20 に発効し、14:04 まで続く「国内地面停止勧告第 111-DCC」を発令しました。これは、米国連邦航空指令センターによる例外的な安全事情に基づいており、本命令によりすべての空港は地上停止を維持し、離陸便は一切許可されません。署名のタイムスタンプは 26/11/13 20:54 と記載されていますが、運用上の停止は指定された終了時刻まで、直ちにすべての離陸便に適用されます。国際線入国便は自動的に取消されるものではなく、当局によってケースバイケースで対応されます。したがって、航空会社と空港運営者は、この特定の緊急期間中に旅客の安全を確保するため、即座にスケジュールの調整を行う必要があります。

2026/11/14 3:40

カリフォルニアからテキサスへの輸送中に NVIDIA ハードウェア 1140 万ドルが消失

## Japanese Translation: 要約: 高価な NVIDIA コンピュータ機器 6 パレット、額面価値 1,140 万ドルが、8 月 29 日にトラックが商品を引き取った後、オークランドからフォートワースへの輸送中に行方不明になった。その車両は食品運輸会社のロゴを掲げており、捜査員はその車両を長時間の停車を経て追跡したが、サンバーナディノ郡(南カリフォルニア)で行方をたてなくなった。オークランド警察は 2026 年 9 月 13 日付けの被害届に基づき強盗事件として捜査を進めているが、1,140 万ドルの評価額や特定の貨物・所有者・送り主・運送事業者・運転者の特定は行っておらず、逮捕者は発表されず、回収も確認されていない。NVIDIA はコメント要請に回答していない。本件は、他の輸送から盗まれたデータセンター用貨物の総額でほぼ 1 億 1,100 万ドルという広範な報告のさなかであり、別の事件として嫌疑者が確立されたトラック事業所のアイデンティティを悪用したとされる 1,200 万ドルの捜査も進められているが、当局はその事件を本件とは関連付けられていない。公衆からの問い合わせはオークランド警察 (510) 238-3728 まで。本件は物流セキュリティにおけるリスクの高まりと、高価な電子機器を対象としたアイデンティティ関連の貨物盗難に対する強化対策の緊急性を示している。

2026/11/14 7:39

Claude メーティンズ

## Japanese Translation: Anthropic は、エンタープライズ向け AI の大規模アップデートを実施し、「Claude」がビデオ会議に能動的な参加者として加わることを可能にしました。これは、受動的な文字起こしからリアルタイム協調作業への大きな転換であり、AI が通話に参加して議論を追跡したりタスクを管理したり、ドキュメントの共同作成(計画の要約や承認済み予算データの取得など)を即時に行う仕組みです。ユーザーは通話中にドキュメントやホワイトボードを共同で構築でき、生成されたすべての資料は claude.ai 内の専用ページに安全に保存されます。現状の統合では Google Meet がサポートされていますが、Gong、Otter、Fireflies.ai など他のパートナーへの対応も急速に拡大しています。 ただし、組織はこの機能と厳格なセキュリティ制御をバランスさせる必要があります。通話への参加には明示的なユーザー同意が必要であり、現在では Zero Data Retention(ZDR)構成、HIPAA 準拠設定、顧客管理暗号化鍵(CMEK)などは利用できない状態です。また、デフォルトでは外部ゲストが入場した場合に Claude は通話に参加しませんが、管理者はこの動作を上書きできます。ベータフェーズでは Team および Enterprise プランにおいて、2027 年 2 月までアーティファクトの生成が無料であり、ノートや文字起こしも無料で利用可能ですが、連携ツールの過度な使用は特定のプランの制限に影響する可能性があります。