Citrix XenServer Multiple Vulnerabilities (CTX200288)

2014-12-05T00:00:00
ID CITRIX_XENSERVER_CTX200288.NASL
Type nessus
Reporter This script is Copyright (C) 2014-2019 and is owned by Tenable, Inc. or an Affiliate thereof.
Modified 2020-11-02T00:00:00

Description

The remote host is running a version of Citrix XenServer that is affected by multiple vulnerabilities :

  • A local privilege escalation vulnerability exists due to improperly restricted access to 'PHYSDEVOP_{prepare,release}_msix' operations by unprivileged guests. An attacker with access to a guest operating system can exploit this issue to gain elevated privileges on affected computers. (CVE-2014-1666)

  • A local privilege escalation vulnerability exists due to missing privilege level checks in x86 emulation of far branches. This flaw exists in the CALL, JMP, and RETF instructions in the Intel assembly syntax, and the LCALL, LJMP, and LRET instructions in the AT&T syntax. An attacker with access to a guest operating system can exploit this issue to gain elevated privileges on affected computers. (CVE-2014-8595)

  • A denial of service vulnerability exists due to a failure to restrict access to the hypercall argument translation feature. An attacker with access to a guest operating system can crash the host with excessive checks on the final register state for 32-bit guests running on a 64-bit hypervisor. (CVE-2014-8866)

  • A denial of service vulnerability exists due to insufficient bounding of 'REP MOVS' to MMIO emulated inside of the hypervisor. This flaw affects the 'hvm_mmio_intercept()' function in 'intercept.c'. An attacker with access to a guest operating system can exploit this issue to crash the host. (CVE-2014-8867)

                                        
                                            #
# (C) Tenable Network Security, Inc.
#

include("compat.inc");

if (description)
{
  script_id(79745);
  script_version("1.7");
  script_cvs_date("Date: 2019/11/25");

  script_cve_id(
    "CVE-2014-1666",
    "CVE-2014-8595",
    "CVE-2014-8866",
    "CVE-2014-8867"
  );
  script_bugtraq_id(
    65125,
    71151,
    71331,
    71332
  );

  script_name(english:"Citrix XenServer Multiple Vulnerabilities (CTX200288)");
  script_summary(english:"Checks XenServer version and installed hotfixes.");

  script_set_attribute(attribute:"synopsis", value:
"The remote device is missing a vendor-supplied security patch.");
  script_set_attribute(attribute:"description", value:
"The remote host is running a version of Citrix XenServer that is
affected by multiple vulnerabilities :

  - A local privilege escalation vulnerability exists
    due to improperly restricted access to
    'PHYSDEVOP_{prepare,release}_msix' operations by
    unprivileged guests. An attacker with access to a guest
    operating system can exploit this issue to gain elevated
    privileges on affected computers. (CVE-2014-1666)

  - A local privilege escalation vulnerability exists
    due to missing privilege level checks in x86 emulation
    of far branches. This flaw exists in the CALL, JMP, and
    RETF instructions in the Intel assembly syntax, and the
    LCALL, LJMP, and LRET instructions in the AT&T syntax.
    An attacker with access to a guest operating system can
    exploit this issue to gain elevated privileges on
    affected computers. (CVE-2014-8595)

  - A denial of service vulnerability exists due to a
    failure to restrict access to the hypercall argument
    translation feature. An attacker with access to a guest
    operating system can crash the host with excessive
    checks on the final register state for 32-bit guests
    running on a 64-bit hypervisor. (CVE-2014-8866)

  - A denial of service vulnerability exists due to
    insufficient bounding of 'REP MOVS' to MMIO emulated
    inside of the hypervisor. This flaw affects the
    'hvm_mmio_intercept()' function in 'intercept.c'. An
    attacker with access to a guest operating system can
    exploit this issue to crash the host.
    (CVE-2014-8867)");
  script_set_attribute(attribute:"see_also", value:"https://support.citrix.com/article/CTX200288");
  script_set_attribute(attribute:"solution", value:
"Apply the relevant hotfix referenced in the vendor advisory.");
  script_set_cvss_base_vector("CVSS2#AV:A/AC:L/Au:N/C:C/I:C/A:C");
  script_set_cvss_temporal_vector("CVSS2#E:U/RL:OF/RC:C");
  script_set_cvss3_base_vector("CVSS:3.0/AV:A/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H");
  script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:O/RC:C");
  script_set_attribute(attribute:"cvss_score_source", value:"CVE-2014-1666");

  script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");
  script_set_attribute(attribute:"exploit_available", value:"false");

  script_set_attribute(attribute:"vuln_publication_date", value:"2014/11/18");
  script_set_attribute(attribute:"patch_publication_date", value:"2014/11/18");
  script_set_attribute(attribute:"plugin_publication_date", value:"2014/12/05");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"cpe:/a:citrix:xenserver");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Misc.");

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

  script_dependencies("citrix_xenserver_version.nbin");
  script_require_keys("Host/XenServer/version", "Host/local_checks_enabled");

  exit(0);
}

include("audit.inc");
include("global_settings.inc");
include("misc_func.inc");

app_name = "Citrix XenServer";
version = get_kb_item_or_exit("Host/XenServer/version");
get_kb_item_or_exit("Host/local_checks_enabled");
patches = get_kb_item("Host/XenServer/patches");
vuln = FALSE;
fix = '';

# We will do our checks within the branches because 6.0.2 needs
# special treatment.
if (version == "6.0.0")
{
  fix = "XS60E042";
  if ("XS60E042" >!< patches) vuln = TRUE;
}
else if (version == "6.0.2")
{
  fix = "XS602E038 or XS602ECC014";
  if ("XS602E038" >!< patches && "XS602ECC014" >!< patches) vuln = TRUE;
}
else if (version =~ "^6\.1\.")
{
  fix = "XS61E045";
  if ("XS61E045" >!< patches) vuln = TRUE;
}
else if (version =~ "^6\.2\.")
{
  fix = "XS62ESP1015";
  if ("XS62ESP1015" >!< patches) vuln = TRUE;
}
else audit(AUDIT_INST_VER_NOT_VULN, app_name, version);

if (vuln)
{
  port = 0;
  report =
    '\n  Installed version : ' + version +
    '\n  Missing hotfix    : ' + fix +
    '\n';

  security_report_v4(severity:SECURITY_HOLE, extra:report, port:port);
}
else audit(AUDIT_PATCH_INSTALLED, fix);