Vulnerabilities > CVE-2019-18935 - Deserialization of Untrusted Data vulnerability in Telerik UI for Asp.Net Ajax

047910
CVSS 9.8 - CRITICAL
Attack vector
NETWORK
Attack complexity
LOW
Privileges required
NONE
Confidentiality impact
HIGH
Integrity impact
HIGH
Availability impact
HIGH
network
low complexity
telerik
CWE-502
critical
nessus
exploit available

Summary

Progress Telerik UI for ASP.NET AJAX through 2019.3.1023 contains a .NET deserialization vulnerability in the RadAsyncUpload function. This is exploitable when the encryption keys are known due to the presence of CVE-2017-11317 or CVE-2017-11357, or other means. Exploitation can result in remote code execution. (As of 2020.1.114, a default setting prevents the exploit. In 2019.3.1023, but not earlier versions, a non-default setting can prevent exploitation.)

Vulnerable Configurations

Part Description Count
Application
Telerik
59

Common Weakness Enumeration (CWE)

Exploit-Db

idEDB-ID:47793
last seen2019-12-18
modified2019-12-18
published2019-12-18
reporterExploit-DB
sourcehttps://www.exploit-db.com/download/47793
titleTelerik UI - Remote Code Execution via Insecure Deserialization

Nessus

NASL familyWindows
NASL idTELERIK_UI_FOR_ASPNET_AJAX_CVE-2019-18935.NASL
descriptionProgress Telerik UI for ASP.NET AJAX through 2019.3.1023 contains a .NET deserialization vulnerability in the RadAsyncUpload function. This is exploitable when the encryption keys are known due to the presence of CVE-2017-11317 or CVE-2017-11357, or other means. Exploitation can result in remote code execution. (As of 2020.1.114, a default setting prevents the exploit. In 2019.3.1023, but not earlier versions, a non-default setting can prevent exploitation.)
last seen2020-05-23
modified2020-04-24
plugin id135970
published2020-04-24
reporterThis script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.
sourcehttps://www.tenable.com/plugins/nessus/135970
titleTelerik UI for ASP.NET AJAX RadAsyncUpload .NET Deserialization Vulnerability
code
#
# (C) Tenable Network Security, Inc.
#




include('compat.inc');

if (description)
{
  script_id(135970);
  script_version("1.3");
  script_set_attribute(attribute:"plugin_modification_date", value:"2020/05/22");

  script_cve_id("CVE-2019-18935");
  script_xref(name:"IAVA", value:"2020-A-0219");

  script_name(english:"Telerik UI for ASP.NET AJAX RadAsyncUpload .NET Deserialization Vulnerability");

  script_set_attribute(attribute:"synopsis", value:
"A web application development suite installed on the remote Windows
host is affected by a deserialization vulnerability.");
  script_set_attribute(attribute:"description", value:
"Progress Telerik UI for ASP.NET AJAX through 2019.3.1023 contains a .NET deserialization vulnerability 
in the RadAsyncUpload function. This is exploitable when the encryption keys are known due to 
the presence of CVE-2017-11317 or CVE-2017-11357, or other means. Exploitation can result 
in remote code execution. (As of 2020.1.114, a default setting prevents the exploit. 
In 2019.3.1023, but not earlier versions, a non-default setting can prevent exploitation.)");
  # https://www.telerik.com/support/kb/aspnet-ajax/details/allows-javascriptserializer-deserialization
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?de2ce6ef");
  # https://docs.telerik.com/devtools/aspnet-ajax/controls/asyncupload/security?&_ga=2.224762457.29387225.1587722153-1707628900.1586272484#allowedcustommetadatatypes
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?be6fd178");
  script_set_attribute(attribute:"solution", value:
"Upgrade to Telerik UI for ASP.NET AJAX version R3 2019 SP1
(2019.3.1023) or later, and enable the type whitelisting feature of RadAsyncUpload.");
  script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P");
  script_set_cvss_temporal_vector("CVSS2#E:H/RL:OF/RC:C");
  script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H");
  script_set_cvss3_temporal_vector("CVSS:3.0/E:H/RL:O/RC:C");
  script_set_attribute(attribute:"cvss_score_source", value:"CVE-2019-18935");

  script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
  script_set_attribute(attribute:"exploit_available", value:"true");
  script_set_attribute(attribute:"exploited_by_malware", value:"true");

  script_set_attribute(attribute:"vuln_publication_date", value:"2019/12/09");
  script_set_attribute(attribute:"patch_publication_date", value:"2019/12/09");
  script_set_attribute(attribute:"plugin_publication_date", value:"2020/04/24");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"cpe:/a:telerik:ui_for_asp.net_ajax");
  script_set_attribute(attribute:"stig_severity", value:"I");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Windows");

  script_copyright(english:"This script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.");

  script_dependencies("telerik_ui_for_aspnet_ajax_installed.nbin");
  script_require_keys("installed_sw/Telerik UI for ASP.NET AJAX");
  script_require_ports(139, 445);

  exit(0);
}

include('install_func.inc');
include('smb_func.inc');
include('smb_hotfixes.inc');

app_name = 'Telerik UI for ASP.NET AJAX';
opt_in = FALSE;
install = get_single_install(app_name:app_name, exit_if_unknown_ver:TRUE);

version = install['version'];
path = install['path'];

# 2020.1.114 and later have default settings available
if (ver_compare(ver:version, fix:'2020.1.114.0', strict:FALSE) >= 0)
  audit(AUDIT_INST_PATH_NOT_VULN, app_name, version, path);

# 2019.3.1023 has opt-in settings available, but not by default
if ((ver_compare(ver:version, fix:'2019.3.1023', strict:FALSE) >= 0) &&
    (ver_compare(ver:version, fix:'2020.1.114.0', strict:FALSE) <= 0))
{
  opt_in = TRUE;
}

if (opt_in)
{
  # if version is 2019.3.1023 or higher, but lower than 2020.1.114.0, 
  # type whitelisting feature of RadAsyncUpload needs to be enabled manually.
  # so if we're paranoid, we add a note to the report
  # (done below) and if we're not paranoid, we audit out
  if (report_paranoia < 2) audit(AUDIT_PARANOID);
}

port = get_kb_item('SMB/transport');
if (empty_or_null(port))
  port = 445;

report = report_items_str(
  report_items:make_array(
    'Path', path,
    'Installed version', version,
    'Fixed version', '2019.3.1023'
  ),
  ordered_fields:make_list('Path', 'Installed version', 'Fixed version')
);

if (opt_in)
  report += '\n\n' + 'Although the type whitelisting feature of RadAsyncUpload is available for this version,' +
            '\n' + 'we are not able to determine if this is actually enabled. Following the advisory,' +
            '\n' + 'you should ensure that this is the case.';

security_report_v4(port:port, severity:SECURITY_HOLE, extra:report);