EulerOS 2.0 SP1 : zsh (EulerOS-SA-2018-1090)

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

Description

According to the versions of the zsh package installed, the EulerOS installation on the remote host is affected by the following vulnerabilities :

  • The zsh shell is a command interpreter usable as an interactive login shell and as a shell script command processor. Zsh resembles the ksh shell (the Korn shell), but includes many enhancements. Zsh supports command line editing, built-in spelling correction, programmable command completion, shell functions (with autoloading), a history mechanism, and more.

  • Security fix(es):

  • In builtin.c in zsh before 5.4, when sh compatibility mode is used, there is a NULL pointer dereference during processing of the cd command with no argument if HOME is not set.(CVE-2017-18205)

  • zsh before 5.0.7 allows evaluation of the initial values of integer variables imported from the environment (instead of treating them as literal numbers). That could allow local privilege escalation, under some specific and atypical conditions where zsh is being invoked in privilege-elevation contexts when the environment has not been properly sanitized, such as when zsh is invoked by sudo on systems where

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

include("compat.inc");

if (description)
{
  script_id(109488);
  script_version("1.3");
  script_cvs_date("Date: 2018/11/13 12:30:47");

  script_cve_id(
    "CVE-2014-10070",
    "CVE-2014-10071",
    "CVE-2017-18205",
    "CVE-2017-18206",
    "CVE-2018-7549"
  );

  script_name(english:"EulerOS 2.0 SP1 : zsh (EulerOS-SA-2018-1090)");
  script_summary(english:"Checks the rpm output for the updated packages.");

  script_set_attribute(attribute:"synopsis", value:
"The remote EulerOS host is missing multiple security updates.");
  script_set_attribute(attribute:"description", value:
"According to the versions of the zsh package installed, the EulerOS
installation on the remote host is affected by the following
vulnerabilities :

  - The zsh shell is a command interpreter usable as an
    interactive login shell and as a shell script command
    processor. Zsh resembles the ksh shell (the Korn
    shell), but includes many enhancements. Zsh supports
    command line editing, built-in spelling correction,
    programmable command completion, shell functions (with
    autoloading), a history mechanism, and more.

  - Security fix(es):

  - In builtin.c in zsh before 5.4, when sh compatibility
    mode is used, there is a NULL pointer dereference
    during processing of the cd command with no argument if
    HOME is not set.(CVE-2017-18205)

  - zsh before 5.0.7 allows evaluation of the initial
    values of integer variables imported from the
    environment (instead of treating them as literal
    numbers). That could allow local privilege escalation,
    under some specific and atypical conditions where zsh
    is being invoked in privilege-elevation contexts when
    the environment has not been properly sanitized, such
    as when zsh is invoked by sudo on systems where
    'env_reset' has been disabled.(CVE-2014-10070)

  - In exec.c in zsh before 5.0.7, there is a buffer
    overflow for very long fds in the '>& fd'
    syntax.(CVE-2014-10071)

  - A buffer overflow flaw was found in the zsh shell
    symbolic link resolver. A local, unprivileged user can
    create a specially crafted directory path which leads
    to a buffer overflow in the context of the user trying
    to do a symbolic link resolution in the aforementioned
    path. If the user affected is privileged, this leads to
    privilege escalation.(CVE-2017-18206)

  - In params.c in zsh through 5.4.2, there is a crash
    during a copy of an empty hash table, as demonstrated
    by typeset -p.(CVE-2018-7549)

Note that Tenable Network Security has extracted the preceding
description block directly from the EulerOS security advisory. Tenable
has attempted to automatically clean and format it as much as possible
without introducing additional issues.");
  # https://developer.huawei.com/ict/en/site-euleros/euleros/security-advisories/EulerOS-SA-2018-1090
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?80cd9e67");
  script_set_attribute(attribute:"solution", value:
"Update the affected zsh packages.");
  script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P");
  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_attribute(attribute:"patch_publication_date", value:"2018/03/28");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:zsh");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:huawei:euleros:2.0");
  script_set_attribute(attribute:"plugin_publication_date", value:"2018/05/02");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Huawei Local Security Checks");

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

  script_dependencies("ssh_get_info.nasl");
  script_require_keys("Host/local_checks_enabled", "Host/EulerOS/release", "Host/EulerOS/rpm-list", "Host/EulerOS/sp");
  script_exclude_keys("Host/EulerOS/uvp_version");

  exit(0);
}

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

if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);

release = get_kb_item("Host/EulerOS/release");
if (isnull(release) || release !~ "^EulerOS") audit(AUDIT_OS_NOT, "EulerOS");
if (release !~ "^EulerOS release 2\.0(\D|$)") audit(AUDIT_OS_NOT, "EulerOS 2.0");

sp = get_kb_item("Host/EulerOS/sp");
if (isnull(sp) || sp !~ "^(1)$") audit(AUDIT_OS_NOT, "EulerOS 2.0 SP1");

uvp = get_kb_item("Host/EulerOS/uvp_version");
if (!empty_or_null(uvp)) audit(AUDIT_OS_NOT, "EulerOS 2.0 SP1", "EulerOS UVP " + uvp);

if (!get_kb_item("Host/EulerOS/rpm-list")) audit(AUDIT_PACKAGE_LIST_MISSING);

cpu = get_kb_item("Host/cpu");
if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH);
if ("x86_64" >!< cpu && cpu !~ "^i[3-6]86$") audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, "EulerOS", cpu);

flag = 0;

pkgs = ["zsh-5.0.2-7.h5"];

foreach (pkg in pkgs)
  if (rpm_check(release:"EulerOS-2.0", sp:"1", reference:pkg)) flag++;

if (flag)
{
  security_report_v4(
    port       : 0,
    severity   : SECURITY_HOLE,
    extra      : rpm_report_get()
  );
  exit(0);
}
else
{
  tested = pkg_tests_get();
  if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
  else audit(AUDIT_PACKAGE_NOT_INSTALLED, "zsh");
}