Documentation & Blog

스타링크 역분석을 통한 무선통신 안전 검증

KWAKBUMJUN 2025. 10. 15. 02:54

요약

2세대 Starlink 라우터의 초기 captive portal (/setup)에서 ssid/password 파라미터 검증이 불충분하여 Stored/Reflected XSS가 발생한다. 이 XSS를 로컬 네트워크 내의 Dishy(안테나, 내부주소 192.168.100.1) 접근 버그와 체이닝하면, 공격자가 사용자의 브라우저를 통해 Dishy와 라우터를 원격으로 제어(예: 안테나 Stow/Unstow)할 수 있다. 취약점은 버전 2022.32.0에서 확인되었고, 패치(버전 2023.48.0 이상) 가 되었다.

취약점 세부 사항

  • 취약 서비스/버전: Starlink Router Gen 2, 테스트된 버전 2022.32.0.
  • 취약 지점: http://192.168.1.1/setup (초기 captive portal) 의 ssid 및 password 파라미터에 대한 입력 필터링 미흡으로 XSS 발생.
  • 추가 버그: 통상 Dishy 내부(192.168.100.1)는 captive portal 접근이 불가해야 하나, 일부 구형 라우터/펌웨어에서 192.168.100.1/setup으로도 동일한 페이지에 접근 가능한 버그가 존재. 이로 인해 라우터와 Dishy 양쪽에서 동일한 XSS가 작동할 수 있음

공격 시나리오

  1. 공격자는 피해자에게 악성 페이지(또는 CSRF-유도 폼)를 열도록 유도. PoC는 <input name="ssid" value=' " onfocus=... autofocus='> 같은 값을 POST 하여 XSS를 트리거.
  2. XSS로 공격 스크립트가 피해자 브라우저에서 실행되면, 브라우저는 동일 출처(origin)로부터 온 요청으로 인식하여 gRPC-Web(특정 header, content-type 필요) 요청을 포함한 요청을 생성·전송할 수 있음. 이로써 브라우저가 로컬 주소(예: http://192.168.100.1:9201/SpaceX.API.Device.Device/Handle)로 gRPC-Web 요청을 보내도록 유도.
  3. 해당 gRPC-Web 요청 바디에는 protobuf로 인코딩된 Stow/Unstow 명령(예: 00 00 00 00 03 92 7d 00)이 포함되어 있고, Dishy는 별도의 인증 없이 명령을 수행 가능(또는 인증 체크가 약함). 결과적으로 안테나 물리적 동작(접힘/펼침) 등 기기 제어가 가능.

Impact

  • 원격 완전 장악(원격이 아닌 ‘로컬-리모트’): 공격자가 인터넷 상에서 직접 Dishy에 접근해 제어하는 것은 아니지만, 피해자가 악성 웹페이지를 방문(또는 피싱 등으로 유도)하는 경우 브라우저를 통해 내부 네트워크의 라우터/Dishy를 제어할 수 있음. 즉 브라우저-프록시 식 원격 제어가 가능.
  • 물리적·서비스 영향: Dishy의 물리적 동작(안테나 접기/펼치기), 라우터 설정 변경, 네트워크 연결성 손상 등 실제 서비스 중단 또는 장비 파손 위험(물리적 스트레스) 가능.

느낀점

이번 사례는 XSS가 얼마나 큰 현실적 피해로 이어질 수 있는지를 명확히 보여주는 프로젝트였던 것 같다. 특히 브라우저의 권한을 악용해 내부 장비(Dishy)를 제어할 수 있다는 점에서, 단순한 웹 취약점이 물리적 장비·서비스에까지 파급될 수 있음을 다시 한 번 깨달았다.

'Documentation & Blog' 카테고리의 다른 글

NAS 취약점 분석  (0) 2025.10.15
워드프레스 플러그인 취약점 분석 조사  (0) 2025.10.15