Availability of proof-of-concept (PoC) code for recently disclosed remote code execution flaw in Microsoft SQL Server Reporting Services leaves sites vulnerable to attack.
Background
On February 11, Microsoft patched a remote code execution vulnerability in Microsoft SQL Server Reporting Services (SSRS), which provides “a set of on-premises tools and services that create, deploy, and manage mobile and paginated reports.” The issue was reported to Microsoft by Soroush Dalili, principal security consultant at MDSec.
Analysis
CVE-2020-0618 is an improper input validation vulnerability in the ReportingServicesWebServer.dll of SSRS. According to a blog post from Dalili, the OnLoad method of the Microsoft.Reporting.WebForms.BrowserNavigationCorrector class passes untrusted user input (e.g. a serialized payload passed via the NavigationCorrector$ViewState parameter) to the LosFormatter class to be deserialized.
In his research, Dalili observed the Microsoft.Reporting.WebForms.BrowserNavigationCorrector class was used by the Microsoft.ReportingServices.WebServer.ReportViewerPage class.
To exploit the flaw, Dalili targeted the ReportViewer.aspx file on a SharePoint server. By sending a specially crafted POST request containing a serialized payload generated using ysoserial.net, Dalili could trigger the exploit, obtaining a shell on the vulnerable server.
Microsoft SSRS needs to be installed before an attacker can exploit the flaw. However, we’re seeing reports from security researchers who are searching for vulnerable instances.
Found and reported CVE-2020-0618 on a server of a very large car company :P Lets see if its a dupe :P
— Damian Schwyrz (@damian_89_) February 18, 2020
Penetration tester Damian Schwyrz recently identified and reported the flaw “on a server of a very large car company.”
Additionally, Dalili shared a Google search query that shows over 8,900 publicly accessible instances of ReportViewer.aspx, many of which appear to be government-related.
so many gov websites listed just in google...
— Soroush Dalili (@irsdl) February 18, 2020
It is unclear how many of the sites found in this Google search are actually vulnerable to the flaw. However, the uncertainty won’t prohibit attackers from attempting to identify vulnerable sites and exploit the flaw in the wild.
Proof of concept
As mentioned above, Dalili published a PoC for the vulnerability in a blog post on February 14. A GitHub repository featuring Dalili’s PoC was published the same day. At the time this blog post was published, there were no full-fledged exploit scripts available for this vulnerability.
Solution
Microsoft patched this flaw on February 11 as part of Patch Tuesday. According to their advisory, the vulnerability affects Microsoft SQL Server 2012, 2014 and 2016. However, additional reporting from security researcher Kevin Beaumont confirmed this flaw also affects Microsoft SQL Server 2008. The reason 2008 is not listed in the advisory is because it reached its end-of-support cycle in July 2014.
Tested it. MS don’t test again unsupported software.
— Kevin Beaumont (@GossiTheDog) February 18, 2020
Microsoft has provided General Distribution Release (GDR) and a Cumulative Update (CU) for the affected SQL Server versions. According to Microsoft, GDR updates “only contain security updates for the given baseline” while CUs “contain all functional fixes and security updates for the given baseline.”
Please refer to the table below for the applicable update of your SQL Server based on your current version.
Article | Title | Type | Applicable Versions | Included Servicing Release |
---|---|---|---|---|
4532097 | Security update for SQL Server 2016 Service Pack 2 | GDR | 13.0.5026.0—13.0.5101.9 | KB4505220 |
4535706 | Security update for SQL Server 2016 Service Pack 2 | CU | 13.0.5149.0—13.0.5598.27 | KB4527378 |
4532095 | Security update for SQL Server 2014 Service Pack 3 | GDR | 12.0.6024.0—12.0.6108.1 | KB4505218 |
4535288 | Security update for SQL Server 2014 Service Pack 2 | CU | 12.0.6205.1—12.0.6329.1 | KB4500181 |
4532098 | Security update for SQL Server 2012 Service Pack 4 | GDR | 111.0.7001.0—11.0.7462.6 | KB4057116 |
Identifying affected systems
A list of Tenable plugins to identify this vulnerability can be found here. This includes an uncredentialed check (plugin ID 133718), which requires enabling paranoid mode.
Get more information
- Microsoft Advisory for CVE-2020-0618
- Blog Post Analyzing CVE-2020-0618 by Soroush Dalili
- Tweet from Kevin Beaumont confirming SQL Server 2008 Affected
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.