← Back to Feed CACHED · 2026-06-30 00:52:01 · CACHE_KEY CVE-2026-13517
CVE-2026-13517 · CWE-119 · Disclosed 2026-06-29

A flaw has been found in Tenda JD12L 16

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A consumer-grade router that nobody in a 10,000-host fleet should be running gets another stack smash in its web UI

CVE-2026-13517 is a classic stack-based buffer overflow in the formWifiBasicSet handler at /goform/WifiBasicSet on the Tenda JD12L SOHO router, firmware 16.03.53.23. Sending an over-length security_5g parameter to the management web interface corrupts the stack — the typical end state on these MIPS/ARM Tenda firmwares is arbitrary code execution as root on the router, or at minimum a wedge of the management plane. The bug class is identical to the CVE-2026-13515/16/18/19 cluster filed against the same device on the same day, which suggests a single researcher fuzzed the entire /goform/* surface and dumped findings in bulk.

The vendor scored this HIGH (8.8) with PR:L — authenticated. That's directionally fair for the bug itself (auth-required RCE on an embedded device IS high impact on that device), but the score completely ignores the deployment reality: this is a consumer/SOHO product with no realistic place in a managed enterprise estate. Tenda has not patched, EPSS sits at 0.466%, and the CVE is not in CISA KEV. For a defender of 10,000 hosts, the only path to material risk is if Tenda JD12Ls are sitting at remote-worker home networks or unmanaged branches — and even then, the management UI is rarely WAN-exposed by default.

"SOHO router buffer overflow with public PoC but no patch — enterprise blast radius is near zero unless you're shipping Tenda gear to branch offices."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Reach the router's web management interface

The attacker needs HTTP/HTTPS access to the JD12L's admin web server, which by default listens on the LAN side. Reaching it from the internet requires the owner to have manually enabled remote management, exposed port 80/443 via UPnP, or for the attacker to already be on the local Wi-Fi/LAN segment. Tools used: nmap, masscan, or a Shodan/Censys query for the Tenda HTTP server banner.
Conditions required:
  • Network reachability to the router's admin web service
  • Router is the specific JD12L model on firmware 16.03.53.23
Where this breaks in practice:
  • Default deployment exposes admin UI to LAN only
  • Enterprise networks should never route to a consumer-grade Tenda WAN-side
  • Bitsight/Censys-class scans show only a tiny minority of Tenda SOHO units expose admin to WAN
Detection/coverage: Shodan/Censys can fingerprint the Tenda HTTP server; corporate NDR will flag inbound 80/443 to a non-sanctioned device class.
STEP 02

Authenticate to the admin UI

CVSS PR:L says credentials are required to reach the vulnerable handler. In practice that means default admin/admin (most Tenda lines), the owner's chosen password, or a session hijacked via CSRF/replay. Attackers typically run a hydra credential-stuffing pass against the login endpoint, or chain an unauth bug from the sibling CVE cluster to bypass this step entirely.
Conditions required:
  • Valid admin credentials OR a working unauth bypass on the same firmware
Where this breaks in practice:
  • Owner changed the default password
  • Account lockout (rarely implemented on Tenda firmware — minimal friction)
Detection/coverage: Authentication-log review is essentially nonexistent on consumer Tenda firmware; no enterprise telemetry.
STEP 03

POST oversized security_5g to /goform/WifiBasicSet

Once authenticated, the attacker issues a POST to /goform/WifiBasicSet with a security_5g value that overruns the fixed-size stack buffer in formWifiBasicSet. Public PoCs use a Python requests script that pads the parameter past the saved return address. The result is either a controlled overwrite of the return pointer or a crash of the httpd process.
Conditions required:
  • Authenticated session cookie or basic-auth header
  • Knowledge of the offset and architecture (public PoC ships both)
Where this breaks in practice:
  • None at this step — the handler is reachable and the offset is published
Detection/coverage: No IDS signatures from major vendors yet; a custom Suricata rule on oversized security_5g POSTs to /goform/WifiBasicSet is trivial to author.
STEP 04

Gain root on the router or DoS the management plane

MIPS/ARM Tenda firmwares historically lack ASLR/NX enforcement on the httpd binary, so a classic ROP or shellcode payload yields root shell. Worst case for a 10,000-host fleet is the router being conscripted into a Mirai/Mozi-style botnet or used as a pivot into the LAN behind it. Tools: msfvenom, radare2, public Tenda exploitation frameworks on GitHub.
Conditions required:
  • Successful overflow
  • Payload tuned to the specific firmware build
Where this breaks in practice:
  • Firmware diversity across Tenda revisions often breaks one-shot exploits
  • Router reboot watchdog clears non-persistent payloads
Detection/coverage: Egress NDR will catch the router beaconing to known botnet C2; otherwise invisible to enterprise tooling.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone reported. Not in CISA KEV. No named campaigns. Historical pattern: Tenda SOHO bugs get scooped by Mirai/Mozi variants months after PoC drops.
Public PoCYes — referenced as published alongside disclosure. Sibling CVEs in the same cluster (CVE-2026-13515/16/18/19) all ship PoCs from the same researcher.
EPSS0.00466 (~0.47%) — bottom-third of CVEs by predicted 30-day exploitation probability.
KEV statusNot listed as of 2026-06-30.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H → vendor 8.8 HIGH. The PR:L is doing real work here — strip it and you'd get 9.8.
Affected versionsTenda JD12L firmware 16.03.53.23 (only confirmed build; other revisions likely vulnerable but untested).
Fixed versionNone. Tenda has not shipped a patch and has no public advisory for this CVE.
Exposure dataShodan returns a small population of Tenda JD12L management interfaces WAN-exposed (typically <1,000 globally). Enterprise exposure is near-zero — this is a residential/SMB product.
Disclosure2026-06-29, coordinated through a third-party (likely VulDB/CNVD pipeline based on the sibling-CVE cluster pattern).
ResearcherBulk filing pattern suggests a single fuzzing researcher; specific name not yet attributed in the advisory.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.8/10)

Downgraded one bucket because the *decisive factor is deployment-role mismatch*: the Tenda JD12L is a consumer/SOHO router with effectively zero footprint in a managed enterprise estate, and the bug requires authentication on a LAN-side admin UI. The chain ends at compromise of a single non-fleet, non-identity device — there is no role multiplier that promotes it into an identity, hypervisor, or edge-appliance blast radius.

HIGH Technical accuracy of the bug — stack overflow in `formWifiBasicSet` is well-documented across the Tenda CVE cluster
HIGH Enterprise blast radius assessment — Tenda JD12L is not an enterprise-deployed device class
MEDIUM Exploit weaponization timeline — Tenda bugs sometimes get rolled into botnet kits months later

Why this verdict

  • Authentication required (PR:L) — first compounding friction. Even on the LAN side, the attacker needs valid admin creds OR a chained auth bypass.
  • Consumer-grade deployment role — Tenda JD12L is not in any enterprise standard build. No realistic high-value-role spectrum: this never sits as an IdP, hypervisor, edge firewall, or domain controller. Blast radius caps at the single device + its LAN.
  • No WAN exposure by default — Shodan footprint is small; corporate networks should never route to one of these on the WAN side.
  • Role multiplier: Worst plausible role for this component is a remote-worker home router → outcome is single-LAN pivot or botnet conscription, NOT fleet/identity/supply-chain compromise. Floor stays at MEDIUM.
  • No KEV, low EPSS (0.47%) — no active campaigns, no urgency signal from CISA or FIRST.
  • No vendor patch available — this would normally pressure UP, but the absence of enterprise exposure neutralizes it: you can't be late on a patch that doesn't exist for a device you don't own.

Why not higher?

Not HIGH because there is no enterprise blast radius. The friction audit (auth required, LAN-side admin UI, consumer product class, no fleet/identity role) compounds to remove the urgency that the vendor's 8.8 implies for a generic 'authenticated RCE.' No KEV, no active exploitation, EPSS well under 1%.

Why not lower?

Not LOW because a public PoC exists, the bug is trivially weaponizable once you're on the LAN, and the absence of any vendor patch is permanent risk for anyone who *does* own one of these. Remote workers running a JD12L at home plus a corporate VPN tunnel is a plausible — if uncommon — pivot path.

05 · Compensating Control

What to do — in priority order.

  1. Inventory for any Tenda JD12L (or any consumer Tenda hardware) anywhere your endpoints terminate — Run an asset-discovery sweep across remote-worker subnets, branch offices, and lab environments. Pull DHCP server vendor OUI logs and EDR egress-gateway fields for the Tenda OUI. If verdict is MEDIUM there is no mitigation SLA — fold this into the 365-day backlog hygiene cycle.
  2. Block WAN-side access to router admin UIs at the perimeter for any branch/remote-worker network you control — Egress and ingress ACLs that drop port 80/443 destined for non-sanctioned management endpoints. Pushes the attack back to LAN-local only, which removes the entire internet-borne threat model for this CVE.
  3. Enforce strong admin credentials and disable remote-management on any Tenda device that must remain — Default creds + WAN management is the only way this CVE matters at scale. A password policy plus disabling remote admin reduces the realistic attacker pool to LAN-adjacent only.
  4. Replace JD12L units with managed enterprise gear on any production path — Tenda is not an enterprise-supported vendor and has no patch SLA. For anything load-bearing, swap to a managed device class (Meraki/Fortinet/Aruba). Treat this as the long-tail remediation since no vendor patch is coming.
What doesn't work
  • EDR on the endpoint behind the router — the compromise lives in the router's httpd, not on the Windows/macOS host. EDR has no visibility.
  • Patching — there is no patch. Waiting on Tenda is not a control.
  • WAF in front of the router — irrelevant; nobody fronts a consumer router with a WAF, and the bug is in the device's own admin UI.
  • Network segmentation of the corporate LAN — doesn't help if the vulnerable router IS the segmentation point on a remote-worker network.
06 · Verification

Crowdsourced verification payload.

Run this from an auditor workstation or network-management jump host that can reach the candidate router's admin IP. Invoke as ./check_tenda_jd12l.sh 192.168.0.1 — needs only network reachability, no creds. It fingerprints the device by HTTP response and firmware string, then reports VULNERABLE / PATCHED / UNKNOWN.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# noisgate verification: CVE-2026-13517 — Tenda JD12L formWifiBasicSet stack overflow
# Usage: ./check_tenda_jd12l.sh <router-ip>
# Exit codes: 0=PATCHED/not-applicable, 1=VULNERABLE, 2=UNKNOWN

set -u
TARGET="${1:-}"
if [[ -z "$TARGET" ]]; then
  echo "Usage: $0 <router-ip>" >&2
  exit 2
fi

UA="noisgate-verifier/1.0"
TIMEOUT=5

# 1. Reach the admin web UI
HTTP_BODY=$(curl -sk --max-time "$TIMEOUT" -A "$UA" "http://${TARGET}/" || true)
if [[ -z "$HTTP_BODY" ]]; then
  echo "UNKNOWN: no HTTP response from ${TARGET}"
  exit 2
fi

# 2. Fingerprint Tenda + JD12L
if ! grep -qiE 'tenda|JD12L' <<< "$HTTP_BODY"; then
  echo "PATCHED: target is not a Tenda JD12L (no fingerprint match)"
  exit 0
fi

# 3. Pull firmware/version string from common Tenda endpoints
VER=""
for path in /goform/SysStatusInfo /goform/getSysStatus /system_status.asp; do
  R=$(curl -sk --max-time "$TIMEOUT" -A "$UA" "http://${TARGET}${path}" || true)
  if grep -qE '16\.03\.53\.23' <<< "$R"; then
    VER="16.03.53.23"
    break
  fi
done

# 4. Probe the vulnerable handler existence (non-destructive — short value, no overflow)
PROBE=$(curl -sk --max-time "$TIMEOUT" -A "$UA" -o /dev/null -w '%{http_code}' \
  -X POST "http://${TARGET}/goform/WifiBasicSet" \
  --data 'security_5g=noisgate_probe' || true)

if [[ "$VER" == "16.03.53.23" ]]; then
  echo "VULNERABLE: Tenda JD12L firmware 16.03.53.23 confirmed; handler /goform/WifiBasicSet responded HTTP ${PROBE}"
  exit 1
fi

if [[ "$PROBE" =~ ^(200|302|401|403)$ ]]; then
  echo "UNKNOWN: Tenda device detected, handler reachable (HTTP ${PROBE}), but firmware string not confirmed as 16.03.53.23"
  exit 2
fi

echo "PATCHED: Tenda device detected but vulnerable handler not present or firmware differs (HTTP ${PROBE})"
exit 0
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: don't lose sleep over this one. Verdict is MEDIUM because the Tenda JD12L has effectively zero enterprise footprint and the bug requires authentication on a LAN-side admin UI. Per the noisgate mitigation SLA, MEDIUM has no mitigation deadline — go straight to the noisgate remediation SLA of ≤ 365 days, which here means folding 'inventory + retire any Tenda SOHO gear' into your normal asset-hygiene backlog. The one exception: if your remote-worker support program ships or tolerates consumer Tenda routers, push a 30-day comms to those users to change default admin passwords and disable WAN remote-management; that closes the realistic exploitation path without waiting on a Tenda patch (which is not coming).

Sources

  1. OffSeq Threat Radar — CVE-2026-13517
  2. Vulnerability-Lookup (CIRCL) — CVE-2026-13517
  3. GHSA-38gh-hfgh-77mp (CIRCL mirror)
  4. OpenCVE — Tenda vendor CVE list
  5. OffSeq — CVE-2026-13518 (sibling cluster)
  6. OffSeq — CVE-2026-13515 (sibling cluster)
  7. OffSeq — CVE-2026-13516 (sibling cluster)
  8. OffSeq — CVE-2026-13519 (sibling cluster)
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.