GN⁺: Sleep Number 침대 루트 접근 방법
(dillan.org)동기
- 몇 년 동안 Sleep Number 침대의 로컬 네트워크 접근 가능성을 탐구해왔음
- HomeKit을 통해 침대 설정을 제어할 수 있는 homebridge 플러그인을 만들었음
- Sleep Number에서 API 요청 빈도가 높아져 플러그인을 비활성화하라는 요청을 받았음
- 로컬 네트워크 접근을 통해 서버를 우회하는 방법을 찾기로 결심했음
사전 준비 사항
- Sleep Number Hub 모델 번호: 360SIQ01D
- UART to TTY 장치 및 기타 하드웨어 도구 필요
- USB-A 플래시 드라이브 필요
루트 접근 권한 획득
- J16 헤더에 UART 장치 연결
- UART 장치에 콘솔 연결 (baud rate: 115200)
- 허브 전원을 켜고 2초 내에 <SPACE>를 눌러 자동 부팅 시퀀스를 중지
- 부팅 환경 변수 편집
- 기본 환경 변수 백업
-
bootcmd
변수에서run set_bootargs;
제거 -
bootargs
변수에 다음 추가:console=ttymxc0,115200 root=/dev/mmcblk${linux_mmcdev}p1 rootwait rdinit=/bin/bash -- -c "sed -i 's/LMR=`.*`/LMR=let_me_root/' /init; exec /init"
- 첫 부팅 시 "let_me_root" 파일이 있는 플래시 드라이브 삽입
- 루트 파티션을 rw로 다시 마운트하고
let_me_root
파일 추가 - SSH 접근 설정
로컬 네트워크 제어 및 모니터링 서버 생성
- Python 2.7.18을 사용하여 HTTP 서버 설정
-
/bam/scripts
디렉토리의 스크립트를 실행할 수 있는 HTTP 서버 스크립트 작성 - 스크립트를 허브에 복사하고 실행
rc.d 스크립트 추가
-
/real.root
파티션에 rc.d 스크립트 추가 - 스크립트를 허브에 복사하고 적절한 위치로 이동
- 필요한 심볼릭 링크 추가
유용한 명령어
-
/bio
스크립트에서 다양한 침대 제어 명령어 사용 가능 - 예시 명령어:
-
arg=PSNL
: 왼쪽 침대 측면의 마지막 설정된 수면 번호 값 가져오기 -
arg=PSNS&arg=L100
: 왼쪽 침대 측면의 수면 번호를 100으로 설정
-
다음 단계
-
/bam
루트 디렉토리의 침대 제어 기능 탐색 - SSH 터널을 통해 Sleep Number 서버와 통신하는 허브의 보안 문제 고려
- SleepIQ 앱을 대체할 수 있는 간단한 웹 앱 작성
부록: 허브의 원래 U-Boot 환경 변수
-
baudrate=115200
-
bootcmd=run find_board_name; run set_bootargs;setenv boot_mmcdev 0; run bootcmd_mmc;setenv boot_mmcdev 1; run bootcmd_mmc
- 기타 변수들...
GN⁺의 의견
- 이 가이드는 Sleep Number 침대의 로컬 네트워크 접근을 가능하게 하여 사용자에게 더 많은 제어 권한을 제공함
- 허브의 보안 문제를 고려할 때, 외부 인터넷 연결을 끊는 것이 좋음
- 비슷한 기능을 제공하는 다른 스마트 홈 제품들도 존재함
- 새로운 기술을 도입할 때는 보안과 유지보수 문제를 신중히 고려해야 함
Hacker News 의견
-
과거에 스마트 기능이 없는 침대를 사용했음
- 두 개의 유선 컨트롤러가 펌프에 연결되어 있었음
- 인터넷이나 Linux 마이크로컨트롤러가 필요하지 않았음
- 해킹 걱정 없이 편안하게 잠을 잤음
-
Sleep Number 서버와 SSH 터널을 통해 통신하는 허브에 관심이 있음
- PubkeyAuth 또는 비밀번호를 사용하는지 궁금함
- DNS 하이재킹 가능성에 대해 상상해 봄
- Homer Simpson의 유명한 말처럼 "침대가 올라가고 내려감"을 인용함
-
Eight Sleep Pod 3에 접근하는 유사한 방법이 있음
- 일부 모델은 수정 가능한 MicroSD 카드를 포함함
- TFA에서 사용된 방법이 카드 없이 루트 접근을 얻는 좋은 방법일 수 있음
- Eight Sleep이 펌웨어 업데이트를 서명하지만, 서명에 사용된 개인 키도 함께 보냄
-
Eight Sleep 침대를 해킹하는 글이라고 생각했음
- 실제 "Number Sleep Hub" 사진을 보고 놀랐음
- Eight Sleep과 Sleep Number라는 두 회사가 물 냉각 침대를 만든다는 사실에 충격을 받음
-
다음은 랜섬웨어에 대한 농담
- "1000달러를 지불하지 않으면 다음 달 동안 침대에서 잘 수 없음"
-
인터넷이 끊겨서 침대 온도를 조절할 수 없는 상황이 불편함
-
Sleep Number 침대를 사지 않기로 결심함
- 중국으로 아웃소싱된 후 내부 바플이 부러진 두 개의 매트리스를 경험함
-
침대가 Linux를 실행해야 하는 이유에 의문을 가짐
- 1GB RAM과 전체 OS가 필요한 침대가 왜 필요한지 이해할 수 없음
- WiFi 연결이 없는 세탁기를 찾는 것도 어려웠음
- 스마트 기기를 피하는 것이 점점 더 어려워지고 있음
-
납땜 도구를 쇼핑 목록에 추가할 것을 권장함