MS08-001 – The case of the missing Windows Server 2003 attack vector

Part 3 of our MS08-001 blog post series mentioned that Windows Server 2003 does not expose an attack vector to the vulnerable IGMP code execution vulnerability by default.  Windows XP and Vista enable UPnP (Universal Plug-and-Play) which exposes an attack vector to the vulnerable code but Windows Server 2003 does not enable UPnP.  As a result, the WS03 machine will ignore IGMP messages received from the network.

We have received a few questions about Windows Server 2003’s exposure to the IGMP vulnerability.

Question 1: By default, Win2k3 server joins to multicast group Does it mean that Win2K3 is vulnerable by default? And the rating in MSRC bulletin is wrong?

Answer:  The bulletin rating is correct. Win2k3 server is not vulnerable to IGMP issue when it only joins to

Observe the netsh command output on a default configuration of Win2K3 server:

>netsh int ip show joins

Interface Addr   Multicast Group

—————  ————— is all hosts on the subnet. The reason that win2k3 server is not vulnerable despite being joined to is because Windows ignores IGMP queries to that address.  Here’s the actual code:

    } else {
// If all-hosts address, ignore it
(DTEXT(“Dropping IGMPv3 query for the All-Hosts group\n”)));

Question 2: How can I tell whether my Windows Server 2003 machine is vulnerable?

Answer: If the server joins to any multicast group other than, then it is vulnerable to IGMP attack.

Using the following netsh command will show the multicast groups to which the machine is joined.

netsh int ip show joins

For example, if the WINS component is enabled in Win2k3 server, the output of the netsh command above would be:

Interface Addr   Multicast Group

—————  ————— is IP multicast group for WINS. The configuration above (if unpatched) is vulnerable to the IGMP attack.

Question 3: Even if a server is not joined to a multicast group other than, could it still be affected if an attacker sent a *unicast* IGMP packet?

Answer: No. Though the host would receive the unicast IGMP packet, valid multicast address needs to be contained in IGMP query payload so the packet would be ignored.