- 킥스타터에서 구매한 스마트 수면 안대가 사용자 뇌파 데이터를 외부로 송신하는 사실이 밝혀짐
- 안대는 EEG 센서, 전기 자극(EMS), 진동, 온열, 오디오 기능을 갖춘 복합 하드웨어로 구성
- 앱 분석 과정에서 모든 기기가 공유하는 하드코딩된 MQTT 브로커 인증 정보가 발견되어, 제3자가 모든 기기의 실시간 데이터를 수신 가능함
- 실제로 약 25대의 기기가 실시간 뇌파, 온도, 습도, CO₂, 존재 감지 데이터를 공개 브로커에 송신 중인 것으로 확인됨
- 동일 자격 증명으로 전기 자극 명령 전송도 가능해, 사용자 안전과 개인정보 보호에 심각한 위험이 존재함
스마트 수면 안대의 구조와 기능
- 킥스타터를 통해 입수한 안대는 중국의 소규모 연구 회사가 제작한 제품으로, EEG 기반 뇌파 측정과 전기 근육 자극(EMS) , 진동, 온열, 오디오 재생 기능을 포함
- 앱 품질이 낮고 연결이 자주 끊겨, Bluetooth 프로토콜을 역공학해 웹 제어판을 직접 제작함
- BLE 스캔 결과 두 개의 데이터 채널(명령 송신용, 데이터 스트리밍용)이 존재했으나, 표준 프로토콜이 아닌 독자 규격으로 응답이 없었음
앱 역공학 과정
- Android APK를 jadx로 디컴파일한 결과, 앱이 Flutter 기반으로 작성되어 있었음
- Flutter는 Dart 코드를 ARM64 네이티브 코드로 컴파일하므로 일반 Java 앱처럼 복원이 어려움
- 바이너리에서 strings 명령으로 하드코딩된 브로커 자격 증명, 클라우드 API 엔드포인트, 15개의 명령 함수 이름, 패킷 구조 정보를 추출
- 이후 blutter 도구를 사용해 Dart 스냅샷을 분석, 명령 바이트 전체를 복원함
장치 제어 성공
- 6바이트 쿼리 전송 후 장치가 153바이트 응답을 반환
- 모델명, 펌웨어 버전, 일련번호, 8개 센서 채널 구성(EEG 250Hz, 호흡, 3축 가속도계, 3축 자이로스코프), 배터리 83% 포함
-
진동, 온열, EMS, 음악 제어 모두 정상 작동
- 웹 대시보드에서 슬라이더로 각 기능을 제어할 수 있도록 구현
MQTT 브로커 노출
- 앱 내 하드코딩된 자격 증명으로 MQTT 브로커에 접속하자, 모든 기기의 데이터가 수신됨
- 약 25대의 장치가 활성 상태였으며, 수면 중 EEG 데이터, 공기질(온도·습도·CO₂) , 존재 감지 정보를 송신
- 두 명의 사용자는 각각 REM 수면 상태와 서파 수면 상태(4Hz 이하 델타파) 로 확인됨
- 모든 기기가 동일한 인증 정보를 사용하므로, 외부인이 전기 자극 명령을 전송할 가능성 존재
보안 문제와 대응
- 제품명과 회사명은 공개하지 않았으며, 제조사에 문제를 통보함
- 사건은 개인 데이터 보호와 IoT 보안 관리의 심각한 허점을 드러냄
- 작성자는 Karpathy의 ‘Digital Hygiene’ 글을 다시 읽을 것을 권장하며, 디지털 위생의 중요성을 강조함
추가 정보
- 역공학 과정은 Claude (Opus 4.6) 모델이 약 30분간 자율적으로 수행
- 이후 이 사례가 Hacker News 1위에 오르며, 관련 대화 로그가 공개됨