Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
deco-filepush-disclosure — TP-Link Deco XE75 Pro V3 디버그 채널(tmpsvr opcode 0xC456/0xF0)의 루트 파일 읽기/쓰기 취약점에 대한 공개 및 PoC로, CVSS 분석과 핸들러 디컴파일을 포함합니다. | Kitploit
도구/GitHubGitHub/cplusplus17/deco-filepush-disclosure
Embedded Systems SecurityPrivilege EscalationIoT SecurityVulnerability AnalysisExploitationReverse EngineeringHardware & IoT SecurityPapers & ResearchFirmware Analysis

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHubcplusplus17/deco-filepush-disclosure

deco-filepush-disclosure

TP-Link Deco XE75 Pro V3 디버그 채널(tmpsvr opcode 0xC456/0xF0)의 루트 파일 읽기/쓰기 취약점에 대한 공개 및 PoC로, CVSS 분석과 핸들러 디컴파일을 포함합니다.

저장소 보기
211일 전아직 검토되지 않음

Deco XE75 Pro V3 — 소유자 인증 디버그 채널: 임의의 루트 파일 쓰기

동반 VLAN 프로젝트: 정확한 XE75 Pro V3 펌웨어/프로파일에 대한 실험적 고정 VLAN-30 소스 알파입니다. 운영자가 제공하는 스톡 파일이 필요하며, 일반 설치 프로그램이나 플래시 가능한 이미지는 없습니다. 게스트 VLAN 591은 여전히 미해결 상태이며, 최종 3대 콜드 부팅, UI 및 클라이언트 격리 승인은 완료되지 않았습니다. 현재 상태를 참조하십시오.

연구 공개, TP-Link Deco XE75 Pro V3, 펌웨어 1.5.0 Build 20260603 Rel.15804. [email protected]을 위해 작성되었으며, 당사의 802.1Q IoT VLAN 구현(deco-iot-vlan)과 함께 공개됩니다.

요약

Deco의 소유자 인증 디버그 SSH 채널(TCP 20001의 Dropbear, direct-tcpip 포워딩 전용, 비밀번호 인증)은 127.0.0.1:20002의 내부 tmpsvr 서비스에 도달합니다. 해당 서비스의 Lua 핸들러 중 하나인 inner_file_push(opcode 0xC456)는 params.file을 "w" 모드로 열고 params.content를 그대로 루트 권한으로, 경로 허용 목록 없이, 크기 제한 없이, 권한 강등 없이 기록합니다. 형제 opcode(0xF0)는 이에 대응하는 루트 파일 읽기를 제공합니다. 이를 합치면: 전체 루트 파일시스템에 대한 인증된 읽기 + 쓰기가 가능하며, 라우터에서는 이것이 곧 장치 전체입니다.

SSH :20001  (username = SHA1(owner_email), password = TP-Link account password)
  -> direct-tcpip -> 127.0.0.1:20002 (TMPv2)
     -> 0xC456 inner_file_push : io.open(file,"w"); write(content); close()   [root]
     -> 0x00F0 root file read  : byte-exact file read                          [root]

영향 (실제 검증 완료, 비파괴적)

  • /etc/config는 실제 쓰기 가능한 ramfs → 키를 변경하면 라우터가 이를 그대로 반영한다.
  • /www는 uhttpd에 의해 HTTPS로 서비스됨 → 푸시된 파일에 즉시 접근 가능하다.
  • /tp_data/user_data는 영구 저장되는 ubifs 플래시 → 재부팅 후에도 유지된다.
  • LuCI 라우트 캐시는 공격자 Lua로 교체될 수 있으며, GET /cgi-bin/luci를 통해 트리거됨 → root Lua 실행 → io.popen → 임의의 root 바이너리 실행.

네 단계 모두 소유자의 자체 메인 유닛에서 실행 후 원상 복구되었다.

이것이 새로운 이유 — 그리고 CCS'24 / Black Hat '24 이후 2년이 지난 지금도 tmpsvr이 여전히 수정되지 않은 이유

UCR SecLab 팀은 2년 전 CCS 2024 — "Untangling the Knot: Breaking Access Control in Home Wireless Mesh Networks"(및 Black Hat USA 2024 — "Fallen Tower of Babel")에서 :20001 -> 127.0.0.1:20002(tmpsvr) 디버그 채널을 공개적으로 문서화했다. 구형 Deco 모델(X55, FW 1.2.2)에서의 그들의 진입점은 512비트 RSA 호스트키 인수분해와 검증되지 않은 tmpsvr 핸들러 악용이었다.

이 정확한 펌웨어에서 관찰된 차이점과 남아 있는 핸들러:

  • 그들은 ssh-rsa 호스트키 크기를 512비트에서 2048비트로 늘렸으며(세 메시 유닛 전체에서 관찰된 하나의 공유 키, SHA256:9feb3ac4...932a36, 그리고 유닛별 ecdsa-sha2-nistp521), 이로써 2024년 발표에서 다룬 512비트 인수분해 경로를 차단했다.
  • 펌웨어 1.5.0에는 다음과 같은 root 수준 핸들러가 존재한다:
    1. :20001의 비밀번호 인증(svr_auth_uci) 은 SHA1(owner_email) + 공유 TP-Link ID 비밀번호를 사용하여 여전히 활성 상태이다.
    2. 오피코드 0xC456(inner_file_push) 은 여전히 호출자가 제공한 임의 경로를 경로 검증 없이 root 권한으로 "w" 모드에서 연다.
    3. 오피코드 0x00F0 은 여전히 파일시스템의 임의 파일을 root 권한으로 읽는다.
    4. 심지어 오피코드 0xC505(tty2tcp/start) — 2024년 논문에서 강조된 바로 그 따옴표 없는 /bin/sh -c 명령 주입 핸들러 — 조차 2026년 6월 펌웨어(1.5.0)에 완전히 수정되지 않은 채로 남아 있다.

영향 범위 (관찰된 대로)

  • 제품: TP-Link Deco XE75 Pro V3 (3-유닛 메시; 메인 유닛 1대 + 슬레이브 2대)
  • 펌웨어: 1.5.0 Build 20260603 Rel.15804
  • 공격 표면: LAN에서 접근 가능한 TCP 20001 (디버그 SSH); 핸들러는 추출된 1.5.0 유저스페이스(luci/controller/admin/mobile_app/iot_device 모듈, inner_file_push)에 존재한다.

심각도 (CVSS v3.1 + v4.0)

LAN 도달 가능성만 입증되었다. 관찰된 LAN 전용 프로파일에 대해서는 AV:A 변형을 사용한다: v3.1 6.8 / v4.0 8.5. 아래의 AV:N 점수는 네트워크 경로가 입증된 경우에 조건부이며, 클라우드 도달 가능성은 검증되지 않았다.

이것은 root로의 인증 후, 소유자 권한 상승 — 인증 없는 RCE가 아니다 — 관찰된 프로파일 점수는 아래와 같이 6.8(v3.1) 및 8.5(v4.0)이다. 전체 근거와 기각된 점수 상향은 docs/cvss-analysis.md에 있다.

CVSS v3.1 — LAN 전용 평가 6.8 (Medium); 조건부 원격 변형 7.2 (High):

CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H   = 7.2 (High)
CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H   = 6.8 (Medium)   # if LAN-only

결정적 판단: PR:H(소유자 / TP-Link-ID 계정이 기기의 관리 주체임) 및 S:U(핸들러가 이미 root로 실행되므로 권한 경계를 넘지 않음). 초기 초안은 PR:L + S:C를 통해 9.9로 산정되었으나, 둘 다 기각되었다.

CVSS v4.0 — LAN 전용 평가 8.5 (High); 조건부 원격 변형 8.6 (High):

CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N   = 8.6 (High)
CVSS:4.0/AV:A/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N   = 8.5 (High)       # if LAN-only
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:L   = 9.3 (Critical)   # with Subsequent-System LAN/mesh impact

실제 세계의 위험 — 탈취되거나 재사용된 TP-Link-ID 비밀번호가 전체 메시에 걸쳐 지속적인 root 권한으로 전환되고 클라이언트 트래픽 MITM까지 이어지는 시나리오 — 는 서술(및 v4.0의 SC:H/SI:H/SA:L Subsequent-System 지표)에 속하며, 부풀려진 v3.1 기본 벡터에 속하지 않습니다.

개념 증명

poc/deco_filepush_poc.py — 자체 포함(표준 라이브러리 + paramiko). 자격 증명은 DECO_EMAIL / DECO_PASSWORD 환경 변수로만 전달됩니다. 라이브 모드는 DECO_HOSTKEY를 요구하며, 이는 독립적으로 검증됩니다: 원시 base64, 공개 키 한 줄, 또는 ssh-keyscan 키 한 줄(주석 지원). 스캔만으로는 기기를 인증하지 않습니다. HTTPS 검사는 제공되는 바이트를 비교하지만 인증서를 검증하지는 않습니다. 정확히 하나의 모드가 필요하며, 검증에 실패하면 0이 아닌 값으로 종료됩니다.

python3 poc/deco_filepush_poc.py --selftest        # offline framing sanity
[email protected] DECO_PASSWORD=*** DECO_HOSTKEY="$TRUSTED_DECO_HOSTKEY" \
  python3 poc/deco_filepush_poc.py --run           # write marker + readback + HTTPS check
[email protected] DECO_PASSWORD=*** DECO_HOSTKEY="$TRUSTED_DECO_HOSTKEY" \
  python3 poc/deco_filepush_poc.py --cleanup <nonce>   # overwrite marker with empty content

PoC는 /www/log_export(ramfs이며 재부팅 시에도 지워짐)에 무해한 단일 마커를 기록한 뒤, 성공을 보고하기 전에 디바이스 자체의 root-read opcode를 통한 바이트 단위 정확한 재읽기와 변경되지 않은 HTTPS 서빙을 요구합니다.

재현 요약 (실시간, 2026-10-17)

  1. ssh-keyscan -p 20001 <deco> → 호스트 키 고정(메시 전체에서 공유되는 2048비트 RSA + 유닛별 nistp521).
  2. SHA1(owner_email) / TP-Link 계정 비밀번호로 SSH 접속 후, 127.0.0.1:20002로의 direct-tcpip 요청.
  3. TMPv2 연관(01010100 → 01010200 → 01010200), 이어서 opcode 1 토큰 요청.
  4. Opcode 0xC456, {"params":{"file":"/www/log_export/deco-write-<nonce>.html", "content":"..."}} → {"error_code":0,...}.
  5. Opcode 0xF0, {"params":{"file":"..."}} → 바이트 단위 정확한 재읽기.
  6. GET https://<deco>/log_export/deco-write-<nonce>.html → 200, 정확한 바이트.

범위 / 정직성

  • 소유자 본인의 하드웨어, 소유자 본인의 자격 증명.
  • 비파괴적: 단일 마커, 바이트 단위 정확한 복원, 검증된 롤백.
  • 메인 유닛에서 시연됨; 동일한 핸들러가 메시 전체에 대해 추출된 1.5.0 사용자 공간에 존재함.
  • tty2tcp(0xc505) 경로는 존재가 확인되었고 검증되지 않은 상태(정적)이지만, 별도의 주입으로 실시간 검증되지는 않음; 완전성을 위해 기재함.

공개 배포 이유 (전자 폐기물 방지 및 네트워크 보안에 대한 권리)

이 연구는 단순하고 방어적인 목표에서 시작되었습니다: Access Point 모드로 동작하는 3대 구성의 Deco XE75 Pro V3 메시에서 신뢰할 수 없는 IoT 기기를 태그된 802.1Q VLAN으로 격리하는 것입니다.

2026년에 기본적인 네트워크 분할(IoT 기기를 격리된 VLAN에 배치하는 것)은 근본적인 보안 요구 사항입니다 — 그러나 기본 펌웨어 1.5.0에서는 이 기능이 인위적으로 미완성 상태로 남아 있습니다(/lib/iot_network/iot_eth.sh는 rootfs에서 누락되었고 /etc_ro/init.d/iot_network의 VLAN 로직은 주석 처리됨). 이는 냉혹한 선택을 남겼습니다: 완전히 쓸 만한 Wi-Fi 6E 메시 라우터 세 대를 전자 폐기물로 버리거나, 펌웨어를 리버스 엔지니어링하여 누락된 기능을 직접 패치하거나.

우리는 이 보안 권고문과 함께 제공되는 VLAN 구현(deco-iot-vlan)을 공개하기로 선택했습니다. 그 이유는:

  1. 모든 Deco 소유자가 즉시 방어적 예방 조치를 취할 수 있도록 (노출된 root 파일 쓰기 인터페이스를 인지하지 못한 채로 남는 대신, 강력하고 고유한 TP-Link ID 비밀번호를 설정하고 LAN/VLAN에서 TCP 포트 20001을 제한함).
  2. 소유자가 기본 보안 기능이 제공되지 않을 때 동작하는 하드웨어를 전자 폐기물로 만들지 않고, 기존 Deco 하드웨어에 적절한 802.1Q IoT VLAN 분할을 갖출 수 있도록.

파일

  • README.md — 이 파일
  • TEAM-SUMMARY.md — 다중 에이전트 팀(claude, codex, gemini, hermes/Qwen)이 이를 발견한 방법
  • poc/deco_filepush_poc.py — 자체 포함 PoC
  • docs/cvss-analysis.md — 점수 산정 근거 + 대체 매트릭스
  • docs/handler-source.md — 디컴파일된 inner_file_push 핸들러 + 참조
  • tp-link-email.md — 벤더 보고서 초안; 전달 미확인
  • reddit-post.md — 커뮤니티 게시물 초안

크레딧

소유자 주도의 독립적인 리버스 엔지니어링. 요청 시 전체 디컴파일된 모듈, 오프라인 프레이밍 도출, 메시 호스트키 인벤토리를 기꺼이 공유하겠습니다.

도구 다운로드