Microsoft’s Patch Tuesday for May 2024 brought a spotlight to CVE-2024-30015, a critical remote code execution (RCE) vulnerability within Windows Routing and Remote Access Service (RRAS). If you manage Windows servers, especially those running RRAS, this is a threat you can't take lightly.

In this post, we’ll break down this vulnerability in plain English, show how it works, share relevant attack details, and even look at a simplified exploitation flow—plus how to protect yourself.

What is CVE-2024-30015?

RRAS is Microsoft’s server role for VPN, NAT, and routing services. It often runs with high privileges, which makes any vulnerability in it serious. CVE-2024-30015 is an authenticated remote code execution vulnerability.

TL;DR: If an attacker can send specially-crafted packets to an RRAS server (depending on configuration), they could run code with SYSTEM privileges.

Networks exposed to the internet or untrusted users.

> *Microsoft’s advisory: "An attacker could leverage this vulnerability to execute code with elevated privileges on an affected server, effectively taking full control."*

Technical Details

The root cause, according to Microsoft, lies in how the RRAS service parses network packets—especially RADIUS, VPN, or PPTP connections.

If a crafted packet bypasses validation, it can corrupt memory and allow arbitrary code execution.

Code execution achieved, typically with SYSTEM permissions

Below is a pseudo-code snippet showing what a vulnerable handler in RRAS might look like (based on the pattern of past RCE bugs):

void handle_packet(char *input, int len) {
    char buf[256];
    // Vulnerable: len not checked properly
    memcpy(buf, input, len); // buffer overflow if len > 256
    // ... process packet ...
}

*The actual bug may differ, but improper length checking is the classic root cause.*

Exploit Example (Conceptual)

As of now, direct public PoCs do not exist, but a proof-of-concept could look like this, using Python and Scapy:

from scapy.all import *

# Replace 'target_ip' with your RRAS Server IP
target_ip = "192.168.1.10"
malicious_payload = "A" * 300  # Overflow the buffer

# Craft a GRE (PPTP) or RADIUS packet with payload
packet = IP(dst=target_ip)/UDP(dport=1701)/Raw(load=malicious_payload)

send(packet)

*This example is simplified, as exploitation would require reverse engineering RRAS, but it gives you the general idea.*

References & Further Reading

- Microsoft Security Response Center: CVE-2024-30015
- Microsoft's Patch Tuesday May 2024 summary (BleepingComputer)
- RRAS Documentation

Restrict access to RRAS servers using firewalls and network segmentation.

Tip: Microsoft released a patch. If you can’t patch right now, block unnecessary ports (like 1723 for PPTP, 1701 for L2TP, 1812/1813 for RADIUS) and monitor traffic for anomalies.

In Summary

CVE-2024-30015 is a dangerous RCE bug in Windows RRAS, letting attackers run SYSTEM-level code just by sending crafted packets. Since RRAS is often exposed to wide networks, this could make for rapid worm-like attacks if left unpatched.

Timeline

Published on: 05/14/2024 17:16:45 UTC
Last modified on: 06/19/2024 20:58:29 UTC