本篇文章更新時間:2026/02/15
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持 。
內容目錄
揭露一款「智慧睡眠眼罩」背後的安全漏洞
一場從藍牙逆向到全球腦波外洩的真實紀錄
編輯前言:這篇文章讓我重新意識到,智慧穿戴裝置的風險往往不在硬體,而在看不見的雲端。作者從逆向工程入手,意外發現一間公司的睡眠眼罩竟將所有使用者的腦波公開到一個 MQTT 伺服器上。
文章來源:My smart sleep mask broadcasts users' brainwaves to an open MQTT broker
核心觀點 (Key Takeaways)
- 硬體再先進,後端安全若不到位,一切都是災難的起點。
- Flutter 應用雖難解構,但二進位中的字串資訊仍能暴露大量關鍵資訊。
- 共用 MQTT 憑證 = 所有使用者的腦波、裝置控制權完全裸奔。
深入解析
這篇文章的起點十分無害:作者只是買了一個 Kickstarter 的智能睡眠眼罩,功能強大、有 EEG 感測、EMS(電刺激)、震動、加熱、音訊…硬體相當野心十足。但 App 體驗不如預期,因此他請 Claude 協助逆向藍牙協議,做一個簡單的 web 控制面板。
接著,故事開始失控。
1. 藍牙層面:找不到標準協議,只能從 App 下手
Claude 首先掃描 BLE 設備、嘗試發送各種常見封包,但裝置始終沒有回應。這意味著協議完全自訂,外界文檔全無。
於是只能轉向 App。
2. App 逆向:Dart 二進位中的字串洩漏一切
因為這是 Flutter App,逆向難度高。Dart 被編譯成 ARM64 原生碼,無法像 Java 那樣直接閱讀。但即使如此,Claude 仍透過字串搜尋找到驚人的資訊:
「Hardcoded credentials for the company's message broker (shared by every copy of the app)」
換句話說,每位使用者的 App 與裝置都用同一組 MQTT 帳密登入雲端。
此外還找到:
- 雲端 API
- 15 種設備控制指令的函式名稱
- 顯示封包結構的除錯訊息
接著 Claude 又用 blutter 反編譯 Dart 快照,成功解析 15 組指令的 byte 格式,完全重建協議。
3. 驗證:設備資訊、感測器數據全部讀得到
只用六個 bytes,裝置回傳 153 bytes 詳細資訊,包括:
- EEG(250Hz)
- 呼吸、加速度計、陀螺儀
- 電量、序號、韌體版本
控制震動、加熱、EMS 也都成功。看起來像是一次漂亮的逆向工程。
但真正的雷還沒爆。
4. MQTT 災難:所有使用者的腦波都在公開頻道中直播
Claude 用剛找到的 MQTT 憑證登入伺服器後,情況瞬間變恐怖:
Not just from my device — from all of them.
他看到:
- 多台睡眠眼罩的即時 EEG 腦波
- 室內空氣品質感測器數據
- 室內佔用狀態感測器
甚至能分析某個陌生人在深睡、某人在 REM。
換言之:
任何人都能讀你的腦波,也能遠端對你的眼睛施加電刺激。
這不是比喻,是作者在文中實際做到的事。
筆者心得與啟發
老實說,看完我只想到一句話:所有智慧裝置最終都會變成資安裝置。
這篇文章的恐怖之處不在於逆向工程,而在於:
- 開發團隊竟然把所有裝置的 MQTT 憑證硬編碼在 App 裡。
- MQTT 伺服器不做隔離,不做 ACL,不做安全管控。
- 即時腦波、EMS 控制等極度敏感的功能全部暴露在公開 broker 上。
作為使用者,我們往往被「酷炫功能」吸引,但背後的雲端架構到底長什麼樣?資料如何被傳輸、儲存、保護?大多時候完全不知道。
這也讓我重新理解作者引用的那句話:
這讓我重新回去讀了一次 Karpathy 的 Digital Hygiene。
換句話說,在這個 IoT 大爆炸的時代,我們需要的不只是隱私意識,而是更嚴格的「數位衛生」習慣。
對我而言,這篇文章最大的提醒是:
- 若一個裝置能讀你的腦波,它就一定能外洩你的腦波。
- 若一個裝置能刺激你的肌肉,它就一定能被用來做壞事。
科技變得越親密,安全就應該更嚴格。可惜現實往往相反。
