This is a razor blade taped behind the breaker panel, not a landmine in the parking lot
CVE-2026-2877 is a stack-based buffer overflow in the Tenda A18 httpd service, specifically the /goform/WifiExtraSet path handling the wpapsk_crypto5g parameter. Public reversing shows the request reaches fromSetWirelessRepeat, then copies attacker-controlled data into a 16-byte stack buffer with strcpy, creating a crash path and possible code-execution path. The affected version reported by NVD/CPE is Tenda A18 firmware 15.13.07.13.
The vendor's HIGH 8.8 score is technically defensible in a lab because memory corruption on a network appliance can be ugly. In enterprise reality, it overstates urgency: the attack is not unauthenticated internet RCE. The product is a consumer Wi-Fi extender, the management flow is normally reached only after connecting to the extender's local Wi-Fi or LAN admin plane, the CVSS vector itself requires low privileges, and the product line appears EOL with no clear fixed V1.0 firmware published.
4 steps from start to impact.
Reach the extender admin plane
re.tenda.cn or the device IP. Vendor setup docs show the configuration page is intended to be opened only after the user connects to the A18 wireless network or local side of the device. Tooling here is trivial: a browser, curl, or the Python requests PoC path shown in the public GitHub issue.- A Tenda A18 is actually deployed
- The attacker can reach the management interface over local Wi-Fi/LAN or an unusually exposed remote admin path
- The device is running firmware 15.13.07.13
- This is usually not internet-exposed; reaching it often implies local network presence or physical/adjacent proximity
- Many enterprises simply do not deploy this consumer extender class at all
- Branch/home users may replace or isolate these devices before an attacker ever sees them
Authenticate to the web UI
/login/Auth before sending the malicious POST. That matches the CVSS PR:L requirement: this is an authenticated admin-plane bug, not a no-auth smash-the-edge bug. Weaponized tool in public view is a simple Python requests script embedded in GitHub issue #39.- Valid admin credentials, default/weak credentials, or prior access to the saved admin password
- The management UI has not been locked behind stronger local controls
- A configured login password stops opportunistic drive-by abuse
- MFA does not exist here, but WPA/WPA2 plus admin password still creates real gating
- Credential theft is a separate attack stage and meaningfully lowers reachable population
POST /login/Auth followed by immediate POST /goform/WifiExtraSet from unusual clients. Few commercial scanners advertise deep authenticated coverage for this exact embedded UI.Trigger the overflow in WifiExtraSet
configured5g=true and an oversized wpapsk_crypto5g value to /goform/WifiExtraSet. Public reverse engineering shows the request hits set_repeat5, where strcpy copies the attacker string into a 16-byte stack buffer. The disclosed PoC uses a very large POST body to drive the crash path.- The 5 GHz configuration path is reachable
- The vulnerable handler and function are present in firmware 15.13.07.13
- Request parsing accepts the crafted body
- Embedded targets are often unstable under large-input testing, so many actors will settle for DoS instead of reliable RCE
- Exploit reliability for code execution is not demonstrated publicly in a polished framework
- Any inline IPS tuned for oversized suspicious form posts may break the request if management is traversing a monitored segment
POST bodies to /goform/WifiExtraSet and repeated crashes/reboots. Signature coverage is likely bespoke, not universal.Crash httpd or seize the extender
httpd context; the demonstrated outcome is at least device crash/DoS. On a small extender, compromise gives local traffic observation/manipulation opportunities and a foothold on that micro-segment, but it does not magically become domain-wide compromise by itself.- The overflow is exploitable beyond a crash on the target build
- The attacker can tolerate device instability or forced reboot
- Consumer embedded exploitation can be architecture-specific and brittle
- Blast radius is generally one extender or one tiny branch/home segment
- EDR is absent on the appliance, but enterprise impact is still bounded by what this device actually sits in front of
The supporting signals.
| In-the-wild status | No public evidence of active exploitation found in the sources reviewed. Not in CISA KEV and no campaign reporting located. |
|---|---|
| Public PoC | Yes. GitHub issue master-abc/cve #39 includes reverse engineering notes and a Python requests repro that logs in and posts to /goform/WifiExtraSet. |
| EPSS | Low. CVEDetails currently shows about 0.08% EPSS and roughly the 23rd percentile; your supplied value 0.00101 points the same direction: this is not trending like a hot exploitation target. |
| KEV status | Not listed in the CISA Known Exploited Vulnerabilities catalog page reviewed. |
| CVSS vector reality check | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H bakes in PR:L. That matters: this is already telling you the attacker needs some level of authenticated access, which is major downward pressure in real environments. |
| Affected versions | NVD/CPE and the public advisory trail point to Tenda A18 firmware 15.13.07.13. I did not find evidence that A18 V2/V3/V4 firmware trains are included in this CVE. |
| Fixed version | No authoritative fixed V1.0 firmware was located. Tenda's support page still exposes A18V1.0 Firmware V15.13.07.13, and the product search page marks the A18 line EOL. |
| Exposure reality | Vendor docs show setup/admin is reached after connecting to the extender Wi-Fi and browsing to re.tenda.cn. Inference: most real exposure is local/adjacent admin-plane access, not broad public internet reach. |
| Disclosure | Published 2026-02-21 in NVD, sourced from VulDB. |
| Researcher / reporting trail | The public issue credits USTC_BUG_Hunter / GitHub user 942384053. CNA/source in NVD is VulDB. |
noisgate verdict.
The decisive factor is attacker position: this bug requires access to a usually local-only extender management plane plus authenticated admin-level interaction. That sharply narrows the reachable population and makes this much closer to a post-connectivity appliance compromise than an internet-scale emergency.
Why this verdict
- Requires authenticated access: the published repro logs in first and CVSS already says
PR:L, which cuts out the huge class of unauthenticated smash-and-grab attacks - Usually local/adjacent exposure: Tenda's own setup flow assumes the operator is connected to the A18 Wi-Fi/LAN and browses to
re.tenda.cn; that implies post-connectivity reach, not broad edge exposure - Low exploitation pressure: no KEV listing, no public campaign reporting, and low EPSS all push this down from emergency status
- Narrow platform and blast radius: this is one consumer extender model/firmware line, not a ubiquitous enterprise control plane with domain-wide consequences
- EOL amplifies remediation pain, not attacker scale: support weakness makes ownership annoying, but it does not by itself convert a gated local/admin bug into a critical internet event
Why not higher?
Because this is not the classic thing that ruins your weekend at scale: there is no evidence here of unauthenticated public-edge exploitation against a widely exposed enterprise service. The chain depends on prior reachability to a usually local admin plane and low-privilege authentication, which compounds downward pressure on real-world abuse potential.
Why not lower?
It is still memory corruption in network appliance firmware, with public reproduction and plausible code-execution impact. If you actually have these at branches, labs, warehouses, or home-office edge environments, compromise of the device can still enable traffic tampering, persistence on that segment, or service disruption.
What to do — in priority order.
- Inventory every A18 immediately — Find out whether A18 V1.0 / 15.13.07.13 exists anywhere in branch, lab, warehouse, or employee home-office kits. For a MEDIUM verdict there is no mitigation SLA, but you should identify exposure now so the device does not sit invisible until the 365-day remediation window.
- Block management from untrusted networks — Restrict access to the extender web UI so only a small admin subnet or direct local maintenance path can reach it. Even without a formal mitigation deadline for MEDIUM, this is the fastest way to remove the attacker-position advantage.
- Set a strong local admin password — This CVE already requires authenticated access, so removing defaults and weak shared passwords meaningfully reduces reachable abuse. Apply wherever the device is still in service; do it during the next local touch if the unit cannot be centrally managed.
- Retire EOL consumer gear — The A18 line appears EOL and I found no authoritative fixed V1.0 firmware. Treat replacement as the clean remediation path rather than waiting for a patch that may never land; complete within the MEDIUM remediation window.
- Monitor for admin POST abuse — Alert on unusual
POST /login/Authfollowed by largePOST /goform/WifiExtraSetbodies from non-admin hosts. This helps catch exploit attempts in the handful of places where these appliances are still reachable.
- A WAF usually does nothing here because the management UI is commonly local-only and not traversing your normal web protection stack
- EDR on laptops/servers does not protect the extender itself; the vulnerable code runs on the embedded appliance
- Relying on internet perimeter scanning misses the main problem because many of these devices are reachable only from local Wi-Fi/LAN
- Changing upstream router settings alone does not fix the vulnerable
httpdhandler on the extender
Crowdsourced verification payload.
Run this from an auditor workstation on the same local network/Wi-Fi segment as the suspected Tenda A18. Invoke it as bash check_cve_2026_2877.sh http://192.168.0.254 or bash check_cve_2026_2877.sh http://re.tenda.cn admin YourPassword if you want it to attempt authenticated checks; no root is required, but the workstation must be able to reach the device over HTTP.
#!/usr/bin/env bash
# check_cve_2026_2877.sh
# Best-effort verifier for CVE-2026-2877 on Tenda A18.
# Outputs one of: VULNERABLE / PATCHED / UNKNOWN
# Exit codes: 0=VULNERABLE, 1=PATCHED, 2=UNKNOWN, 3=usage/error
set -u
if [[ $# -lt 1 || $# -gt 3 ]]; then
echo "Usage: $0 <base_url> [username] [password]"
exit 3
fi
BASE_URL="${1%/}"
USER="${2:-}"
PASS="${3:-}"
TMPDIR="$(mktemp -d)"
COOKIE_JAR="$TMPDIR/cookies.txt"
BODY="$TMPDIR/body.txt"
trap 'rm -rf "$TMPDIR"' EXIT
fetch() {
local url="$1"
curl -ksS -L --max-time 8 -c "$COOKIE_JAR" -b "$COOKIE_JAR" "$url" 2>/dev/null || true
}
post_form() {
local url="$1"
local data="$2"
curl -ksS -L --max-time 8 -c "$COOKIE_JAR" -b "$COOKIE_JAR" -X POST -d "$data" "$url" 2>/dev/null || true
}
have_cmd() {
command -v "$1" >/dev/null 2>&1
}
md5hex() {
local s="$1"
if have_cmd md5sum; then
printf "%s" "$s" | md5sum | awk '{print $1}'
elif have_cmd md5; then
printf "%s" "$s" | md5 | awk '{print $NF}'
elif have_cmd openssl; then
printf "%s" "$s" | openssl md5 | awk '{print $NF}'
else
return 1
fi
}
contains_a18_markers() {
grep -Eiq '(Tenda|A18|re\.tenda\.cn|Tenda_EXT)' "$BODY"
}
extract_versions() {
grep -Eo 'V[0-9]{2}\.[0-9]{2}\.[0-9]{2}\.[0-9]{2,3}|15\.13\.07\.13|02\.03\.01\.[0-9]+' "$BODY" | sort -u
}
classify_from_body() {
if ! contains_a18_markers; then
return 10
fi
local versions
versions="$(extract_versions || true)"
if echo "$versions" | grep -qx '15\.13\.07\.13'; then
echo "VULNERABLE"
exit 0
fi
if grep -Eiq 'A18[[:space:]]*V(2\.0|3\.0|4\.0)|A18 Pro|V02\.03\.' "$BODY"; then
echo "PATCHED"
exit 1
fi
return 11
}
# 1) Unauthenticated discovery pass
for path in / /index.html /login.html /wizard.html /status.html; do
fetch "$BASE_URL$path" > "$BODY"
if [[ -s "$BODY" ]]; then
classify_from_body || true
fi
done
# 2) Optional authenticated pass using the public login pattern from the disclosed repro
if [[ -n "$USER" && -n "$PASS" ]]; then
if PASSMD5="$(md5hex "$PASS")"; then
post_form "$BASE_URL/login/Auth" "username=$USER&password=$PASSMD5" > /dev/null
for path in / /index.html /status.html /overview.html /advance.html /wireless.html; do
fetch "$BASE_URL$path" > "$BODY"
if [[ -s "$BODY" ]]; then
classify_from_body || true
fi
done
fi
fi
# 3) Final heuristic: if it looks like a Tenda admin UI but we cannot prove firmware/hardware revision
fetch "$BASE_URL/" > "$BODY"
if contains_a18_markers; then
echo "UNKNOWN"
exit 2
fi
echo "UNKNOWN"
exit 2
If you remember one thing.
Sources
- NVD entry for CVE-2026-2877
- Public reversing and reproduction issue
- Tenda A18 support/download page
- Tenda A18 setup guide showing local `re.tenda.cn` management flow
- Tenda A18 Chinese FAQ showing local admin access flow
- Tenda search page marking A18 line EOL
- CISA Known Exploited Vulnerabilities catalog
- CVEDetails entry with EPSS and reference aggregation
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.