A cheap home router's RTSP parser can be tricked into handing over the keys, but only if someone inside the house opens the wrong door first
CVE-2026-12935 is a stack-based buffer overflow (CWE-121) in the RTSP connection tracking kernel module of the TP-Link TL-WR940N v6 consumer wireless router. When a LAN-side client initiates a connection to a malicious RTSP server controlled by an attacker, specially crafted RTSP response data triggers improper memory handling in the kernel conntrack helper. Successful exploitation yields denial of service or full remote code execution as root on the device. Affected firmware spans all TL-WR940N v6 builds prior to (US)_V6_260528, (EU)_V6_260528, and (JP)_V6_260527. Only hardware revision v6 is impacted — no other TL-WR940N revisions or TP-Link models are named in the advisory.
TP-Link assigned a CVSS 4.0 score of 8.7 (High), which accurately reflects the theoretical impact — unauthenticated kernel-level RCE on a network device. However, for enterprise security teams managing fleet infrastructure, this score dramatically overstates operational risk. The TL-WR940N is a sub-$25 consumer 802.11n router with no enterprise management capabilities, no centralized deployment, and near-zero presence in managed corporate networks. The attack also requires user interaction: a LAN client must be lured into connecting to an attacker-controlled RTSP server, meaning this is not a scan-and-pop vulnerability. For the audience managing 10,000 enterprise hosts, this CVE is background noise unless you have unmanaged SOHO equipment at branch locations.
4 steps from start to impact.
Attacker stands up malicious RTSP server
- Attacker controls an internet-reachable server capable of serving RTSP
- Attacker must know the target is behind a TL-WR940N v6 specifically — passive fingerprinting of consumer routers behind NAT is unreliable
LAN client initiates RTSP connection through router
- A LAN-side user must actively initiate or be tricked into initiating an RTSP connection
- The router's RTSP conntrack helper must be enabled (it is by default)
- Requires user interaction — this is not a drive-by that triggers on HTTP browsing alone; the victim must open an
rtsp://URI or an application that negotiates RTSP - Modern browsers do not natively handle
rtsp://URIs; a media player (VLC, etc.) must be installed and configured as a handler - Enterprise proxy/firewall policies typically block outbound RTSP (port 554) from managed networks
Stack buffer overflow triggers in kernel conntrack module
- Vulnerable firmware version is running on the router
- No upstream firewall or proxy blocks the RTSP response
- MIPS ROP chains are well-understood but still require per-firmware-build offset calibration — no universal exploit exists
- No public PoC or weaponized exploit is available as of 2026-08-03
Attacker achieves root shell on the router
- Steps 1-3 succeed
- Compromise of a single consumer router does not give access to enterprise domain infrastructure
- The device has minimal storage and compute — not a useful C2 staging point
- Consumer routers are frequently rebooted or reset, making persistence fragile
The supporting signals.
| In-the-Wild Exploitation | No evidence of active exploitation. Not listed in CISA KEV. No reports from threat intelligence vendors. |
|---|---|
| Proof of Concept | No public PoC as of 2026-08-03. Researcher Ryo Shimada (Powder Keg Technologies, Inc.) performed responsible disclosure. No exploit code on GitHub, Exploit-DB, or PacketStorm. |
| EPSS Score | 0.00807 (≈0.8%) — low probability of exploitation in the next 30 days, consistent with a consumer device CVE with no public exploit. |
| KEV Status | Not listed. No CISA KEV entry. |
| CVSS Vector | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N — 8.7 High. Network-accessible, no privileges required, but user interaction (passive) is required. Impact confined to the vulnerable system. |
| Affected Versions | TP-Link TL-WR940N hardware revision v6 only, all firmware prior to the May 2026 patch. No other hardware revisions or TP-Link models affected. |
| Fixed Versions | US: (US)_V6_260528, EU: (EU)_V6_260528, JP: (JP)_V6_260527. Available from TP-Link regional download centers. |
| Exposure Data | Shodan shows TL-WR940N management interfaces exposed on the internet, but this CVE does not attack the management interface — it attacks the NAT conntrack path, which is only reachable from the LAN side. Internet exposure of the admin panel is irrelevant to this specific attack vector. |
| Disclosure Date | 2026-07-29 (published). CVE reserved 2026-06-22. |
| Credit | Ryo Shimada, University of Tsukuba / Powder Keg Technologies, Inc. |
noisgate verdict.
The single most decisive factor is the near-zero enterprise deployment footprint of the TL-WR940N v6 consumer router — a sub-$25 home device that does not appear in managed enterprise asset inventories. The required user interaction (LAN client must initiate an RTSP connection to an attacker-controlled server) further narrows the realistic attack population to a small fraction of an already negligible installed base.
Why this verdict
- User interaction required: The CVSS vector includes
UI:P— a LAN user must be socially engineered into opening an RTSP stream to an attacker-controlled server. This is not a remotely scannable, zero-click vulnerability. - Consumer-grade device, not enterprise infrastructure: The TL-WR940N v6 is a budget home router. Enterprise networks running 10,000 managed hosts do not deploy this device in any infrastructure role. It has no centralized management, no SNMP fleet support, and no place in a managed network.
- Role multiplier: The TL-WR940N v6 is exclusively a consumer SOHO router. It does not occupy any high-value enterprise role (not a DC, hypervisor, IdP, PAM, backup server, CI/CD, or network edge appliance in the enterprise sense). Even in the worst case — a forgotten branch-office router — compromise is limited to a single LAN segment with no lateral path to domain infrastructure. Blast radius: single network segment. This does not trigger the high-value-role floor.
- No PoC, no exploitation, no KEV: Zero public exploit code, EPSS at 0.8%, and no threat intelligence reporting. The friction of building a working MIPS ROP chain for this specific firmware without a PoC is non-trivial.
- Narrow hardware scope: Only TL-WR940N hardware revision v6 is affected — not v1-v5, not any other TP-Link model. This further restricts the vulnerable population.
Why not higher?
A HIGH or CRITICAL rating would require either active exploitation, a broader enterprise deployment footprint, or a zero-click remote attack vector. None of these conditions are met. The TL-WR940N v6 is a consumer device with no meaningful enterprise presence, the attack requires user interaction, and there is no public exploit or KEV listing. The blast radius is confined to a single LAN segment behind a home router.
Why not lower?
Despite the consumer-device context, this is still a kernel-level RCE on a network device that processes all traffic for its LAN. If an organization does have unmanaged TL-WR940N v6 units at remote worker homes or small branch offices, a compromise could enable traffic interception and DNS hijacking for all users on that segment. The lack of any security controls on the device (no ASLR, no stack canaries) makes exploitation reliable once an attacker invests in offset research. LOW would understate the impact for the small population that is actually affected.
What to do — in priority order.
- Audit asset inventory for TL-WR940N v6 units — Search your CMDB, NAC logs, and DHCP fingerprinting for TL-WR940N devices. If you have zero, close this ticket. If you find units at branch offices or remote-worker homes, prioritize firmware updates within the noisgate 365-day remediation window.
- Block outbound RTSP (TCP 554) at the perimeter — If your firewall or proxy does not already block outbound RTSP, add a deny rule. This eliminates the attack vector entirely by preventing LAN clients from reaching attacker-controlled RTSP servers. This is a permanent hardening measure regardless of this CVE.
- Update affected routers to patched firmware — Flash the appropriate regional firmware:
(US)_V6_260528,(EU)_V6_260528, or(JP)_V6_260527. For unmanaged consumer devices, this may require coordinating with remote workers. Target completion within the noisgate 365-day remediation window. - Replace consumer routers with managed equipment — Long-term, replace any TL-WR940N units with enterprise-managed access points or SD-WAN appliances that support centralized firmware management and security monitoring.
- Router admin password change — does not help. This CVE does not attack the management interface; it exploits the kernel conntrack module processing transit RTSP traffic. Authentication is irrelevant.
- Disabling remote management — does not help. The attack vector is LAN-to-WAN RTSP traffic passing through NAT, not inbound management access.
- IPS/IDS on the router itself — the TL-WR940N has no onboard IDS capability. The overflow occurs in the kernel before any application-layer inspection.
Crowdsourced verification payload.
Run this from any Linux/macOS workstation that can reach the router's management interface (default 192.168.0.1). Requires curl and network access to the router's web UI. Pass the router IP as the first argument: bash check_wr940n.sh 192.168.0.1
#!/usr/bin/env bash
# check_wr940n.sh — Check TL-WR940N v6 firmware for CVE-2026-12935
# Usage: bash check_wr940n.sh <router_ip>
# Requires: curl, grep
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN
set -euo pipefail
ROUTER_IP="${1:-192.168.0.1}"
TIMEOUT=10
echo "[*] Checking TL-WR940N at ${ROUTER_IP} for CVE-2026-12935..."
# Attempt to pull firmware version from the router's status page
# TL-WR940N v6 exposes version info at the system status page
RESPONSE=$(curl -sk --max-time "${TIMEOUT}" "http://${ROUTER_IP}/" 2>/dev/null || true)
if [ -z "${RESPONSE}" ]; then
echo "[!] Could not connect to router at ${ROUTER_IP}"
echo "UNKNOWN"
exit 2
fi
# Check if this is a TL-WR940N
if ! echo "${RESPONSE}" | grep -qi 'WR940N'; then
echo "[!] Device at ${ROUTER_IP} does not appear to be a TL-WR940N"
echo "UNKNOWN"
exit 2
fi
# Try to extract firmware version string
# Common patterns: "3.18.1 Build 260528" or similar
FW_VERSION=$(echo "${RESPONSE}" | grep -oiE '[0-9]+\.[0-9]+\.[0-9]+ Build [0-9]+' | head -1 || true)
if [ -z "${FW_VERSION}" ]; then
echo "[!] Could not extract firmware version. Check manually."
echo "[!] Log into http://${ROUTER_IP} -> System Tools -> Firmware Upgrade"
echo "UNKNOWN"
exit 2
fi
echo "[*] Detected firmware: ${FW_VERSION}"
# Extract build date (YYMMDD format)
BUILD_DATE=$(echo "${FW_VERSION}" | grep -oE '[0-9]{6}$' || true)
if [ -z "${BUILD_DATE}" ]; then
echo "[!] Could not parse build date from firmware version"
echo "UNKNOWN"
exit 2
fi
# Patched builds are 260527 (JP) or 260528 (US/EU) and later
if [ "${BUILD_DATE}" -ge 260527 ] 2>/dev/null; then
echo "[+] Firmware build ${BUILD_DATE} is at or above patched version (260527/260528)"
echo "PATCHED"
exit 0
else
echo "[-] Firmware build ${BUILD_DATE} is BELOW patched version (260527/260528)"
echo "VULNERABLE"
exit 1
fiIf you remember one thing.
260527/260528). As a quick compensating control, block outbound RTSP (TCP 554) at your perimeter firewall, which neutralizes the attack vector entirely. Long-term, replace any consumer-grade routers with managed enterprise equipment that supports centralized patching.Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.