Attackers are actively probing for vulnerable Citrix Application Delivery Controller (ADC) and Gateway hosts, while multiple proof-of-concept scripts are released, emphasizing the importance of mitigating this flaw immediately.
Background
On December 17, Citrix published a support article for CVE-2019-19781, a path traversal flaw in Citrix ADC and Citrix Gateway, both of which were formerly known as NetScaler ADC and NetScaler Gateway. Citrix cautioned that successful exploitation could result in an unauthenticated attacker gaining remote code execution. Citrix did not provide a patch for the vulnerability, but instead strongly urged customers to apply mitigation steps to thwart exploitation attempts. In the weeks since, attackers have begun scanning for vulnerable hosts for reconnaissance, with some reports suggesting attackers may have already exploited this vulnerability in the wild.
On January 3, SANS Internet Storm Center (ISC) tweeted that they had observed the “first exploit attempt” for this vulnerability in the wild.
Just saw the first exploit attempt for Citrix ADC/Gateway CVE-2019-19781 hit one of our honeypots from 223.167.22.29. More details shortly. #cve201919781#citrix#netscaler
— SANS ISC (@sans_isc) January 3, 2020
According to Shodan, there are over 125,000 Citrix ADC or Gateway hosts publicly accessible. Nate Warfield from Microsoft’s Security Response Center found that every system he “spot checked” was vulnerable to CVE-2019-19781.
If you run Citrix in your network you *really* need to read this. A decent @shodanhq dork to find systems is here:https://t.co/YP0yILjXED
— —(÷[ Nate Warfield ]÷)— (@n0x08) January 9, 2020
Every single system I've spot checked so far has been vulnerable; this will burn people for a while. Take steps to defend yourself ASAP. https://t.co/hmmfUxfe8f
Analysis
The information Citrix provided in their mitigation steps offers clues into the vulnerable component of ADC and Gateway, referencing requests containing the “/vpns/” path. Because this is a path traversal flaw, identifying a vulnerable ADC or Gateway host requires confirming the presence of files located outside the original path requested.
On January 7, SANS ISC published a blog with more details about attackers scanning their honeypots and attempting to exploit the flaw. In the blog, they reference requests looking for a file called smb.conf in the “/vpns/cfg/” path. Requesting this file from a vulnerable Citrix ADC or Gateway will successfully return a configuration file. Systems that have applied Citrix’s recommended mitigations will return an HTTP 403 FORBIDDEN response.
On January 8, Craig Young, principal security researcher on Tripwire’s Vulnerabilities and Exposures Research Term (VERT), published a blog discussing how he achieved “arbitrary command execution” on a vulnerable ADC host. According to Young, there are Perl scripts located in the “/vpns/” path of the Citrix appliances, which can be targeted to allow for limited file writing on the vulnerable host.
On January 10, Rio Sherri, senior security consultant at MDSec, published a blog with additional insight into the limited file writing, highlighting code in the ‘csd’ function of the UserPrefs perl module that “builds a path from the NSC_USER HTTP header without any sanitisation” and will be triggered by any script that calls the function. Sherri found that nearly “all the scripts used this function,” but highlighted one script in particular, newbm.pl. This file accepts parameterized information and builds it into an array stored in an XML file on the vulnerable host. However, code execution is still not feasible at this point. That’s where the research from Young comes into play. He mentions an undocumented feature in the Perl Template Toolkit that “allowed arbitrary command execution when processing a crafted directive.” Sherri saw this as a “potential avenue for exploitation.” By inserting arbitrary code into the XML file, the only remaining step to get code execution would be to get the template engine to parse the file. Sherri achieved this by issuing a specially crafted HTTP request for the XML file stored on the vulnerable host.
All the security researchers opted not to share specific details about the vulnerability due to the fact that Citrix has not yet released a patch for this vulnerability. However, as of January 10, there are exploit scripts in circulation that can achieve code execution.
Proof of concept
Recently, there have been several repositories created on GitHub referencing CVE-2019-19781, including exploit scripts that could lead to code execution by a remote, unauthenticated attacker.
Solution
While Citrix has provided detailed mitigation steps, currently, there is no patch available despite the advisory being released nearly a month ago. With the availability of exploit scripts for this vulnerability, users are strongly encouraged to apply these mitigation steps as soon as possible. Additionally, we would recommend reviewing your logs for requests to determine if active scanning or exploitation may have already occurred. These requests may include paths, such as:
- /vpns/
- /vpn/../vpns/cfg/smb.conf
- /vpn/../vpns/portal/scripts/newbm.pl
Identifying affected systems
Tenable Research has released a direct check plugin (ID 132752) to identify vulnerable assets in addition to the our version check plugin, which can be found here. Note that the version check plugin requires enabling 'paranoid mode'.
Get more information
- Citrix Security Advisory for CVE-2019-19781 (CTX267027)
- Citrix Mitigation Steps for CVE-2019-19781 (CTX267679)
- Tenable’s Previous Notice in December for CVE-2019-19781
Join Tenable's Security Response Team on the Tenable Community.
Learn more about Tenable, the first Cyber Exposure platform for holistic management of your modern attack surface.
Get a free 30-day trial of Tenable.io Vulnerability Management.