
Advisory and technical analysis of CVE-2026-15469, a hard-coded RSA-512 mesh group private key in TP-Link Deco routers, including root cause, impact, and PoC methodology for defensive research.
Hard-coded Mesh Group Private Key — TP-Link Deco XE75 / XE5300 / WE10800
A shared RSA-512 mesh group private key is baked into the firmware, letting a LAN-adjacent attacker impersonate a trusted mesh node, overwrite configuration, flash unsigned firmware, and pivot across the entire mesh.
English · 한국어
| Field | Value |
|---|---|
| CVE ID | CVE-2026-15469 |
| Weakness | CWE-321 — Use of Hard-coded Cryptographic Key |
| Attack pattern | CAPEC-115 — Authentication Bypass |
| Severity | 7.7 — HIGH (CVSS 4.0) |
| Vector | AV:A/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:L/SI:L/SA:L |
| CNA / Assigner | TP-Link Systems Inc. |
| Published | 2026-08-24 |
| Fixed in | 1.5.0 Build 20260603 and later |
| Credit | Junsung Ahn (finder) |
Affected module: mesh. Originally analyzed on ver1.3.1 Build 20251023 rel.43624.
The Deco mesh protocol authenticates AP ↔ RE (satellite) nodes with an RSA group key stored in the group-info partition (fw_data/user_data/group-info, UBI partition 27). The complete RSA-512 key — including the private components d, p, and q — is embedded in the firmware image, and the same key and static group ID ship in every unit of every affected model.
Because the key is private, identical across all devices, and extractable offline from a firmware image anyone can download, an attacker never needs a device-specific credential. Possessing the key alone satisfies the mesh authentication gate (sync_slave_check in discover.lua).
The transport reaching that gate provides no additional secret:
tmpsvr listens on UDP 20002 (TDP) and TCP 20002 (TMP).opcode_whitelist filter is absent from the default /etc/config/firewall, so all opcodes are dispatched without filtering.Once authentication passes with the extracted key, sensitive operations are reachable with no secondary authentication:
Net result: an unauthenticated, LAN-adjacent attacker can impersonate a trusted mesh node, overwrite device and mesh configuration, flash arbitrary firmware, and compromise every node in the mesh — without physical access.
sync_slave_check by RSA-decrypting the group challenge with the extracted key.uci_apply), an unsigned firmware flash (SYNC_FIRMWARE + SYNC_UPGRADE), or a mesh-wide pivot (forward_tmp_request).Full protocol and call-chain analysis is in docs/technical-analysis.md; reproduction methodology is in docs/poc-methodology.md.
1.5.0 Build 20260603 or later from the official TP-Link download pages (below).tmpv2 v2.0): the control channel moves behind Dropbear SSH on port 20001 with an ASSOC handshake and per-session UUID tokens, and tmpsvr binds to 127.0.0.1 only. Static validation of the fix is in docs/patch-validation.md.This repository is published after vendor coordination and the release of a fix. The actual hard-coded RSA-512 private key material and the static group ID are redacted throughout (shown as [REDACTED …]) to prevent direct exploitation of devices that have not yet been updated. The documents describe the vulnerability structure, root cause, and reproduction methodology for defensive and educational purposes; they do not provide turn-key exploit key material.
Documentation and analysis are licensed under CC BY 4.0 · © 2026 Junsung Ahn
| Product | Affected versions | Fixed in |
|---|
| TP-Link Deco XE75 v3 | < 1.5.0 Build 20260603 | 1.5.0 Build 20260603 |
| TP-Link Deco XE5300 v3.6 | < 1.5.0 Build 20260603 | 1.5.0 Build 20260603 |
| TP-Link Deco WE10800 v3.6 | < 1.5.0 Build 20260603 | 1.5.0 Build 20260603 |
| Operation | Path | Effect |
|---|
| Config overwrite | inspect_and_save_subconfig → uci_apply | Full UCI replacement — firewall, DNS, routing, admin credentials |
| Unsigned firmware flash | SYNC_FIRMWARE + SYNC_UPGRADE | No RSA/ECDSA signature check, only an attacker-supplied MD5 → persistent root backdoor |
| Full-mesh pivot | forward_tmp_request | Relay any opcode to every RE using the router's own admin credentials |
| Bulk config push | SYNC_CONFIG | Overwrite the user-config nvram partition of satellites |
| Topology enumeration | fetch_subconfig | Read all node IPs, firmware/config versions, roles |
| Date | Milestone |
|---|
| 2025-10-23 | Vulnerable firmware build analyzed (ver1.3.1 Build 20251023 rel.43624) |
| 2026-03-19 | Vendor beta patch firmware released (ver1.4.999, rel57690 / rel57838), validated statically |
| 2026-06-03 | Fixed release build (1.5.0 Build 20260603) |
| 2026-07-10 | CVE-2026-15469 reserved |
| 2026-08-24 | CVE-2026-15469 published by TP-Link (CNA) |
| English | 한국어 |
|---|
| Technical analysis | technical-analysis.md | technical-analysis.ko.md |
| PoC methodology | poc-methodology.md | poc-methodology.ko.md |
| Patch validation | patch-validation.md | patch-validation.ko.md |