← Back to Feed CACHED · 2026-11-02 01:53:23 · CACHE_KEY CVE-2026-120283
CVE-2026-120283 · CWE-119 · Disclosed 2026-11-02

Linksys E8450 portal.cgi hidden_timezone stack-based buffer overflow

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

A mailbox that ignores the 'no packages over 50 lbs' sign and lets anyone leave a crate on the porch

The Linksys E8450 firmware build 1.2.00.360516 has a stack-based buffer overflow in /www/cgi-bin/portal.cgi. The strcpy call that handles the hidden_timezone parameter is the bug: an attacker can hand it an oversized value and smash the stack. The advisory says the attack can be executed remotely, and the vendor did not respond when contacted.

The vendor's CRITICAL 10.0 is theoretically true for an internet-facing pre-auth RCE, but it does not match real-world deployment. This is a home/SOHO Wi-Fi router, not an enterprise edge appliance such as FortiGate, PAN-OS, or F5 BIG-IP. Default WAN management is typically off, public exploit code is not available, and the exposed population is small — so a 10.0 should be downgraded. It is still a serious bug if the router is reachable, because the impact is persistent control of the network edge.

"A textbook stack smash in a home-office edge device; real-world exposure narrows a 10.0 into a HIGH, not a fleetwide emergency."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Locate an E8450 with reachable web management

An attacker finds a vulnerable Linksys E8450 either by scanning Shodan/Censys for exposed management ports or by gaining access to the same LAN/WLAN. The portal.cgi web interface listens on TCP 80/443 by default, but WAN-side admin access is not enabled out of the box.
Conditions required:
  • Attacker can reach TCP/80 or TCP/443 on the router
  • Remote management is enabled, or attacker is on the same LAN/WLAN
Where this breaks in practice:
  • Default Linksys configuration disables WAN-side admin access
  • Dynamic home IP addresses and low enterprise footprint make wide targeting inefficient
  • No public Shodan/GreyNoise data shows a large exposed E8450 management population
Detection/coverage: Shodan/Censys can identify exposed E8450 units; a NIDS on trusted VLANs can alert on inbound portal.cgi requests from untrusted zones.
STEP 02

Reach the pre-auth portal.cgi handler

The vulnerable code is in /www/cgi-bin/portal.cgi. The hidden_timezone parameter is processed without a valid admin session in the scenario described by the advisory, so the attacker only needs HTTP access to the endpoint.
Conditions required:
  • HTTP access to portal.cgi is available
  • The parameter is accepted without authentication on the target build
Where this breaks in practice:
  • Some firmware deployments may have the endpoint behind login or a CSRF token, but the advisory implies pre-auth reachability
  • Even if pre-auth, the attacker still needs a network path to the router
Detection/coverage: A reverse proxy or WAF can log and block requests to portal.cgi containing unexpected timezone parameters.
STEP 03

Send an oversized hidden_timezone argument

A request such as POST /cgi-bin/portal.cgi with hidden_timezone=AAAA... triggers strcpy to copy the attacker-controlled string into a fixed-size stack buffer. The missing length check causes a stack smash.
Conditions required:
  • Payload is long enough to overwrite the saved return address
  • No input filtering or max-length enforcement is present
Where this breaks in practice:
  • Exact overflow offset depends on the target firmware/build
  • MIPS/ARM targets require custom ROP chains; generic x86 shellcode does not work
  • A failed attempt may crash the router and alert the user via reboot
Detection/coverage: Network anomaly detection can spot large POST bodies to portal.cgi; the router itself has no host-based detection.
STEP 04

Weaponize the overflow for code execution and persistence

The attacker overwrites the return address and executes a MIPS/ARM ROP chain or shellcode. The web process typically runs with high privilege, so the attacker can modify DNS settings, intercept traffic, install malicious firmware, or use the router as a pivot.
Conditions required:
  • Successful control of the instruction pointer
  • Bypasses for ASLR/NX if enabled on the firmware
  • The device does not reboot before persistence is established
Where this breaks in practice:
  • No public PoC or Metasploit module is available as of reassessment
  • Build-specific offsets and possible NX/ASLR make reliable exploitation non-trivial
  • Router watchdog timers may reset the process before persistence
Detection/coverage: No EDR on the router; post-exploitation is visible mainly through DNS/TLS traffic analysis, firmware hash changes, or new management-plane connections.
03 · Compensating Control

1
HIGH 7.2→MEDIUM 5.5
SEVERITY REDUCED
Disable WAN-side management and restrict admin access to a trusted LAN/VLAN — Breaks the internet-reachability assumption in the vendor CVSS. Apply within 3 days if the unit is currently internet-exposed; otherwise within the noisgate mitigation SLA of 30 days. Track the vendor firmware update within the noisgate remediation SLA of 180 days.
2
HIGH 7.2→LOW 3.5
SEVERITY REDUCED
Place the router behind a WAF or reverse proxy that drops oversized hidden_timezone values — If HTTP management must be exposed, enforce a maximum parameter length and block binary or shellcode-looking input before it reaches portal.cgi. Deploy within 30 days per the noisgate mitigation SLA.
3
HIGH 7.2→LOW 3.0
SEVERITY REDUCED
Segment the E8450 into an isolated VLAN with no trusted path to corporate assets — Limits post-exploitation sniffing and pivoting. Use a guest SSID and deny the router's management VLAN from untrusted endpoints. Deploy within 30 days per the noisgate mitigation SLA.
4
HIGH 7.2→MEDIUM 4.0
SEVERITY REDUCED
Monitor egress DNS and TLS from the E8450 network for interception behavior — If the router is compromised, watch for new DNS server settings, certificate anomalies, or traffic to known C2. Implement within 30 days per the noisgate mitigation SLA.
What doesn't work
  • Changing the admin password does not stop this pre-auth stack overflow.
  • Enabling a stronger Wi-Fi passphrase does not block an attacker already on the LAN or with remote-management access.
  • UPnP and WPA3 settings are unrelated to the HTTP CGI flaw and do not reduce the risk.
04 · Intelligence Metadata

The supporting signals.

CISA KEV statusNot listed as of 2026-11-02; no known active exploitation campaigns
In-the-wild statusNo public reports of exploitation in GreyNoise, Shodan, or threat intel feeds at reassessment
Proof-of-concept availabilityNo public PoC on GitHub, PoCIndex, ExploitDB, or nuclei templates identified at reassessment
EPSS score / percentileNot present in FIRST EPSS as of reassessment; expected low percentile for a consumer router CVE
CVSS vector interpretationCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H assumes internet-reachable pre-auth RCE with broad scope change; real-world exposure and build-specific exploitation lower this
Affected version rangesLinksys E8450 firmware 1.2.00.360516; the advisory names this build, and patch status is unknown
Fixed versionsVendor did not respond; no patched version announced at disclosure
Scanning/exposure dataNo public GreyNoise/Shodan/Censys dataset for this CVE; E8450 management interfaces are typically LAN-only
Disclosure date2026-11-02
Reporting researcher/orgNot named in the provided CVE record; vendor was contacted but did not respond

Sources.

  1. NVD CVE-2026-120283
  2. CVE.org Record CVE-2026-120283
  3. CWE-119 Improper Restriction of Operations within the Bounds of a Memory Buffer
  4. CISA Known Exploited Vulnerabilities Catalog
  5. FIRST EPSS
  6. GreyNoise CVE query
  7. Shodan Linksys E8450 query
  8. PoCIndex CVE-2026-120283
05 · The Call

Final Verdict
↓ DOWNGRADED to HIGH (7.2/10)

Why this verdict

  • Friction audit: default WAN management is disabled, so the vendor's AV:N pre-auth RCE realistically requires LAN/WLAN access or a rare remote-management exposure — this removes most of the 10.0 attack surface.
  • Exploit maturity: no public PoC, no KEV entry, and no observed exploitation; build-specific MIPS/ARM ROP chains raise attack complexity from Low to High for reliable use.
  • Role multiplier: the realistic deployed role is home/SOHO edge. This model is not a canonical enterprise perimeter, identity, hypervisor, or CI/CD component, so the high-value-role floor does not apply; enterprise installed-base share is expected to be less than 1%.
  • Score adjustment: start 10.0; subtract 1.2 for default network exposure, 0.8 for absent exploit maturity, and 0.8 for constrained blast radius = 7.2.

Why not higher?

Not CRITICAL because compromising one home/SOHO router does not give domain, fleet, or supply-chain scale. Default WAN admin is off, so internet-wide unauthenticated exploits are not a reliable mass-vector. The vendor's 10.0 assumes a trivially reachable and trivially exploitable target that the evidence does not support.

Why not lower?

Not MEDIUM or lower because the endpoint is unauthenticated, the flaw is a classic stack overflow leading to code execution, and successful exploitation grants persistent control of the network edge. For remote workers, that router can become a silent DNS/credential interception point; even if internet exposure is rare, LAN-side or phishing-enabled access is plausible enough to keep severity HIGH.

06 · Verification

Crowdsourced verification payload.

Run this from an auditor workstation or management host that can reach the router's web UI, typically python check_e8450.py 192.168.1.1. No special privileges are required; it makes read-only HTTP requests.

noisgate-verify.py
PYTHONREAD-ONLYSAFE
#!/usr/bin/env python3
"""Check Linksys E8450 firmware for CVE-2026-120283."""
import sys, re, argparse, ssl, urllib.request

VULN_VERSION = "1.2.00.360516"

def fetch(url, timeout=5):
    ctx = ssl.create_default_context()
    ctx.check_hostname = False
    ctx.verify_mode = ssl.CERT_NONE
    req = urllib.request.Request(url, headers={"User-Agent": "noisgate-verifier"})
    try:
        with urllib.request.urlopen(req, timeout=timeout, context=ctx) as r:
            return r.status, r.read(200000).decode('utf-8', 'ignore')
    except Exception as e:
        return None, str(e)

def check_host(host):
    endpoints = [
        f"http://{host}/",
        f"http://{host}/cgi-bin/portal.cgi?hidden_timezone=UTC",
        f"http://{host}/sysinfo.cgi",
    ]
    model_seen = False
    version_seen = None
    for url in endpoints:
        status, body = fetch(url)
        if status is None:
            continue
        if "E8450" in body or "Linksys" in body:
            model_seen = True
        m = re.search(r'1\.2\.00\.\d{6}', body)
        if m:
            version_seen = m.group(0)
        if "portal.cgi" in url and status == 200:
            model_seen = True
    if model_seen and version_seen == VULN_VERSION:
        return "VULNERABLE"
    if model_seen and version_seen and version_seen != VULN_VERSION:
        return "PATCHED"
    return "UNKNOWN"

if __name__ == "__main__":
    p = argparse.ArgumentParser(description="Verify Linksys E8450 CVE-2026-120283 exposure")
    p.add_argument("host", help="Router IP address or hostname")
    args = p.parse_args()
    result = check_host(args.host)
    print(result)
    if result == "VULNERABLE":
        sys.exit(1)
    if result == "PATCHED":
        sys.exit(0)
    sys.exit(2)