This article is more than 1 year old

Holy Guacamole! Researchers find Apache remote desktop software was silently pwnable for snooping on sessions

Best get updating pronto, folks

The Apache Project's popular Guacamole open-source remote desktop software contained vulns allowing remote attackers to steal login creds and hijack targeted machines, researchers have said.

Israeli infosec outfit Check Point discovered the reverse RDP flaws, an attack method that allows a compromised host to transmit malware to a clean client machine opening a remote desktop protocol (RDP) session with it.

The Apache Foundation has issued patches for Guacamole following Check Point's research, which resulted in two CVEs (2020-9497 and 2020-9498). Readers who haven't patched it lately should do so immediately.

Guacamole is an open-source RDP gateway product. At its simplest, once installed on a server inside a corporate network, Guacamole lets users point their web browsers at a given address to log in and work on their remote machines as normal.

"Knowing that vulnerabilities in FreeRDP [a similar open-source RDP utility whose protocol is available through Guacamole] were only patched on version 2.0.0-rc4, this means that all versions that were released before January 2020 are using vulnerable versions of FreeRDP," Check Point researcher Eyal Itkin said in a canned statement.

This inspired Check Point to probe older versions of Guacamole, which it surmised would support earlier, vulnerable versions of FreeRDP.

In the reverse attack scenario it tested, Check Point's researchers uncovered a use-after-free memory vuln which, combined with flaws in how Guacamole handled FreeRDP audio (detailed at the link above), gave them arbitrary read and write privileges on the target server.

These, the researchers found, could be linked to a privilege escalation vuln through the guacd Guacamole process. After hijacking a guacd instance on the compromised server, the researchers noticed that new Guacamole connections were spawned using fork() – without using execve().

"A forked process contains the entire memory snapshot of its parent, and that snapshot is replaced with a new image when execve() is called," Check Point said. "Without this crucial call, the child process inherits the entire memory address space of its parent."

With the memory address space thus mapped, the researchers simply added themselves to each and every conversation of interest.

Omri Herscovici, vulnerability research team leader at Check Point, said in a statement: "While the global transition to remote work is a necessity, we cannot neglect the security implications of such remote connections, especially as we enter the post-coronavirus era.

"This research demonstrates how a quick change in the social landscape directly affects what attackers might focus their efforts on. In this case, it's remote work." ®

More about


Send us news

Other stories you might like