
Tozed ZLT X300 5G CPE — SDR 불량 기지국을 통한 원격 루트 코드 실행 (CVE-2026-2035703, CWE-78, CVSS 9.8) — 조정된 공개
상태: 조정된 공개 진행 중(90일 엠바고)
발견일: 2026-08-08
연구자: Muhammad Nadeem Danish (danish1162)
CVE ID: CVE-2026-2035703
심각도: 치명적 (CVSS 9.8)
CWE: CWE-78 (OS 명령 주입)
Tozed ZLT X300 5G CPE 라우터에는 SDR(소프트웨어 정의 라디오)을 통한 불량 LTE 기지국으로 공중파를 통해 악용 가능한 치명적인 명령 주입 취약점이 존재합니다. 이 장치의 TR-069/CWMP 클라이언트(netcwmpd)는 검증되지 않은 네트워크 제어 입력을 셸 명령에 전달하여 인증 없는 원격 루트 코드 실행을 가능하게 합니다.
무선 범위 내에서 소프트웨어 정의 라디오(약 $300 USD)를 운영하는 공격자는 통신사의 TR-069 ACS 서버를 사칭하여 대상 장치에서 루트 권한으로 실행되는 임의의 셸 명령을 주입할 수 있습니다 — 인증 없이, 사용자 상호작용 없이, 물리적 접근 없이 말입니다.
공격자의 SDR (~$300)
↓
불량 LTE eNodeB (srsRAN, 테스트 주파수 대역)
↓ 가장 강한 신호 → X300 자동 연결
불량 EPC가 IP 할당 (172.16.0.x)
↓
TR-069 ACS 사칭 (DHCP Option 43 경유)
↓
SetParameterValues: IPPingDiagnostics.Host = $(telnetd -l /bin/sh -p 4444)
↓
장치 실행: ping "$(telnetd -l /bin/sh -p 4444)" (루트 권한)
↓
4444 포트의 루트 셸 — uid=0(root) gid=0(root)
netcwmpd의 IPPingDiagnostics 핸들러는 Host 매개변수를 셸 명령을 구성하는 sprintf 형식 문자열에 직접 전달합니다:
// netcwmpd에서 디컴파일됨 (0x463E6C, IDA Pro)
sprintf(cmd,
"ping%s -c %d -s %d -W %u%s \"%s\" > /tmp/.tr069_pingtest.log",
ipv4_flag, repetitions, block_size, timeout, interface,
HOST); // HOST = 검증되지 않은 TR-069 매개변수
그런 다음 이 명령은 system()을 통해 루트 권한으로 실행됩니다. Host 매개변수에 대한 입력 검증은 전혀 수행되지 않습니다 — 문자 필터링, 정규식 검사, 512바이트 버퍼를 초과하는 길이 검증도 없습니다.
$() 명령 치환은 POSIX 셸에서 큰따옴표 안에서 평가되므로 임의 명령 실행이 가능합니다.
ZLT X300은 다음 지역의 통신사에서 배포됩니다:
중동: du (UAE), STC 및 Mobily (사우디아라비아), Zain (쿠웨이트, 바레인), Ooredoo 및 Omantel (오만)
유럽: EE, O2, Three (영국), Telekom (독일), TIM (이탈리아), Free Mobile, SFR, Orange (프랑스)
아시아: Singtel (싱가포르), AIS (태국), Smart (필리핀), Telkomsel (인도네시아)
아프리카: MTN 및 Vodacom (남아프리카), MTN (나이지리아)
현재 펌웨어의 모든 장치가 취약합니다.
모든 취약점 발견은 IDA Pro를 사용한 정적 펌웨어 분석을 통해 수행되었습니다 — ARM 바이너리를 디컴파일하고 TR-069 매개변수 입력부터 sprintf를 거쳐 셸 실행 지점까지의 코드 실행 경로를 추적했습니다.
모든 실시간 하드웨어 검증 및 개념 증명 테스트는 파키스탄의 사설 연구소 환경에서 개인 소유 장비를 사용하여 수행되었으며, sysmocom sysmoISIM-SJA5 프로그래밍 가능 테스트 SIM(IMSI 접두사 999 — ITU 예약 테스트 네트워크, 상용 통신사 아님)을 비점유 주파수 대역(Band 7, 2655 MHz — UAE 통신사가 사용하지 않는 대역)에서 사용했습니다. 실제 상용 네트워크에는 영향을 주지 않았으며, 다른 가입자의 장치는 관여되지 않았고, 라이선스된 상용 스펙트럼에서의 전송은 수행되지 않았습니다.
advisory/
TECHNICAL_REPORT.md IDA 디컴파일이 포함된 전체 취약점 분석
VENDOR_ADVISORY.md 형식화된 제조사 통지
MITRE_CVE_REQUEST.md CVE 레코드 세부 정보
ZTE_PSIRT_EMAIL.md 제조사 커뮤니케이션 기록
netcwmpd 디컴파일0x463A14의 process_ping으로 이동SetParameterValues의 Host 매개변수가 sprintf를 거쳐 셸 명령으로 전달되는 경로 추적system() 호출 사이에 입력 검증이 없음을 확인제조사(Tozed Kangwei)에는 제품 보안 사고 대응 팀(PSIRT)이 없습니다. 모든 통신은 글로벌 마케팅 부서에서 이루어졌습니다. 취약점이 "이미 수정되었다"고 주장했지만 CVE 번호, 패치된 펌웨어 버전 또는 보안 권고를 제공할 수 없었습니다. NVD, OpenCVE, CVE Details 또는 제조사 자체 발행물에는 이전 수정에 대한 공개 기록이 없습니다.
모든 연구는 개인 소유 하드웨어에서 ITU 예약 테스트 네트워크 자격 증명(MCC 999)을 사용하여 사설 연구소에서 수행되었습니다. 어떤 시스템에 대한 무단 접근도 없었습니다. 실제 상용 네트워크에는 영향을 주지 않았습니다. 조정된 공개가 진행 중입니다.
이 연구는 승인된 보안 테스트, 제조사 수정, 학술 연구 목적으로만 제공됩니다. 무단 접근이나 악의적 사용을 위한 것이 아닙니다.
| 필드 | 값 |
|---|
| 제조사 | Tozed Kangwei Tech Co., Ltd (중국 선전) |
| 모델 | ZLT X300 / X300A 5G CPE 라우터 |
| 펌웨어 | 6.01.3 (테스트됨) — 모든 펌웨어 버전에 영향이 있는 것으로 추정 |
| 아키텍처 | aarch64 (MediaTek MT7992) |
| OS | OpenWrt 23.05.5, Linux 커널 5.15.167 |
| 구성 요소 | netcwmpd (CWMP 데몬) |
| 유통사 | du / EITC (Emirates Integrated Telecommunications), UAE |
| 날짜 | 조치 |
|---|
| 2026-08-08 | 정적 펌웨어 분석을 통해 취약점 발견 |
| 2026-08-14 | 제조사(Tozed Kangwei) 및 MITRE에 보고 |
| 2026-08-14 | MITRE가 CVE-2026-2035703 배정 |
| 2026-08-22 | 제조사(마케팅 부서, PSIRT 없음)가 "이미 수정됨" 주장 — 증거 제시 없음 |
| 2026-08-24–25 | 제조사가 기술적 질문에 답하는 대신 SIM 카드에 대해 3번 질문 |
| 2026-08-26 | ZTE PSIRT로 에스컬레이션 ([email protected]) |
| 2026-08-27 | 제조사가 협력 거부 — "판매처에 문의하세요" |
| 2026-08-29 | ZTE PSIRT 확인: "ZTE 제품 아님" — 책임 거부 |
| 2026-08-29 | 국가 CERT로 에스컬레이션 |
| 2026-11-14 | 공개 공개 예정 (최초 보고 후 90일) |