The front door of your office has a lock, but the side window leads straight to the key box — and burglars already drew the map
CVE-2026-15410 is a path-traversal-to-code-execution flaw in the remove_hotfix workflow of SonicWall SMA1000 series appliances (models 6210, 7210, 8200v). An attacker who can reach the internal ctrl-service on localhost port 8188 submits a crafted hotfix=../../../../../tmp/payload.sh parameter to /rollbackConfirm.action, which the appliance executes as root without sanitizing the path. Affected firmware versions include 12.4.3-03245 through 12.4.3-03434 and 12.5.0-02283 through 12.5.0-02800. The fix ships in 12.4.3-03453+ and 12.5.0-02835+.
SonicWall rated this CVE at HIGH 7.2 because, in isolation, it requires administrator-level authentication. That framing is technically correct and operationally dangerous. Every observed real-world exploitation chains CVE-2026-15410 with CVE-2026-15409 (CVSS 10.0), an unauthenticated SSRF in /wsproxy that tunnels directly to the localhost services CVE-2026-15410 needs — eliminating the authentication prerequisite entirely. The combined effect is unauthenticated root RCE on a perimeter VPN appliance. Threat actor UTA0533 exploited this chain as a zero-day from at least June 22, 2026 — three weeks before disclosure — to harvest credentials, steal MFA seeds, pivot to domain controllers, and deploy INC Ransomware. The vendor's 7.2 score describes a vulnerability that has never once been exploited in isolation.
5 steps from start to impact.
Unauthenticated WebSocket tunnel via CVE-2026-15409
/wsproxy on the internet-facing SMA1000, spoofing User-Agent: SMA Connect Agent and bmID=-3389. The appliance treats these headers as proof of legitimacy and opens a tunnel to localhost services — CouchDB on port 1050 or ctrl-service on port 8188 — without requiring VPN credentials or MFA. This is the companion CVE-2026-15409 (CVSS 10.0). Tools: custom Python scripts; Rapid7 published PoC leveraging Erlang RPC via hardcoded cookie on port 1050.- Internet-reachable SMA1000 management interface or VPN portal on an unpatched firmware version
- CVE-2026-15409 is present (same affected version range)
- SMA1000 is internet-facing by design — it IS the VPN gateway; there is no friction here
/wsproxy requests with host=0.0.0.0, 127.0.0.1, ::ffff:127.0.0.1, or localhost and port=1050 or 8188.Code execution as couchdb user via Erlang RPC
os:cmd/1 and execute arbitrary commands as the unprivileged couchdb user. The attacker stages a malicious shell script (e.g., /tmp/1234.sh) containing post-exploitation payloads. This step establishes a low-privilege foothold on the appliance.- Successful WebSocket tunnel from Step 1
- Hardcoded Erlang cookie (device-invariant, not configurable)
- The Erlang cookie is the same on all SMA1000 units — zero per-device variation to slow an attacker
erl_call or Erlang distribution protocol traffic on port 1050 in process logs. Hunt for new files in /tmp/ matching patterns like *.sh, hypdate.b64, agent_wp*.jar.Privilege escalation to root via path traversal (CVE-2026-15410)
/rollbackConfirm.action on ctrl-service (port 8188, accessible via the same tunnel) with the parameter hotfix=../../../../../tmp/1234.sh. The remove_hotfix workflow concatenates this input without path normalization and executes it as UID 0. The staged script now runs with full root privileges. This is the CVE under assessment.- Low-privilege code execution from Step 2
- Ability to reach ctrl-service on port 8188 via the WebSocket tunnel
- No additional authentication gate — ctrl-service trusts connections from localhost
ctrl-service.log for /usr/local/bin/remove_hotfix invocations containing ../ traversal sequences. Alert on chmod operations followed by script execution in /tmp/.Credential and MFA seed harvesting
tcpdump to sniff unencrypted LDAP (TCP/389) and RADIUS traffic traversing the appliance, capturing plaintext usernames and passwords. They also exfiltrate TOTP/MFA seed configurations from the appliance's authentication databases, enabling persistent access that survives password resets. Custom malware tooling (ROOTRUN, KNUCKLEBALL, Suo5, ORANGETAIL) is installed for persistence.- Root shell from Step 3
- None — root on a VPN gateway sees all authentication traffic by design
tcpdump processes, setuid binaries via find / -perm -4000 -type f, and modifications to /etc/init.d/workplace or /var/lib/unit/conf.json. Check for known malware hashes.Lateral movement to domain controllers and ransomware deployment
- Harvested credentials from Step 4
- Domain controllers reachable from the SMA1000 internal interface
- Network segmentation between VPN appliance and DCs could slow this, but SMA1000 typically has broad internal access by design
/wsproxy attack vector on the VPN portal interface, so it only partially reduces risk. Deploy within hours as a bridge control./wsproxy containing host=127.0.0.1, host=0.0.0.0, host=localhost, or port=1050/port=8188 parameters. This targets CVE-2026-15409, which is the chain entry point. Effectiveness depends on WAF placement in front of the SMA1000 — many deployments have no inline WAF before the VPN appliance.find / -perm -4000), files in /tmp/ matching *.sh, hypdate.b64, agent_wp*.jar, modifications to /etc/init.d/workplace and /var/lib/unit/conf.json, known malware hashes. If IOCs are found, rotate ALL credentials that traversed the VPN and revoke/re-seed ALL MFA tokens.- Network ACLs on the VPN port — SMA1000 must accept connections from arbitrary internet clients to function as a VPN gateway. You cannot firewall the attack surface without disabling the product.
- MFA on the management console — CVE-2026-15409 bypasses the management console entirely by tunneling to localhost services that have no authentication layer. MFA on AMC login does not protect the
/wsproxy→ port 8188 chain. - IDS/IPS signatures for path traversal in HTTP — the
/rollbackConfirm.actionrequest travels over a WebSocket tunnel to localhost; it never crosses a network IDS sensor's inspection point. - SMA1000 built-in WAF/application firewall — the vulnerable endpoint is an internal management service, not a user-facing application behind the WAF. The appliance's own security features do not inspect traffic to its own localhost services.
The supporting signals.
| In-the-Wild Exploitation | Confirmed active zero-day since June 22, 2026 — three weeks before public disclosure. Tracked as UTA0533 by Volexity. Linked to INC Ransomware affiliate by Resecurity, with 885 victims reported between July 17–August 1, 2026. Custom malware families deployed: ROOTRUN, KNUCKLEBALL, Suo5, ORANGETAIL. |
|---|---|
| CISA KEV | Added 2026-07-14 (same day as advisory). CISA flagged ransomware campaign use. Federal agencies ordered to patch within 3 days (due date July 17, 2026). |
| EPSS | 0.11791 (11.79%) — well above the median, reflecting active exploitation and chain availability. This places it roughly in the top 5% of all scored CVEs. |
| Proof-of-Concept | Rapid7 published technical details and PoC for the Erlang RPC component of the chain. Horizon3.ai published a detailed vulnerability analysis. GitHub repo HORKimhab/CVE-2026-15410 contains a Python exploit script (low quality, 0 stars). The chain is fully documented in Resecurity's technical writeup with endpoint details and payload syntax. |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H — the PR:H (high privileges required) is the reason for the 7.2 score. In the documented chain with CVE-2026-15409, the effective vector is PR:N (no auth), which would push the combined score to 9.8–10.0. |
| Affected Versions | SMA1000 6210, 7210, 8200v running firmware 12.4.3-03245, 12.4.3-03387, 12.4.3-03434 or 12.5.0-02283, 12.5.0-02624, 12.5.0-02800. |
| Fixed Versions | Platform-hotfix 12.4.3-03453 or later; 12.5.0-02835 or later. No known distro backports (proprietary appliance firmware). |
| Internet Exposure | Shodan: ~2,380 SMA1000 management interfaces visible. Censys: ~3,700 exposed. These are VPN gateways — internet exposure is their default and intended posture. Shodan cannot distinguish patched from unpatched at the hotfix level. |
| Disclosure Timeline | Zero-day exploitation began ≥ June 22, 2026. SonicWall advisory SNWLID-2026-0008 published July 14, 2026. CISA KEV same day. Rapid7 and Volexity published technical analyses July 21, 2026. |
| Reporting Researchers | Discovered by Rapid7 MDR team during incident response. Subsequent analysis by Volexity (UTA0533 tracking), Resecurity (INC Ransomware linkage), and Horizon3.ai (technical root cause). |
Sources.
- Rapid7 — SonicWall SMA1000 Zero-Day Exploitation Analysis
- Resecurity — INC Ransomware and SonicWall SMA Exploit Chain
- Horizon3.ai — CVE-2026-15409 & CVE-2026-15410 Technical Analysis
- CISA KEV Catalog Addition (July 14, 2026)
- BleepingComputer — SonicWall SMA1000 Exploited by Ransomware Gangs
- eSentire — SonicWall Zero-Day Advisory
- Cybersecurity News — CISA Warns of Ransomware Deployment via SMA1000
- NVD — CVE-2026-15410 Detail
Why this verdict
- Chain eliminates the auth gate: The vendor's 7.2 score rests entirely on PR:H (admin required). In every documented real-world attack, CVE-2026-15409 (CVSS 10.0 unauthenticated SSRF) provides the tunnel to localhost services that CVE-2026-15410 needs — reducing effective prerequisites to PR:N. The two CVEs share identical affected and patched version ranges and are inseparable operationally.
- Zero network friction — perimeter by design: SMA1000 is a VPN gateway appliance. Unlike a database or internal app server, it is internet-facing in 100% of deployments. There is no 'restrict network access' compensating control that doesn't also break the product's core function. Shodan/Censys show 2,400–3,700 exposed instances.
- Active ransomware weaponization: UTA0533 / INC Ransomware has been exploiting this chain since June 22, 2026 — three weeks before disclosure. 885 victims in two weeks. CISA KEV with ransomware flag. This is not theoretical risk.
- Role multiplier: SMA1000 is *exclusively* a network edge appliance — 100% of installs occupy the high-value role. Root compromise of a VPN gateway yields: (1) all in-transit credentials and MFA seeds, (2) direct lateral movement to domain controllers from a trusted internal IP, (3) fleet-scale ransomware deployment. Blast radius is domain → fleet → supply chain. Per deployment-role rules, the verdict floor for a canonical network edge appliance with a working chain to domain takeover is CRITICAL.
- Attacker tooling maturity: Custom malware families (ROOTRUN persistence, KNUCKLEBALL loader, ORANGETAIL memory-resident webshell, Suo5 tunneling) indicate a well-resourced, repeatable attack kit — not a one-off. The exploit chain is fully documented in public research with endpoint names, parameters, and payload syntax.
Why not higher?
A 9.4 rather than 10.0 because CVE-2026-15410 *in isolation* does require authentication and local service access — it is the second link in a two-CVE chain. An organization that has already patched CVE-2026-15409 but not CVE-2026-15410 retains meaningful protection, since the admin-auth prerequisite is restored. The chain dependency is a real architectural boundary even though it is trivially crossed today.
Why not lower?
Downgrading below CRITICAL is not defensible. The affected component is a perimeter VPN appliance that is internet-facing by definition (no network friction to discount). The chain partner CVE-2026-15409 is present in every affected firmware build (no version mismatch to discount). Active zero-day exploitation with ransomware deployment and 885+ confirmed victims eliminates any argument that exploitation is theoretical. The blast radius — credential harvest, MFA seed theft, domain controller pivot — is fleet-scale.
Crowdsourced verification payload.
Run this script on the SMA1000 appliance itself via SSH or console as root. Invoke with: bash check_cve_2026_15410.sh. No arguments needed. The script reads the installed firmware version from the appliance's build metadata and compares it against known-patched versions.
#!/bin/bash
# check_cve_2026_15410.sh — SonicWall SMA1000 CVE-2026-15410 version checker
# Run on the SMA1000 appliance as root via SSH or console.
# Exit codes: 1=VULNERABLE, 0=PATCHED, 2=UNKNOWN
VERSION_FILE="/etc/build_version"
ALT_VERSION_FILE="/etc/sonic_build"
if [ -f "$VERSION_FILE" ]; then
BUILD=$(cat "$VERSION_FILE" | tr -d '[:space:]')
elif [ -f "$ALT_VERSION_FILE" ]; then
BUILD=$(grep -oP '[0-9]+\.[0-9]+\.[0-9]+-[0-9]+' "$ALT_VERSION_FILE" | head -1)
else
# Fallback: try to extract from running process or system info
BUILD=$(strings /usr/local/bin/ctrl-service 2>/dev/null | grep -oP '[0-9]+\.[0-9]+\.[0-9]+-[0-9]+' | head -1)
fi
if [ -z "$BUILD" ]; then
echo "UNKNOWN — could not determine firmware version. Verify manually."
echo "Check: Settings > Firmware in the AMC, or run 'cat /etc/build_version'"
exit 2
fi
echo "Detected firmware build: $BUILD"
# Extract major.minor.patch and hotfix number
BRANCH=$(echo "$BUILD" | grep -oP '^[0-9]+\.[0-9]+\.[0-9]+')
HOTFIX=$(echo "$BUILD" | grep -oP '(?<=-)[0-9]+$')
if [ -z "$BRANCH" ] || [ -z "$HOTFIX" ]; then
echo "UNKNOWN — could not parse version components from '$BUILD'."
exit 2
fi
case "$BRANCH" in
12.4.3)
if [ "$HOTFIX" -ge 3453 ]; then
echo "PATCHED — build $BUILD is >= 12.4.3-03453."
exit 0
else
echo "VULNERABLE — build $BUILD is below 12.4.3-03453. Patch immediately."
exit 1
fi
;;
12.5.0)
if [ "$HOTFIX" -ge 2835 ]; then
echo "PATCHED — build $BUILD is >= 12.5.0-02835."
exit 0
else
echo "VULNERABLE — build $BUILD is below 12.5.0-02835. Patch immediately."
exit 1
fi
;;
*)
# Versions outside 12.4.3 and 12.5.0 — may not be affected or may be EOL
echo "UNKNOWN — branch $BRANCH is not in the known affected range (12.4.3 / 12.5.0)."
echo "If this is an older branch, it may be EOL and unpatched. Contact SonicWall support."
exit 2
;;
esac