This is a side door into the guard booth, not a hole blown through the perimeter wall
CVE-2026-0204 is an improper access control flaw in SonicOS that can expose some firewall management interface functions when specific conditions line up. Publicly documented affected trains span Gen6 SonicOS before 6.5.5.2-28n, Gen7 branches including 7.0.0.0 through 7.0.1-5169 and later 7.x releases before 7.3.2-7010, and Gen8 releases before 8.2.0-8009; multiple secondary sources simplify that to Gen6/Gen7/Gen8 broadly up to 6.5.5.1-6n / 7.3.1-7013 / 8.1.0-8017. The practical risk is not data theft from the firewall itself; it is control over the thing enforcing your network policy.
Reality is lower than the raw technical impact suggests. There is no vendor baseline CVSS to compare against, only later CISA-ADP enrichment showing an adjacent-network vector plus user interaction required; that combination matters because it usually means the attacker already has local/VPN foothold or access to the management segment. No KEV, no public exploitation evidence, and no widely circulated PoC keep this out of the urgent-fire-drill bucket, but the fact that it touches the management plane of a widely deployed firewall keeps it above LOW.
4 steps from start to impact.
Reach the management plane with nmap or a browser
- SonicOS management interface is enabled on a reachable interface
- Attacker has adjacent-network reachability or equivalent routed access
- Target is running a vulnerable firmware train
- Well-run enterprises bind management to a dedicated admin network
- Many shops disable WAN management entirely
- NGFW rules, jump hosts, and VPN segmentation often block this before exploitation starts
Trigger the access-control bypass with curl or Burp Repeater
- The undocumented trigger condition is present
- Management endpoint accepts the crafted request path
- No compensating restriction forces SSH-only administration
- No public PoC or Metasploit module was found
- Vendor language is vague: 'specific conditions' means operators should assume edge-case gating exists
- User-interaction-required lowers reliability and raises operator error for attackers
Abuse exposed management functions using the web UI or API client
- Bypass yields meaningful function access rather than a cosmetic page
- Affected function is powerful enough to alter security state
- The advisory does not prove full super-admin compromise
- Some organizations alert on config changes, new admin sessions, or policy pushes
- Role scoping or interface restrictions may limit which functions are actually reachable
Turn control-plane access into policy bypass or follow-on compromise
- Attacker obtains access to functions that alter firewall behavior
- Change-control monitoring does not stop or immediately reverse malicious changes
- Chaining to CVE-2026-0205 or CVE-2026-0206 is plausible but not publicly demonstrated
- Security teams often notice sudden rule or VPN config drift on perimeter appliances
The supporting signals.
| In-the-wild status | No public exploitation evidence found in vendor or press coverage; not listed in CISA KEV. |
|---|---|
| Proof-of-concept availability | No public PoC, Metasploit module, or Nuclei check for exploit execution was found in the reviewed sources. Expect private research and custom HTTP tooling, not commodity exploit kits yet. |
| EPSS | 0.00005 from supplied intel, which is extremely low and consistent with the current lack of public exploitation. |
| Authority scoring status | Per your intel, there is no vendor baseline CVSS. However, the CVE record now includes CISA-ADP enrichment showing CVSS:3.1/AV:A/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H with base score 8.0; I used that as technical context, not as a vendor baseline. |
| KEV status | Not in KEV; no federal due date pressure is attached. |
| Affected versions | Authoritative sources show Gen6 before 6.5.5.2-28n, Gen7 7.0.0.0 through 7.0.1-5169 plus later 7.x before 7.3.2-7010, and Gen8 before 8.2.0-8009. Secondary summaries simplify this to 6.5.5.1-6n / 7.3.1-7013 / 8.1.0-8017 and older. |
| Fixed versions | 6.5.5.2-28n for Gen6, 7.3.2-7010 for Gen7, and 8.2.0-8009 for Gen8. This is appliance firmware, so there are no distro backports to lean on. |
| Exposure / scanning reality | runZero published inventory queries for finding affected SonicWall assets, which tells you discovery is straightforward internally. A Black Kite summary cites ~4,955 discoverable SonicWall instances on Shodan, but that number is broader than 'vulnerable management interfaces' and should be treated as exposure context, not victim count. |
| Disclosure date | Public CNA publication landed on 2026-04-29. |
| Reporter / discoverer | Multiple reports attribute discovery to CrowdStrike Advanced Research Team. |
noisgate verdict.
The decisive downward pressure is the adjacent-network requirement combined with user interaction required. That means this usually behaves like a post-foothold management-plane vulnerability, not an internet-scale pre-auth edge compromise, even though the impact on a single affected firewall could be severe.
Why this verdict
- No vendor baseline exists so this is a first-principles assessment; I treated the CISA-ADP 8.0 vector as technical context only, not as a severity anchor to upgrade or downgrade.
- Adjacency requirement cuts the reachable population hard. AV:A usually implies the attacker is already on the LAN, on VPN, or on a routed management segment; that is a major real-world reduction from internet-wide pre-auth edge bugs.
- User interaction and 'specific conditions' add reliability friction. This does not read like a clean one-request unauthenticated takeover, and the lack of public PoC reinforces that view.
- Wide deployment keeps it from being LOW. SonicWall firewalls are common and the affected range spans Gen6, Gen7, and Gen8 firmware trains.
- Control-plane impact keeps it from being IGNORE. If the attacker does reach meaningful management functions, they may be able to rewrite enforcement rather than merely read a page.
Why not higher?
There is no public exploitation evidence, no KEV listing, and no public exploit tooling in the sources reviewed. More importantly, the attack path is narrowed by adjacent access plus user interaction, which means many enterprises would only face this after an initial foothold or from a poorly segmented admin surface.
Why not lower?
This is still a flaw in the management plane of a firewall, not a harmless info leak on an internal tool. If exploitation succeeds, the blast radius for that device is serious because policy enforcement, VPN posture, and administrative trust all sit on the box.
What to do — in priority order.
- Restrict management to SSH-only where operationally possible — SonicWall's own temporary guidance is to disable HTTP/HTTPS-based management and SSLVPN on all interfaces and keep management on SSH only. For a MEDIUM reassessment there is no mitigation SLA; do this opportunistically on high-exposure devices first, especially anything reachable from user VLANs or partner/VPN segments.
- Collapse management exposure onto a dedicated admin network — The whole exploit path starts with adjacent reachability. Move web management behind a jump host, dedicated VLAN, or out-of-band path so ordinary workstation subnets and VPN pools cannot hit it; for MEDIUM, there is no noisgate mitigation deadline, but this is worth folding into normal network-hardening work rather than waiting for patch day.
- Alert on firewall config drift and admin-plane access — Because the likely payoff is unauthorized use of management functions, audit logs and change alerts buy you the fastest visibility. Turn on notifications for new admin sessions, rule changes, VPN/user changes, and management-interface exposure changes during the remediation window.
- Inventory and version-check every Gen6/Gen7/Gen8 appliance — This is a firmware-train problem across multiple generations, so guessing from model alone is sloppy. Use your CMDB, NSM, SSH collection, or runZero/Nessus version telemetry to separate actually vulnerable appliances from already-fixed ones; with MEDIUM, there is no mitigation SLA — go straight to the remediation window.
- MFA on admin accounts does not fix a control-path authorization flaw if the vulnerable function becomes reachable without normal auth checks.
- A perimeter block on WAN management alone is not enough if internal user VLANs, VPN address pools, or partner links can still reach the admin interface.
- Version-only vulnerability scanning does not tell you whether the risky management surface is actually reachable; it helps inventory, not exploit-path validation.
Crowdsourced verification payload.
Run this on an auditor workstation, CI job, or inventory-processing host, not on the firewall itself. Invoke it with a firmware version string exactly as reported by NSM, SSH show version, or your scanner, for example: python3 check_cve_2026_0204.py 7.3.1-7013; no elevated privileges are required.
#!/usr/bin/env python3
# check_cve_2026_0204.py
# Determine likely exposure to CVE-2026-0204 from a SonicOS firmware version string.
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN
import re
import sys
def usage():
print('Usage: python3 check_cve_2026_0204.py <firmware-version>')
print('Example: python3 check_cve_2026_0204.py 7.3.1-7013')
sys.exit(2)
def split_version(v):
s = v.strip().lower()
if not s:
raise ValueError('empty version')
parts = []
for token in re.findall(r'[0-9]+|[a-z]+', s):
if token.isdigit():
parts.append((0, int(token)))
else:
# compare letter suffixes after numeric pieces
letter_value = 0
for ch in token:
if 'a' <= ch <= 'z':
letter_value = letter_value * 26 + (ord(ch) - 96)
parts.append((1, letter_value))
return tuple(parts)
def cmp_ver(a, b):
aa = split_version(a)
bb = split_version(b)
maxlen = max(len(aa), len(bb))
aa += ((0, 0),) * (maxlen - len(aa))
bb += ((0, 0),) * (maxlen - len(bb))
if aa < bb:
return -1
if aa > bb:
return 1
return 0
def starts_with_major(v, major):
return v.strip().startswith(str(major) + '.')
def in_range(v, low_incl, high_excl=None, high_incl=None):
if cmp_ver(v, low_incl) < 0:
return False
if high_excl is not None and cmp_ver(v, high_excl) >= 0:
return False
if high_incl is not None and cmp_ver(v, high_incl) > 0:
return False
return True
def assess(version):
v = version.strip()
# Gen6 guidance: affected before 6.5.5.2-28n; fixed at 6.5.5.2-28n+
if starts_with_major(v, 6):
if cmp_ver(v, '6.5.5.2-28n') >= 0:
return 'PATCHED'
return 'VULNERABLE'
# Gen7 authoritative ranges from NVD/OpenCVE enrichment:
# 7.0.0.0 through 7.0.1-5169 inclusive, and 7.1.1-7040 through 7.3.2-7010 exclusive.
if starts_with_major(v, 7):
if cmp_ver(v, '7.3.2-7010') >= 0:
return 'PATCHED'
if in_range(v, '7.0.0.0', high_incl='7.0.1-5169'):
return 'VULNERABLE'
if in_range(v, '7.1.1-7040', high_excl='7.3.2-7010'):
return 'VULNERABLE'
return 'UNKNOWN'
# Gen8 authoritative range from NVD/OpenCVE enrichment:
# 8.0.0-8035 through 8.2.0-8009 exclusive; fixed at 8.2.0-8009+
if starts_with_major(v, 8):
if cmp_ver(v, '8.2.0-8009') >= 0:
return 'PATCHED'
if in_range(v, '8.0.0-8035', high_excl='8.2.0-8009'):
return 'VULNERABLE'
return 'UNKNOWN'
return 'UNKNOWN'
def main():
if len(sys.argv) != 2:
usage()
version = sys.argv[1]
try:
result = assess(version)
except Exception as exc:
print('UNKNOWN')
print(f'Error: {exc}', file=sys.stderr)
sys.exit(2)
print(result)
if result == 'PATCHED':
sys.exit(0)
if result == 'VULNERABLE':
sys.exit(1)
sys.exit(2)
if __name__ == '__main__':
main()
If you remember one thing.
Sources
- SonicWall PSIRT advisory SNWLID-2026-0004
- NVD CVE-2026-0204 record
- OpenCVE JSON view of the CNA record and CISA-ADP enrichment
- runZero SonicWall SonicOS exposure and version-finding guidance
- SecurityWeek coverage of SNWLID-2026-0004
- heise coverage of SonicOS management access flaw
- SC Media coverage citing discovery context and operational risk
- CISA Known Exploited Vulnerabilities Catalog
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.