Someone left the master key to every lock in the building taped to the lobby wall
CVE-2026-57909 is a path-traversal flaw (CWE-306 — Missing Authentication for Critical Function) in the WatchGuard Agent, the unified endpoint security agent that underpins WatchGuard EDR, EPP, and EPDR. An unauthenticated attacker on an adjacent network segment can exploit the agent’s inter-host communication service (TCP 33000) to drop an arbitrary executable onto the target host via directory traversal — achieving code execution as SYSTEM (Windows) or root (macOS). Affected versions are Windows Agent < 1.25.13.000 and macOS Agent < 1.17.21.0000. Patches were released August 17–19, 2026.
The vendor’s CRITICAL / 9.4 rating is honest and, if anything, appropriately calibrated. The CVSS 4.0 vector (AV:A) already accounts for the adjacent-network constraint, and the subsequent-system impact metrics (SC:H/SI:H/SA:H) correctly reflect that compromising a security agent on one host hands the attacker a lateral-movement trampoline to every other agent on the same VLAN. Because the WatchGuard Agent runs as SYSTEM on *every* protected endpoint, a single exploitation gives the attacker the highest-privilege foothold on the host and, by extension, the ability to disable endpoint protection fleet-wide. The vendor got this one right.
5 steps from start to impact.
Gain adjacent network position
- Adjacent network access (same VLAN/broadcast domain)
- TCP 33000 reachable from attacker position
- Requires prior initial access in most enterprise deployments
- Micro-segmentation or host-firewall rules blocking TCP 33000 between workstations would prevent reachability
Send crafted path-traversal payload to agent service
../../../) that escapes the intended staging directory, allowing the attacker to specify an arbitrary write location on the filesystem. No credentials or tokens are required (CWE-306).- No authentication token or session needed
- Knowledge of the path-traversal payload structure
- No public PoC or exploit code has been observed as of August 2026
- Payload structure would need to be reverse-engineered from the patch diff or agent binary
Drop malicious executable to startup/service directory
- Writable target path that leads to automatic execution
- Agent service running as SYSTEM/root
- Windows Defender or a secondary AV may quarantine the dropped binary if it matches known signatures
- Application whitelisting (AppLocker/WDAC) would block execution of unsigned binaries in protected paths
Achieve SYSTEM-level code execution
- Execution trigger fires (service restart, scheduled task, agent self-update cycle)
- If the agent does not auto-restart or the trigger window is long, there may be a delay before execution
- Credential-guard and LSA protections reduce the value of post-exploitation credential harvesting
Lateral movement to fleet via agent-to-agent exploitation
- Other hosts on the same VLAN running vulnerable WatchGuard Agent
- TCP 33000 open between endpoints
- Network segmentation (micro-segmentation, zero-trust) limits the blast radius to a single VLAN
- Patched agents are immune, so partial patch deployment shrinks the target pool
The supporting signals.
| In-the-Wild Exploitation | No known exploitation as of 2026-08-26. Not listed on CISA KEV. No campaigns attributed. |
|---|---|
| Proof-of-Concept | No public PoC found on GitHub, Exploit-DB, or security research channels. Exploitation would require reverse-engineering the agent protocol on TCP 33000. |
| EPSS Score | Not yet scored — CVE is less than 10 days old (disclosed ~Aug 17–19, 2026). EPSS data not yet populated by FIRST. |
| KEV Status | Not listed on CISA Known Exploited Vulnerabilities catalog as of 2026-08-26. |
| CVSS Vector | CVSS:4.0/AV:A/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H — Adjacent network, no auth, no user interaction, full impact including subsequent systems. Vendor score: 9.4 CRITICAL. |
| Affected Versions | Windows Agent < 1.25.13.000; macOS Agent < 1.17.21.0000. All prior versions are vulnerable. |
| Fixed Versions | Windows Agent 1.25.13.000 (released 2026-08-19); macOS Agent 1.17.21.0000 (released 2026-08-17). Updates delivered via WatchGuard Cloud console. |
| Exposure / Installed Base | ~9,682 organizations use WatchGuard Endpoint Security per 6sense market data. WatchGuard holds ~7.8% endpoint security market share. Agent listens on TCP 33000 — not internet-exposed by design, but reachable on every managed LAN segment. |
| Disclosure Date | 2026-08-17 (macOS fix) / 2026-08-19 (Windows fix). Advisory: WGSA-2026-00012. |
| Reporter | Not publicly attributed. Discovered internally or via coordinated disclosure to WatchGuard PSIRT. |
noisgate verdict.
The single most decisive factor is role multiplier — the affected component is a security agent running as SYSTEM/root on every protected endpoint, making compromise equivalent to fleet-wide SYSTEM access and EDR blindness. While AV:A constrains initial reachability to adjacent-network attackers, the agent-to-agent wormability within a VLAN and the total loss of endpoint visibility make this a textbook CRITICAL for any organization whose detection stack depends on WatchGuard.
Why this verdict
- No authentication required (CWE-306): The agent’s TCP 33000 listener accepts unauthenticated requests, eliminating the most common friction point in RCE chains. Any host on the VLAN can exploit any other host.
- Role multiplier — security agent = SYSTEM on every host: The WatchGuard Agent is not a peripheral service; it IS the endpoint protection platform. 100% of installs occupy the high-value ‘kernel-mode security agent’ role. Compromise means SYSTEM-level code execution AND the ability to disable the defender’s own detection tool. The blast radius is fleet-scale within a network segment.
- Agent-to-agent wormability: Because every managed endpoint runs the same vulnerable service on the same port, a single compromised host can chain exploitation across the entire VLAN without additional tooling. The subsequent-system CVSS metrics (SC:H/SI:H/SA:H) correctly reflect this.
- AV:A is real but insufficient to downgrade: Adjacent-network access is a prerequisite, meaning the attacker needs prior initial access. However, in a post-compromise scenario (which is the standard threat model for lateral movement), every host on the VLAN is reachable. This friction is already priced into the vendor’s 9.4 score.
Why not higher?
The vendor’s 9.4 is already near-ceiling for a CVSS 4.0 AV:A vector. A 10.0 would require AV:N (internet-facing) with zero friction, which this is not. The slight reduction to 9.2 reflects the absence of any known exploitation, public PoC, or KEV listing, meaning weaponization is currently theoretical rather than confirmed.
Why not lower?
Downgrading below CRITICAL would require ignoring the hard floor rule: the affected component is canonically a high-value-role component (security agent running as SYSTEM on every managed endpoint). The chain requires no authentication, no user interaction, and low complexity. The blast radius is not ‘one host’ — it’s ‘every host on the VLAN running the agent,’ with the added impact of blinding the organization’s endpoint detection capability. AV:A alone is insufficient to break the CRITICAL floor for a security agent.
What to do — in priority order.
- Block TCP 33000 between workstations via host firewall or micro-segmentation — The WatchGuard Agent uses TCP 33000 for inter-host communication. Restricting this port to only necessary management traffic (agent-to-cloud, agent-to-Firebox) eliminates the adjacent-network attack path. Deploy within 3 days per the noisgate mitigation SLA for CRITICAL findings.
- Push the patched agent version via WatchGuard Cloud immediately — Windows Agent 1.25.13.000 and macOS Agent 1.17.21.0000 resolve the vulnerability. Use the WatchGuard Cloud console to force-push the update to all managed endpoints. Prioritize VLANs with flat networking or high-value assets (DCs, financial systems). Target 100% coverage within 3 days.
- Deploy network-level detection for anomalous TCP 33000 traffic patterns — Create IDS/IPS signatures or SIEM correlation rules that alert on: (1) rapid sequential TCP 33000 connections from a single source to multiple destinations, (2) any TCP 33000 connection from a non-agent source, (3) multiple WatchGuard Agents going offline simultaneously. Deploy within 3 days.
- Enable application whitelisting on critical hosts — AppLocker or WDAC policies that restrict execution to signed binaries in approved paths will block the dropped executable even if the path traversal succeeds. This is a defense-in-depth measure that limits the blast radius on high-value hosts like domain controllers and database servers.
- Verify with a secondary EDR if available — If you run a second endpoint detection tool (e.g., CrowdStrike, Defender for Endpoint), ensure it is monitoring for SYSTEM-level process creation from unexpected paths and for file writes to WatchGuard Agent directories. This provides detection continuity if the WatchGuard Agent itself is compromised.
- Network perimeter firewalls alone — TCP 33000 is internal traffic between endpoints on the LAN. Your perimeter firewall never sees it. You need host-level or micro-segmentation controls.
- Rotating WatchGuard Cloud API keys — The vulnerability is in the local agent’s TCP listener, not in the cloud management API. Re-keying cloud credentials does not affect the attack path.
- Disabling the WatchGuard Agent service — This would mitigate the vulnerability but also removes all endpoint protection, creating a worse security posture than the vulnerability itself.
Crowdsourced verification payload.
Run this script on each Windows endpoint where the WatchGuard Agent is installed. Execute in an elevated PowerShell session (Run as Administrator). Example: powershell -ExecutionPolicy Bypass -File .\Check-CVE-2026-57909.ps1. No external dependencies required. For macOS, check the agent version via defaults read /Library/WatchGuard/com.watchguard.agent Version against 1.17.21.0000.
# Check-CVE-2026-57909.ps1
# Checks whether the installed WatchGuard Agent is vulnerable to CVE-2026-57909
# Run as Administrator on Windows endpoints
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN
$ErrorActionPreference = 'Stop'
$fixedVersion = [Version]'1.25.13.0'
try {
# Check if WatchGuard Agent service exists
$svc = Get-Service -Name 'WatchGuard*Agent*' -ErrorAction SilentlyContinue
if (-not $svc) {
$svc = Get-Service -Name 'WGAgent*' -ErrorAction SilentlyContinue
}
if (-not $svc) {
Write-Host 'UNKNOWN - WatchGuard Agent service not found on this host.'
exit 2
}
# Locate agent executable
$agentPaths = @(
"$env:ProgramFiles\WatchGuard\WatchGuard Agent\WatchGuardAgent.exe",
"$env:ProgramFiles(x86)\WatchGuard\WatchGuard Agent\WatchGuardAgent.exe",
"$env:ProgramFiles\WatchGuard\Endpoint Agent\WatchGuardAgent.exe"
)
$agentExe = $null
foreach ($p in $agentPaths) {
if (Test-Path $p) {
$agentExe = $p
break
}
}
if (-not $agentExe) {
# Fallback: search registry for install path
$regPaths = @(
'HKLM:\SOFTWARE\WatchGuard\WatchGuard Agent',
'HKLM:\SOFTWARE\WOW6432Node\WatchGuard\WatchGuard Agent'
)
foreach ($rp in $regPaths) {
if (Test-Path $rp) {
$installDir = (Get-ItemProperty -Path $rp -ErrorAction SilentlyContinue).InstallDir
if ($installDir -and (Test-Path "$installDir\WatchGuardAgent.exe")) {
$agentExe = "$installDir\WatchGuardAgent.exe"
break
}
}
}
}
if (-not $agentExe) {
Write-Host 'UNKNOWN - WatchGuard Agent executable not found. Service exists but binary path could not be determined.'
exit 2
}
$fileInfo = Get-Item $agentExe
$installedVersion = [Version]$fileInfo.VersionInfo.FileVersion
Write-Host "Installed WatchGuard Agent version: $installedVersion"
Write-Host "Fixed version: $fixedVersion"
# Also check if TCP 33000 is listening
$listener = Get-NetTCPConnection -LocalPort 33000 -State Listen -ErrorAction SilentlyContinue
if ($listener) {
Write-Host 'TCP 33000 is LISTENING (attack surface is active).'
} else {
Write-Host 'TCP 33000 is NOT listening (attack surface may be inactive).'
}
if ($installedVersion -ge $fixedVersion) {
Write-Host 'PATCHED - WatchGuard Agent is at or above the fixed version (1.25.13.000).'
exit 0
} else {
Write-Host 'VULNERABLE - WatchGuard Agent is below the fixed version. Update to 1.25.13.000 immediately.'
exit 1
}
} catch {
Write-Host "UNKNOWN - Error during check: $($_.Exception.Message)"
exit 2
}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.