Network Management
Mitigate RCE via Actions and JSON Deserialization
When you test an alert action, the button click can be used to execute remote code (ZDI-CAN-12213). To address the vulnerability, upgrade to Orion Platform 2020.2.5. To mitigate the vulnerability on Orion Platform 2020.2.4 and earlier, modify the website or IIS configuration and block the Test button using one of the suggested workarounds.
First published date
Last published date
Overview
Product section
Cause
Resolution
Orion Platform 2020.2.5
SolarWinds recommends that you upgrade to Orion Platform 2020.2.5, which was released on March 25, 2021.Orion Platform 2020.2.4 and earlier
To mitigate this issue on 2020.2.4 or earlier, complete the following steps:
Option 1 - Use IIS & URL Rewrite
This workaround requires the URL Rewrite IIS plug-in. You can download it from Microsoft's IIS site at URL Rewrite (© 2021 Microsoft, available at https://www.iis.net/downloads/microsoft/url-rewrite, obtained on March 31, 2021).- Download and deploy the "URL Rewrite" extension.
- Open "URL Rewrite" in the IIS Manager.
- Click Add rule(s).. and select "Request blocking" type.
- Type the following regex pattern into the Pattern (URL Path) field:
*/api/Action/TestAction*
- Select the appropriate rule action. SolarWinds recommends that you select "Abort Request". Other types may cause additional errors in the Orion Web Console, such as session timeout.
Option 2 - Tweak Global.asax
This workaround does not require any extra software.Because of security reasons, you can only use this workaround on non-pre-compiled Orion websites. See Disable pre-compiled website to allow optimization to run and be skipped for instructions on how to disable the pre-compiled website.
Note: Configuration wizard reverts the edits. If you run the Configuration wizard, you always need to repeat the workaround steps.
-
Navigate to Orion website folder (default: C:\inetpub\SolarWinds).
-
Edit the "Global.asax" and find the following (around line 365):
protected void Application_BeginRequest
-
Add the following code snippet right at the beginning of this method. (The error code can be changed. SolarWinds suggests that you use 400 as the status code.)
if (Request.Url.AbsolutePath.StartsWith("/api/Action/TestAction", StringComparison.InvariantCultureIgnoreCase)) { Response.Clear(); Response.StatusCode = 400; Response.End(); } -
Save the file.
-- Scripts are not supported under any SolarWinds support program or service.
-- Scripts are provided AS IS without warranty of any kind. SolarWinds further
-- disclaims all warranties including, without limitation, any implied warranties
-- of merchantability or of fitness for a particular purpose. The risk arising
-- out of the use or performance of the scripts and documentation stays with you.
-- In no event shall SolarWinds or anyone else involved in the creation,
-- production, or delivery of the scripts be liable for any damages whatsoever
-- (including, without limitation, damages for loss of business profits, business
-- interruption, loss of business information, or other pecuniary loss) arising
-- out of the use of or inability to use the scripts or documentation.