Remote Desktop Gateway (RDG) (which has also been called Terminal Services Gateway) is a Windows Server component that provides address routing for Remote Desktop (RDP). Users connect and authenticate to the gateway instead of directly to an RDP server. RDG will forward remote RDP traffic to an address that is specified by the user. The idea here is that the exposed-to-the-Internet RDG provides much less of an attack surface than the RDP server itself.
But security researchers have found that the implementation in RDG of string segmentation lays it open to memory corruption vulnerabilities. This means that a remote, unauthenticated attacker can execute arbitrary code by sending specially crafted requests that will invoke segmentation in a particular way.
The vulnerabilities affect Windows Server 2012, 2016 and 2019. MSFT has since patched them, but -- as always -- the patches may not end up universally applied.
Marcus Hutchins took a look at the evolving situation from a technical standpoint in the Kryptos Logic blog.
While RDG supports three different protocols (HTTP, HTTPS, and UDP), he saw that only one protocol had been changed by the MSFT patches. It was UDP, and CVE-2020-0609 was involved.
The RDG UDP protocol is there to allow for large messages to be split across multiple separate UDP packets. They have to be reassembled when they arrive at the target, since they may arrive out of order. It's in the re-assembler that RDG can get fooled and where the vulnerability lives.
Hutchins says: "This vulnerability is much more flexible than a typical linear heap overflow. It allows us to not only control the size of the data written, but the offset to where it's written. With the extra control, it's easier to do more precise writes, avoiding unnecessarily data corruption."
A rifle, not a cannon then.
Combined with the handling of arrays in the packet handler (CVE-2020-0610), an attacker will find fertile ground for exploits in the unpatched server.
Hutchins decided to help the vulnerable by developing and publishing the source code for an RDG scanner. This open-sourced scanner will look for vulnerable RDG gateways on a network and report back.
Mitigating the threat of an unpatched server can be simpler and more direct than might be apparent. Since only UDP is involved in both of the vulnerabilities, stopping the UDP traffic by disabling it should stop the vulnerability's effect as well.
Alternatively, firewalling the UDP port (usually port 3391) may serve the same mitigation function.
— Larry Loeb has written for many of the last century's major "dead tree" computer magazines, having been, among other things, a consulting editor for BYTE magazine and senior editor for the launch of WebWeek.