
Thinkware U3000 대시캠의 로컬 WiFi 제어 프로토콜에서 발견된 세 가지 인증되지 않은 취약점: 임의 파일 쓰기, 임의 파일 읽기, 평문 WiFi 자격 증명 노출. CVE-2026-101053, CVE-2026-101054, CVE-2026-101055.
공식 Android 앱을 리버스 엔지니어링하고 실제 하드웨어에서 확인하여 발견한 Thinkware U3000 대시캠의 로컬 WiFi 제어 프로토콜에 존재하는 세 가지 취약점입니다. 세 가지 모두 로컬 네트워크 접근만 필요합니다: 장치에 대한 물리적 접근, 사전 인증, 장치 소유자의 협조가 전혀 필요하지 않습니다.
2026-06-21에 Thinkware에 공개되었습니다. 30일 공개 기간이 종료되었으며, 기술적이지 않은 수신 확인만 받았습니다.
대시캠은 이런 종류의 노출에 있어 특이한 카테고리입니다. 대시캠은 차량의 움직임을 지속적으로 기록하며, 렌터카, 차량 관리, 중고차 판매를 통해 자주 소유자가 바뀝니다. 현재 차량에 접근할 수 있는 사람이 반드시 차량이 구성된 네트워크를 제어하는 것은 아닙니다. 임의 파일 쓰기 프리미티브와 제어 프로토콜의 인증 부재가 결합되면 이는 단순한 프라이버시 문제를 넘어섭니다. 이는 변조 문제이기도 합니다: 영상뿐만 아니라 장치의 모든 파일이 소유자의 인지 없이 변경되거나 교체될 수 있습니다.
이런 형태의 취약점이 Thinkware 대시캠에서 나타난 것은 이번이 처음이 아닙니다. 독립 연구자 geo-chen이 관련 F800 Pro 모델에서 여러 문제를 이전에 공개했습니다; geo-chen/Thinkware-Dashcam을 참조하세요. 해당 문제들은 일반적으로 악용에 물리적 또는 로컬 파일시스템 접근이 필요했습니다. 아래 발견 사항은 둘 다 필요하지 않습니다: 네트워크 접근만으로 충분하며, 파일 쓰기 발견은 그 이전 세트의 어떤 것보다도 강력한 능력입니다.
영향받는 모델에 대한 참고: 아래의 모든 발견 사항은 기본 Thinkware U3000에서 확인되었습니다. Thinkware는 별도의 "U3000 Pro" 변형도 판매하고 있습니다; 동일한 프로토콜 구현을 공유하는지는 테스트되지 않았습니다.
CVE: CVE-2026-101053 (VulDB #410915)
제품: Thinkware U3000 대시캠
영향받는 구성 요소: TCP 제어 프로토콜 (포트 7878 명령 / 포트 8787 데이터), 인증 없음
공격 벡터: 동일한 로컬 네트워크의 모든 장치가 장치 파일시스템의 모든 절대 경로에 공격자가 제어하는 콘텐츠를 쓸 수 있습니다.
장치의 제어 프로토콜은 PUT_FILE 명령을 노출하며, 이는 공격자가 제공한 바이트를 공격자가 제공한 절대 경로에 쓰며, 경로 검증이나 샌드박싱이 전혀 없습니다. 장치의 /tmp 디렉터리—장치 자체의 WiFi 구성(wpa_supplicant.conf)과 최소 하나의 셸 스크립트(hidraw0.sh)가 있는 동일한 디렉터리—에 직접 파일을 쓰고, 바이트 단위로 다시 읽어 정확한 배치를 확인함으로써 검증되었습니다.

START_SESSION -> SET_CLNT_INFO -> APP_CONNECT.param을 설정하여 PUT_FILE을 전송합니다.{"rval": 0, "msg_id": 1286}으로 응답한 후, 나중에 완료를 확인하는 비동기 NOTIFICATION(msg_id 7)을 푸시합니다.LS를 실행하면 시스템 파일들과 함께 정확히 요청한 이름으로 파일이 존재함을 확인할 수 있습니다.GET_FILE을 실행하여 전송한 내용과 바이트 단위로 비교하기 위해 콘텐츠를 다시 읽습니다.CVE: CVE-2026-101054 (VulDB #410916)
제품: Thinkware U3000 대시캠
영향받는 구성 요소: TCP 제어 프로토콜 (포트 7878 명령 / 포트 8787 데이터), 인증 없음
공격 벡터: 동일한 로컬 네트워크의 모든 장치가 기록된 영상뿐만 아니라 장치 파일시스템의 모든 절대 경로를 나열하고 읽을 수 있습니다.
동일한 프로토콜의 LS 및 GET_FILE 명령은 제한 없이 모든 절대 경로를 열거하고 읽습니다. 장치의 실제 WiFi SSID와 평문 비밀번호를 포함하는 장치의 라이브 wpa_supplicant.conf를 직접 읽음으로써 검증되었습니다. 이는 발견 1의 읽기 측 대응물입니다: 동일한 근본 원인, 반대 방향이며, 발견 3에서 노출된 동일한 자격 증명에 대한 기계적으로 구별되는 경로입니다.
START_SESSION -> SET_CLNT_INFO -> APP_CONNECT./tmp에 LS를 실행하면 다른 시스템 파일들(hidraw0.sh, aws.dat, resolv.conf 등)과 함께 wpa_supplicant.conf가 존재함을 확인할 수 있습니다.param: "/tmp/wpa_supplicant.conf"로 GET_FILE을 실행하면 파일 크기를 반환한 후, 전체 콘텐츠가 비디오 파일과 정확히 동일한 방식으로 데이터 소켓을 통해 스트리밍됩니다.ssid=/psk= 줄이 포함되어 있습니다.CVE: CVE-2026-101055 (VulDB #410917)
제품: Thinkware U3000 대시캠
영향받는 구성 요소: TCP 제어 프로토콜 (포트 7878), 인증 없음
공격 벡터: 동일한 로컬 네트워크의 모든 장치가 인증 없이, 사전 접근 없이 카메라의 WiFi 비밀번호를 직접 검색할 수 있습니다.
전용 상태 쿼리인 GET_STATUS "wifi_info"는 장치의 WiFi SSID와 평문 비밀번호를 직접 반환합니다. 이는 발견 2와 다른 메커니즘으로, 파일시스템 접근이 전혀 필요 없으며 정상적인 프로토콜 상태 읽기만 필요합니다.
START_SESSION -> SET_CLNT_INFO -> APP_CONNECT.param: "wifi_info"로 GET_STATUS를 전송합니다.{"rval": 0, "msg_id": 2050, "type": "wifi_info", "param": [{"ssid": "<real SSID>"}, {"password": "<real plaintext password>"}, {"mac": "<real MAC>"}]}.| 날짜 | 이벤트 |
|---|---|
| 2026-06-19 | 펌웨어 v1.02.00에 대해 발견 사항 확인 |
| 2026-06-21 | 펌웨어를 v1.02.04(현재 생산 릴리스)로 업그레이드; 세 가지 발견 사항 모두 재확인, 동작 변화 없음 |
| 2026-06-21 | [email protected]으로 이메일을 통해 벤더에 통보 |
| 2026-06-22 (대략) | Thinkware 고객 지원이 수신을 확인하고 보고서가 개발팀에 전달되었음을 확인. 기술적 응답, 일정, 수정 확인은 제공되지 않음. |
| 2026-07-21 | 30일 공개 기간 종료. 추가 벤더 연락 없음. |
| 2026-08-13 | 공개 공개 |
| 2026-9-27 | CVE ID 할당, VulDB 항목 게시 |
책임 있는 공개 관행에 따라, 이 저장소는 각 프리미티브의 존재와 영향을 문서화하며 즉시 사용 가능한 악용 도구를 제공하지 않습니다:
PUT_FILE 개념 증명 스크립트는 공개되지 않습니다. 위의 재현 단계는 발견 사항을 확인하기에 충분합니다; 매개변수화된 즉시 실행 가능한 임의 쓰기 도구는 정당한 검증에 추가 가치를 제공하지 않으면서 오용에 실질적 가치를 제공할 것입니다.PUT_FILE을 통해 배치된 파일이 실행될 수 있는지, 또는 추가 악용 체인에 대한 조사는 이루어지지 않았습니다.이러한 발견 사항은 이 연구의 일부로 구축된 U3000 제어 프로토콜용 오픈소스 Python 클라이언트인 u3000py를 사용하여 확인되었습니다.
u3000py의 ThinkLinkClient.download() 메서드는 발견 2의 직접적이고 실행 가능한 재현입니다: cam.download("/tmp/wpa_supplicant.conf")는 제한 없이 장치의 라이브 WiFi 구성을 읽습니다.ThinkLinkClient.get_wifi_info()는 발견 3의 직접적이고 실행 가능한 재현입니다(실제 비밀번호는 인쇄된 출력에서 기본적으로 마스킹됩니다; 실제 값은 여전히 반환된 객체에서 접근 가능하며, 이는 발견 자체가 작동하는 방식과 일치합니다).u3000py는 해당 발견의 분석에서 언급된 이유로 범용 PUT_FILE 기능(발견 1)을 의도적으로 노출하지 않습니다.Ryan Moore (turretsec)가 발견하고 공개했습니다.