← All posts

WSUS Spoofing and the Windows Update MITM Attack Surface

How attackers hijack unencrypted WSUS to push malicious updates as SYSTEM, and how to audit and harden the Windows Update path on every endpoint.

Windows Server Update Services (WSUS) is one of the most trusted channels on a Windows network. When it works, it silently delivers Microsoft-signed patches to thousands of endpoints. But that same trust is exactly why it is such a valuable target: the WSUS client runs as SYSTEM, and if an attacker can influence what that client believes is an "approved update," they can run arbitrary commands at the highest privilege level — no exploit required. This attack is old (public since 2015, weaponized by tools like WSUSpect and PyWSUS), and it is still shockingly common in the field.

Why WSUS is a privilege escalation gift

The vulnerability is not a code bug — it is a configuration default. WSUS supports HTTP as well as HTTPS, and out of the box many environments configure clients to talk to their update server over plain http://wsus.corp.local:8530. The update metadata is signed, but the transport is not authenticated end-to-end in a way that stops an on-path attacker from tampering with what gets installed.

The critical detail: WSUS lets administrators approve arbitrary Microsoft-signed binaries as "updates," including legitimate, signed tools such as PsExec.exe or BginfoNET. Because these binaries carry a valid Microsoft signature, the client accepts them. An attacker who can man-in-the-middle the HTTP update traffic simply injects an update that runs a signed binary with attacker-controlled command-line arguments. The result is code execution as SYSTEM on every machine that checks in.

How the attack plays out

None of this trips antivirus in the obvious way: the executed binary is genuinely Microsoft-signed, and the delivery path is the sanctioned update channel. That is what makes it a favorite for lateral movement and privilege escalation inside an already-breached network.

Auditing the update path on every endpoint

You do not need a WSUS server to be at risk — you need to be configured to trust one over HTTP. The client-side settings live under the WindowsUpdate policy key. Check them directly:

reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v WUServer
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v UseWUServer

The two findings that matter:

Hardening steps that actually close the door

  1. Force HTTPS for WSUS. Reconfigure the server with a valid TLS certificate on port 8531 and repoint every client's WUServer to https://. This alone defeats the classic on-path injection.
  2. Turn on TLS certificate pinning / SSL for WSUS so clients reject a server presenting the wrong certificate rather than silently downgrading.
  3. Remove name-resolution poisoning primitives. Disable LLMNR and NBT-NS, and enable SMB signing so the on-path step is far harder to reach in the first place.
  4. Consider Microsoft's newer guidance around cloud-managed updates for internet-facing fleets, which removes the on-prem HTTP metadata hop entirely.
Signed does not mean safe. A Microsoft signature proves origin, not intent — and the WSUS approval model turns "trusted binary" into "trusted command line."

Where WinSentinel fits

WSUS misconfiguration is a perfect example of a finding that is invisible until you go looking machine by machine — and easy to regress after a reimage or a GPO change. On a single workstation, WinSentinel's Windows Update audit reads the WUServer / UseWUServer policy values, flags any HTTP update endpoint, and highlights redirection to an unexpected host — all locally, with the full audit and every one of its 33 modules available for free, no limits.

For teams running WinSentinel Pro across a fleet, the same check becomes a central-node rollup: you can see at a glance which of your 50 or 500 endpoints still trust an HTTP WSUS server, get a drift alert the moment a machine regresses to an insecure update path, and fold the result into a compliance report instead of chasing registry keys by hand. Whether you run it on one box or orchestrate a whole fleet, the goal is the same: make the most trusted channel on your network one you can actually prove is trustworthy.