An unlocked front door that was discontinued a decade ago, yet thousands still stand wide open on the internet
CVE-2024-12847 is an unauthenticated OS command injection in the setup.cgi endpoint of the NETGEAR DGN1000 (firmware < 1.1.00.48) and DGN2200 v1 DSL modem-routers. The syscmd function passes HTTP parameters directly to a shell without sanitization, granting root-level RCE to any attacker who can reach the web management interface. A Metasploit module (exploit/linux/http/netgear_dgn1000_setup_unauth_exec) has existed since 2013, and Mirai-family botnets have been mass-exploiting these devices for years. FOFA/Hunter scans report ~327K exposed instances globally.
The vendor's CVSS 9.8 is technically accurate for the vulnerability mechanics — unauthenticated, network-reachable, no user interaction, full compromise. However, for enterprise patch-management triage, the score overstates urgency because: (1) the DGN1000 is a consumer-grade SOHO DSL modem-router, not enterprise infrastructure; (2) the device is End-of-Life with no firmware updates forthcoming — the action is *replacement*, not *patching*; (3) the realistic enterprise installed base is near-zero. The real risk is shadow-IT units in branch offices, acquired-company locations, or employee home networks bridging into corporate VPN.
4 steps from start to impact.
Discover exposed management interface
product:"NETGEAR DGN1000") return hundreds of thousands of results. No authentication or credentials are needed at this stage.- Target DGN1000 management interface reachable over HTTP
- Enterprise networks rarely deploy consumer DSL modem-routers
- Well-managed networks block inbound HTTP to infrastructure devices
Send crafted request to setup.cgi
/setup.cgi with the syscmd parameter containing an injected OS command (e.g., wget to pull a payload, or a reverse shell one-liner). The setup.cgi endpoint does not require authentication. The injected command is passed directly to /bin/sh as root.- HTTP connectivity to the target on the management port
- Target firmware version < 1.1.00.48
- If the device has been updated to 1.1.00.48 (unlikely given EOL)
- Some ISP-provisioned units may have customized firmware disabling setup.cgi
setup.cgi?syscmd= pattern; Metasploit module triggers standard IoT exploit signaturesAchieve root shell on router
- Successful command injection from step 2
- Device has limited storage and compute — useful mainly for botnet enrollment or LAN pivot, not as a persistent C2 host
Pivot or weaponize
- Downstream hosts or VPN tunnels traversing the compromised router
- Enterprise VPN with split-tunneling disabled limits lateral movement
- Modern TLS and HSTS reduce MITM effectiveness
- EDR on corporate endpoints detects post-pivot activity
The supporting signals.
| In-the-Wild Exploitation | Active since at least 2017. Mirai variants and other IoT botnets have been exploiting this flaw for years. Shadowserver Foundation observed exploitation on 2025-02-06. |
|---|---|
| PoC / Exploit Availability | Multiple public exploits. Metasploit module exploit/linux/http/netgear_dgn1000_setup_unauth_exec (EDB-25978, disclosed 2013). Standalone PoC published January 2025. |
| EPSS | 0.29939 (≈30th percentile) — indicates moderate predicted exploitation probability, though real-world exploitation is already confirmed. |
| KEV Status | Not listed on CISA KEV as of 2026-08-17. Likely excluded because the device is consumer-grade and EOL rather than a federal-agency asset class. |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — 9.8 Critical. Network-reachable, zero-click, full CIA impact. Vector is accurate for the vulnerability mechanics. |
| Affected Versions | NETGEAR DGN1000 firmware < 1.1.00.48, NETGEAR DGN2200 v1 all firmware versions |
| Fixed Version | DGN1000 firmware 1.1.00.48 (released years ago). DGN2200 v1 has no fix — EOL with no planned updates. |
| Exposure Data | FOFA/Hunter report ~327K exposed services globally. These are overwhelmingly consumer/SOHO deployments, not enterprise. |
| Device Status | End of Life / End of Service. NETGEAR has discontinued the DGN1000 product line with no further security updates planned. NETGEAR EOS page. |
| Researcher / Source | Original disclosure: Michael Messner (2013). CVE-2024-12847 assigned in 2025 as a re-identification of the long-known flaw. PoC write-up by Do Son (SecurityOnline.info). |
noisgate verdict.
Downgraded from CRITICAL because the affected device is a consumer-grade EOL SOHO router with negligible enterprise installed base — the typical enterprise fleet of 10,000 hosts contains zero DGN1000 units. The decisive factor preventing a full downgrade to MEDIUM is the network-edge role: any DGN1000 that *does* exist in the environment acts as a perimeter gateway with trivial unauth RCE actively exploited by botnets, making it a direct LAN-pivot point.
Why this verdict
- Trivial exploitability: Unauthenticated, no user interaction, public Metasploit module since 2013 — attack complexity is effectively zero.
- Active botnet exploitation: Mirai variants and other IoT botnets have weaponized this since at least 2017. This is not theoretical.
- EOL with no remediation path: The device cannot be patched — only replaced. This changes the defender's action from 'apply update' to 'find and decommission.'
- Role multiplier: The DGN1000 is a network edge appliance (router/gateway). If present, it IS the perimeter. Compromise grants the attacker a position to intercept all traffic and pivot into the LAN. However, the DGN1000 is consumer-grade SOHO equipment — estimated <0.1% of enterprise network edge devices are DGN1000 units. The floor for network-edge devices applies, but the near-zero enterprise installed base caps the verdict at HIGH rather than CRITICAL.
- Friction — consumer device class: Enterprise procurement and network architecture standards exclude consumer DSL modem-routers. Presence in enterprise is limited to shadow IT, acquired-company remnants, or employee home offices.
Why not higher?
The DGN1000 is a discontinued consumer SOHO device, not enterprise-class infrastructure. An enterprise fleet of 10,000 managed hosts has effectively zero DGN1000 units unless there is uncontrolled shadow IT or an acquisition tail. The network-edge role floor is satisfied at HIGH, but elevating to CRITICAL requires ≥10% of the installed base occupying the high-value role — and the entire installed base of this product sits outside the enterprise perimeter.
Why not lower?
Despite the consumer device class, this vulnerability has confirmed active exploitation by botnets since 2017, a public Metasploit module, and zero authentication requirements. Any DGN1000 in the environment — even in a branch office or home-office VPN scenario — is a fully compromised perimeter device the moment it's internet-reachable. The blast radius of a compromised gateway (traffic interception, DNS hijacking, LAN pivot) prevents downgrading below HIGH.
What to do — in priority order.
- Run an asset discovery scan for NETGEAR OUI and DGN1000 HTTP banners — You can't patch what you can't find. Use your NAC, network scanner, or DHCP logs to identify any DGN1000/DGN2200v1 devices. Shodan/Censys queries against your external IP ranges will catch internet-exposed units. Complete this within the noisgate mitigation SLA of 30 days.
- Decommission and replace any discovered units immediately — There is no safe firmware version for the DGN2200v1, and the DGN1000 fix (1.1.00.48) is ancient and the device is EOL. Replace with a supported, enterprise-managed router or access point. Do not attempt to 'harden' these devices — they are fundamentally unsupportable.
- Block management interface access at the upstream firewall — If immediate replacement is not possible, ACL the device's management port (80/8080) so it is unreachable from untrusted networks. This is a stopgap — the device is still vulnerable to anyone on the local segment.
- Audit VPN split-tunnel policies for home-office workers — If employees use personal routers (potentially DGN1000s) for VPN, ensure split-tunneling is disabled so corporate traffic does not traverse a compromised home gateway. This limits the blast radius of a home-router compromise.
- Firmware update to 1.1.00.48 — While this version nominally fixes DGN1000, the device is EOL and the firmware is years old with no further security maintenance. Updating to a decade-old firmware on an unsupported device is not a meaningful security posture improvement.
- WAF or IPS in front of the device — The DGN1000 IS the edge device. There is typically no upstream security appliance to filter traffic to it in a SOHO deployment.
- Network segmentation of the router — You cannot segment a device that IS your network boundary. The router must be replaced, not isolated.
Crowdsourced verification payload.
Run this script from any Linux/macOS workstation that can reach the target device's management interface over HTTP. Usage: bash check_dgn1000.sh <target_ip> [port]. No special privileges required — it only sends an HTTP GET request.
#!/usr/bin/env bash
# check_dgn1000.sh — Detect NETGEAR DGN1000/DGN2200v1 setup.cgi exposure
# Usage: bash check_dgn1000.sh <target_ip> [port]
# Exit codes: 1=VULNERABLE, 0=PATCHED/NOT_AFFECTED, 2=UNKNOWN
set -euo pipefail
TARGET="${1:?Usage: $0 <target_ip> [port]}"
PORT="${2:-80}"
URL="http://${TARGET}:${PORT}/setup.cgi"
TIMEOUT=10
echo "[*] Checking ${URL} for NETGEAR DGN1000 setup.cgi exposure..."
# First, check if the host responds and identifies as NETGEAR DGN
BANNER=$(curl -sI --connect-timeout "$TIMEOUT" "http://${TARGET}:${PORT}/" 2>/dev/null || true)
if echo "$BANNER" | grep -qi 'DGN1000\|DGN2200'; then
echo "[!] NETGEAR DGN1000/DGN2200 detected in HTTP headers."
else
# Try to fetch the login page for device identification
BODY=$(curl -s --connect-timeout "$TIMEOUT" "http://${TARGET}:${PORT}/" 2>/dev/null || true)
if echo "$BODY" | grep -qi 'DGN1000\|DGN2200'; then
echo "[!] NETGEAR DGN1000/DGN2200 detected in page content."
else
echo "[*] Target does not appear to be a NETGEAR DGN1000/DGN2200."
echo "PATCHED"
exit 0
fi
fi
# Check if setup.cgi is reachable without authentication
# We use a harmless, non-destructive probe — just check HTTP status
HTTP_CODE=$(curl -s -o /dev/null -w '%{http_code}' --connect-timeout "$TIMEOUT" "${URL}" 2>/dev/null || echo "000")
if [ "$HTTP_CODE" = "000" ]; then
echo "[?] Could not connect to ${URL}."
echo "UNKNOWN"
exit 2
elif [ "$HTTP_CODE" = "200" ] || [ "$HTTP_CODE" = "302" ]; then
echo "[!] setup.cgi is accessible without authentication (HTTP $HTTP_CODE)."
echo "[!] This device is an EOL NETGEAR DGN with exposed management — CVE-2024-12847."
echo "VULNERABLE"
exit 1
elif [ "$HTTP_CODE" = "401" ] || [ "$HTTP_CODE" = "403" ]; then
echo "[*] setup.cgi returned HTTP $HTTP_CODE — authentication may be enforced."
echo "[*] Device is still EOL and should be replaced regardless."
echo "VULNERABLE"
exit 1
else
echo "[?] Unexpected HTTP status: $HTTP_CODE. Manual verification required."
echo "UNKNOWN"
exit 2
fiIf you remember one thing.
Sources
- NVD — CVE-2024-12847
- Rapid7 Metasploit Module — NETGEAR DGN1000B setup.cgi
- CyberInsider — Flaw in EoL Netgear Router Actively Exploited Since 2017
- NETGEAR End of Service Page
- Unit 42 — Mirai Campaign Leveraging IoT Exploits
- Exploit-DB — NETGEAR DGN1000 Setup.cgi RCE (Metasploit)
- VulnCheck Advisory — NETGEAR DGN setup.cgi
- GitHub Advisory — GHSA-pq8m-gwqp-g9xv
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.