Brian Vincent, Michael Brumlow
Datto Windows Agent
Discovered: Aug 25, 2017
Type: Remote code execution as LocalSystem
Software: Datto Backup Agent for Windows, MacOS, Linux
Versions: All current versions
Datto Backup Agents rely on TLS client certificates to authenticate incoming requests. These certificates and private keys are easy to obtain, even if you are not a Datto customer. Once a single certificate and private key is obtained, it can be used to authenticate with any Datto Backup Agent. The result is that there is no effective authentication on incoming connections to Datto Backups Agents.
This means that any attacker that can establish a TCP connection on port 25566 or 25568 to a Datto Backup Agent can impersonate a Datto Appliance machine, and "pair" with a Datto agent, and issue requests. These requests include performing a full system image-based backup of the machine, or executing certain OS commands. A comprehensive list of requests and their capabilities is currently unknown.
Software: Datto Windows Agent
Versions: versions earlier than 126.96.36.199
The Datto Windows Agent attempts to whitelist only certain OS commands. In versions earlier than 188.8.131.52, this whitelist can be easily avoided. This allows arbitrary commands to be executed.
Together, these vulnerabilities result in trivial remote command execution as LocalSystem for the Datto Windows Agent in versions earlier than 184.108.40.206.
Vendor response correction
It is not necessary to be on the same local network to exploit these vulnerabilities. An attacker only needs to be able to establish a TCP connection to the agent to exploit these vulnerabilities.
Ensure that you are running at least version 220.127.116.11 of the Datto Windows agent, which fixes CVE-2017-16674. For all Datto Backup Agents, set a local firewall rule to only allow incoming connections from your trusted Datto Appliance, as there is no fix for CVE-2017-16673 currently.
Proof of Concept
A proof of concept will not be posted at this time.