This is a side door that only opens from the parking lot, not the street
CVE-2023-34282 is an authentication bypass in the D-Link DIR-2150 SOAP/HNAP management interface. A network-adjacent attacker can send a crafted authentication header to /HNAP1/ and be treated as authenticated without valid credentials. Authoritative affected ranges are DIR-2150 firmware prior to 1.06 per ZDI/NVD, with D-Link specifically calling out Non-US DIR-2150 all hardware revisions on v1.05B01 and below in advisory SAP10336.
The vendor's 8.8/HIGH score is technically understandable but operationally inflated for enterprise prioritization. The decisive down-pressure is attacker position: this is AV:A, meaning the attacker must already be on the same LAN/Wi-Fi/VPN segment or have remote management exposed; in a 10,000-host enterprise, that usually means post-initial-access, rogue guest access, or a misconfigured branch/home-office edge device rather than clean-sheet internet exploitation.
4 steps from start to impact.
Get onto the adjacent network
arp-scan/nmap to find 192.168.0.1 or the router hostname documented in the manual.- Access to the victim LAN/Wi-Fi/VPN segment or externally exposed remote management
- A DIR-2150 reachable on HTTP port 80
- AV:A is not internet-wide by default; most enterprises do not expose branch router admin planes directly
- Guest Wi-Fi and user VLAN segmentation often block direct access to the management subnet
- DIR-2150 is a consumer/SOHO router, not a broad enterprise-standard platform
Bypass HNAP authentication
curl, Burp Suite, or a small Python HTTP client, the attacker sends a crafted authentication header to the SOAP API at /HNAP1/. Per ZDI, the implementation accepts malformed authentication logic and treats the request as authenticated.- Reachability to the web management interface
- Vulnerable firmware prior to 1.06
- This is an auth bypass, not one-click RCE by itself
- Attackers still need protocol details for HNAP actions after access is granted
/HNAP1/ and suspicious SOAPAction/auth-header combinations, but many branch routers do not export rich web logs.Take over the admin plane
- Successful auth bypass
- Management actions exposed through the HNAP/web interface
- Impact is concentrated on the router and traffic traversing it, not automatically on every endpoint in the enterprise
- Some organizations replace ISP/branch routers quickly once compromise is suspected
Pivot into broader network abuse
- Administrative control of the router
- Victim traffic transits the compromised device
- TLS limits passive visibility into content for many applications
- Modern endpoint controls can still stop follow-on payloads on managed hosts
The supporting signals.
| In-the-wild status | No authoritative public evidence of active exploitation found in the reviewed sources, and CISA KEV does not list CVE-2023-34282. |
|---|---|
| PoC availability | I did not find a reliable open-source GitHub exploit in the reviewed sources. CERT Santé explicitly notes no public PoC was available at publication; ZDI provides vulnerability details but not turnkey exploit code. |
| EPSS | User-supplied EPSS is 0.00783. That is low and consistent with a bug that is dangerous when reachable but not broadly observed in exploitation pipelines. |
| KEV status | Not KEV-listed as of this assessment. The main CISA KEV catalog and exact-source search did not surface this CVE. |
| CVSS vector reality check | CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H means adjacent network, not generic internet-remote. That's the whole story: no auth and low complexity are bad, but adjacency sharply narrows who can actually touch it. |
| Affected versions | NVD maps the affected firmware as versions prior to 1.06. D-Link advisory SAP10336 is narrower and names Non-US DIR-2150, all hardware revisions, v1.05B01 and below. |
| Fixed versions | Fixed in firmware v1.06 per ZDI and D-Link. D-Link's download page shows v1.06 dated 2023-04-06 and a v1.06 hotfix dated 2024-01-22 on the A1 branch. |
| Exposure and scanning reality | I found no public GreyNoise/Censys/Shodan campaign telemetry tied specifically to this CVE in the reviewed sources. The DIR-2150 manual shows local admin access defaults to http://192.168.0.1 and remote management is a feature you must enable, which suggests most risk sits on LAN/Wi-Fi/admin segments rather than default internet exposure. |
| Disclosure timeline | There is a date trap here: ZDI publicly disclosed this on 2023-05-15, while NVD published the CVE record on 2024-05-02 and CISA's weekly bulletin listed it on 2024-05-03. For operational history, treat 2023-05-15 as the real public disclosure date. |
| Reporter | Reported by an anonymous researcher via Trend Micro Zero Day Initiative; D-Link repeats that attribution in SAP10336. |
noisgate verdict.
The biggest factor is attacker position: this bug needs adjacent-network reachability, which usually implies the attacker is already on the LAN/Wi-Fi/VPN or that someone exposed remote management. That turns an ugly technical bug into a contained, post-perimeter enterprise problem rather than a fleet-wide internet emergency.
Why this verdict
- Vendor baseline starts high because unauthenticated auth bypass on an edge device is never trivial; if the box is reachable, the admin plane is at risk.
- Adjacency cuts hard:
AV:Ameans the attacker needs local subnet, Wi-Fi, branch VPN, or remote management exposure. In enterprise terms, that usually implies a prior foothold, insider access, or weak branch design, so I reduce from the vendor score materially. - Population is narrow: DIR-2150 is a consumer/SOHO router, not a common 10,000-host enterprise standard. Even large organizations with many sites usually have a small, irregular footprint of this exact model.
- No KEV and low EPSS add more downward pressure. I found no strong public evidence that this CVE is being industrialized at scale.
- Still not low because no auth + low complexity on a reachable router can hand an attacker administrative control over the network edge, which is enough for DNS hijack, policy tampering, and traffic redirection.
Why not higher?
This is not a clean internet-wide unauthenticated RCE on a mainstream enterprise platform. The attacker must first satisfy the adjacency requirement, and the CVE by itself is an auth bypass rather than direct code execution; both facts reduce urgency compared with genuinely perimeter-preauth RCEs.
Why not lower?
Once reachable, exploitation is straightforward and requires no credentials or user interaction. Compromise of a router admin plane has outsized consequences for any users behind it, so this is more than backlog trivia even if the reachable population is limited.
What to do — in priority order.
- Disable remote management — If enabled, turn it off immediately so AV:A stays LAN-bound instead of becoming de facto internet-reachable. For a MEDIUM verdict there is no noisgate mitigation SLA, but this is the cleanest exposure reduction to apply during the next normal network change window while you work toward patching inside the 365-day remediation window.
- Restrict admin-plane access — Permit HTTP/HTTPS management only from a dedicated admin VLAN, jump host, or management VPN and block guest/user subnets from reaching the router UI. This directly attacks the most important prerequisite in the chain; with no mitigation SLA for MEDIUM, implement in routine change control and keep it in place until patched.
- Separate guest and user Wi-Fi from infrastructure — Do not let guest SSIDs, contractor networks, or general user segments talk to the router management IP. This matters because adjacency is the gatekeeper for exploitation; again, no mitigation SLA — go straight to the 365-day remediation window, but make segmentation changes wherever branch risk is highest.
- Monitor for router config drift — Track DNS server changes, admin password resets, new port forwards, unexpected VPN settings, and remote-management toggles. This will not prevent exploitation, but it shortens dwell time while patching proceeds within the MEDIUM remediation window.
- Endpoint MFA does not protect the router management plane; this bug bypasses router auth logic, not user SaaS logins.
- EDR on laptops will not reliably see abuse that happens entirely on the router's embedded web interface.
- A web application firewall is usually irrelevant here because the target is the router's own local management service, not an app behind your standard reverse-proxy stack.
Crowdsourced verification payload.
Run this from an auditor workstation on the same LAN/Wi-Fi/admin VPN as the router, not on the router itself. Invoke it as bash verify_dir2150.sh 192.168.0.1; it needs only outbound HTTP access to the device and no admin credentials. It is a safe version-check heuristic: it tries to scrape the exposed web content for a firmware string and returns VULNERABLE, PATCHED, or UNKNOWN.
#!/usr/bin/env bash
# verify_dir2150.sh
# Safe heuristic checker for D-Link DIR-2150 firmware exposure.
# Usage: bash verify_dir2150.sh 192.168.0.1
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN, 3=USAGE/NETWORK ERROR
set -u
TARGET="${1:-}"
if [[ -z "$TARGET" ]]; then
echo "Usage: bash verify_dir2150.sh <ip-or-hostname>"
exit 3
fi
BASE_URL="http://${TARGET}"
TMPFILE="$(mktemp 2>/dev/null || echo /tmp/dir2150_check.$$)"
trap 'rm -f "$TMPFILE" >/dev/null 2>&1' EXIT
fetch() {
local url="$1"
curl -ksS --max-time 8 --connect-timeout 5 "$url" 2>/dev/null
}
# Pull a few likely public pages/resources.
{
fetch "$BASE_URL/"
echo
fetch "$BASE_URL/index.html"
echo
fetch "$BASE_URL/login.asp"
echo
fetch "$BASE_URL/login.htm"
echo
fetch "$BASE_URL/js/app.js"
echo
fetch "$BASE_URL/js/main.js"
echo
} > "$TMPFILE"
if [[ ! -s "$TMPFILE" ]]; then
echo "UNKNOWN - could not retrieve any HTTP content from $BASE_URL"
exit 2
fi
# Confirm this at least looks like a D-Link / DIR-2150 page.
if ! grep -Eiq 'd-?link|dir-2150|dlinkrouter' "$TMPFILE"; then
echo "UNKNOWN - target does not clearly identify as D-Link DIR-2150"
exit 2
fi
# Extract a firmware-like string such as v1.05B01 or 1.06.
RAW_VER="$(grep -Eio 'v?[0-9]+\.[0-9]+([A-Z]?[0-9]+)?' "$TMPFILE" | head -n 1)"
if [[ -z "$RAW_VER" ]]; then
echo "UNKNOWN - DIR-2150 detected but firmware version not exposed in fetched content"
exit 2
fi
normalize_ver() {
local v="$1"
v="${v#v}"
# Keep only numeric dotted prefix for coarse comparison: 1.05B01 -> 1.05
v="$(echo "$v" | sed -E 's/^([0-9]+\.[0-9]+).*/\1/')"
echo "$v"
}
ver_ge() {
# returns 0 if $1 >= $2
[[ "$(printf '%s\n%s\n' "$1" "$2" | sort -V | tail -n1)" == "$1" ]]
}
NORM_VER="$(normalize_ver "$RAW_VER")"
FIX_VER="1.06"
if ver_ge "$NORM_VER" "$FIX_VER"; then
echo "PATCHED - detected firmware $RAW_VER (normalized $NORM_VER), fixed threshold is $FIX_VER"
exit 0
else
echo "VULNERABLE - detected firmware $RAW_VER (normalized $NORM_VER), fixed threshold is $FIX_VER"
exit 1
fi
If you remember one thing.
Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.