Lucene search

K
nessusThis script is Copyright (C) 2020-2022 and is owned by Tenable, Inc. or an Affiliate thereof.TELERIK_UI_FOR_ASPNET_AJAX_CVE-2019-18935.NASL
HistoryApr 24, 2020 - 12:00 a.m.

Telerik UI for ASP.NET AJAX RadAsyncUpload .NET Deserialization Vulnerability

2020-04-2400:00:00
This script is Copyright (C) 2020-2022 and is owned by Tenable, Inc. or an Affiliate thereof.
www.tenable.com
512

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.)

#%NASL_MIN_LEVEL 70300
#
# (C) Tenable Network Security, Inc.
#

include('deprecated_nasl_level.inc');
include('compat.inc');

if (description)
{
  script_id(135970);
  script_version("1.8");
  script_set_attribute(attribute:"plugin_modification_date", value:"2022/12/05");

  script_cve_id("CVE-2019-18935");
  script_xref(name:"IAVA", value:"2020-A-0219");
  script_xref(name:"CISA-KNOWN-EXPLOITED", value:"2022/05/03");
  script_xref(name:"CEA-ID", value:"CEA-2020-0129");

  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");
  # https://docs.telerik.com/devtools/aspnet-ajax/controls/asyncupload/security
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?57e10c1e");
  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_set_attribute(attribute:"thorough_tests", value:"true");
  script_end_attributes();

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

  script_copyright(english:"This script is Copyright (C) 2020-2022 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');

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

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

# 2010.1.309 and earlier not affected 
if (ver_compare(ver:version, fix:'2010.1.309.0', strict:FALSE) <= 0)
  audit(AUDIT_INST_PATH_NOT_VULN, app_name, version, 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);
}

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

var 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);

VendorProductVersionCPE
telerikui_for_asp.net_ajaxcpe:/a:telerik:ui_for_asp.net_ajax