Lucene search

K
nessusThis script is Copyright (C) 2019-2021 and is owned by Tenable, Inc. or an Affiliate thereof.EULEROS_SA-2019-1617.NASL
HistoryMay 30, 2019 - 12:00 a.m.

EulerOS Virtualization for ARM 64 3.0.2.0 : ruby (EulerOS-SA-2019-1617)

2019-05-3000:00:00
This script is Copyright (C) 2019-2021 and is owned by Tenable, Inc. or an Affiliate thereof.
www.tenable.com
13

According to the versions of the ruby packages installed, the EulerOS Virtualization for ARM 64 installation on the remote host is affected by the following vulnerabilities :

  • Ruby is an extensible, interpreted, object-oriented, scripting language. It has features to process text files and to perform system management tasks.Security Fix(es):An issue was discovered in the OpenSSL library in Ruby before 2.3.8, 2.4.x before 2.4.5, 2.5.x before 2.5.2, and 2.6.x before 2.6.0-preview3. When two OpenSSL::X509::Name objects are compared using ==, depending on the ordering, non-equal objects may return true. When the first argument is one character longer than the second, or the second argument contains a character that is one less than a character in the same position of the first argument, the result of == will be true. This could be leveraged to create an illegitimate certificate that may be accepted as legitimate and then used in signing or encryption operations.(CVE-2018-16395)An issue was discovered in Ruby before 2.3.8, 2.4.x before 2.4.5, 2.5.x before 2.5.2, and 2.6.x before 2.6.0-preview3. It does not taint strings that result from unpacking tainted strings with some formats.(CVE-2018-16396)** RESERVED
    This candidate has been reserved by an organization or individual that will use it when announcing a new security problem. When the candidate has been publicized, the details for this candidate will be provided.(CVE-2019-8322) RESERVED** This candidate has been reserved by an organization or individual that will use it when announcing a new security problem.
    When the candidate has been publicized, the details for this candidate will be provided.(CVE-2019-8323)** RESERVED** This candidate has been reserved by an organization or individual that will use it when announcing a new security problem. When the candidate has been publicized, the details for this candidate will be provided.(CVE-2019-8324)RESERVED This candidate has been reserved by an organization or individual that will use it when announcing a new security problem. When the candidate has been publicized, the details for this candidate will be provided.(CVE-2019-8325)An exploitable heap overflow vulnerability exists in the Fiddle::Function.new ‘‘initialize’’ function functionality of Ruby. In Fiddle::Function.new ‘‘initialize’’ heap buffer ‘‘arg_types’’ allocation is made based on args array length. Specially constructed object passed as element of args array can increase this array size after mentioned allocation and cause heap overflow.(CVE-2016-2339)Type confusion exists in
    _cancel_eval Ruby’s TclTkIp class method. Attacker passing different type of object than String as ‘‘retval’’ argument can cause arbitrary code execution.(CVE-2016-2337)

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.

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

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

if (description)
{
  script_id(125569);
  script_version("1.7");
  script_set_attribute(attribute:"plugin_modification_date", value:"2021/07/06");

  script_cve_id(
    "CVE-2016-2337",
    "CVE-2016-2339",
    "CVE-2018-16395",
    "CVE-2018-16396",
    "CVE-2019-8322",
    "CVE-2019-8323",
    "CVE-2019-8324",
    "CVE-2019-8325"
  );

  script_name(english:"EulerOS Virtualization for ARM 64 3.0.2.0 : ruby (EulerOS-SA-2019-1617)");
  script_summary(english:"Checks the rpm output for the updated packages.");

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

  - Ruby is an extensible, interpreted, object-oriented,
    scripting language. It has features to process text
    files and to perform system management tasks.Security
    Fix(es):An issue was discovered in the OpenSSL library
    in Ruby before 2.3.8, 2.4.x before 2.4.5, 2.5.x before
    2.5.2, and 2.6.x before 2.6.0-preview3. When two
    OpenSSL::X509::Name objects are compared using ==,
    depending on the ordering, non-equal objects may return
    true. When the first argument is one character longer
    than the second, or the second argument contains a
    character that is one less than a character in the same
    position of the first argument, the result of == will
    be true. This could be leveraged to create an
    illegitimate certificate that may be accepted as
    legitimate and then used in signing or encryption
    operations.(CVE-2018-16395)An issue was discovered in
    Ruby before 2.3.8, 2.4.x before 2.4.5, 2.5.x before
    2.5.2, and 2.6.x before 2.6.0-preview3. It does not
    taint strings that result from unpacking tainted
    strings with some formats.(CVE-2018-16396)** RESERVED
    ** This candidate has been reserved by an organization
    or individual that will use it when announcing a new
    security problem. When the candidate has been
    publicized, the details for this candidate will be
    provided.(CVE-2019-8322)** RESERVED ** This candidate
    has been reserved by an organization or individual that
    will use it when announcing a new security problem.
    When the candidate has been publicized, the details for
    this candidate will be provided.(CVE-2019-8323)**
    RESERVED ** This candidate has been reserved by an
    organization or individual that will use it when
    announcing a new security problem. When the candidate
    has been publicized, the details for this candidate
    will be provided.(CVE-2019-8324)** RESERVED ** This
    candidate has been reserved by an organization or
    individual that will use it when announcing a new
    security problem. When the candidate has been
    publicized, the details for this candidate will be
    provided.(CVE-2019-8325)An exploitable heap overflow
    vulnerability exists in the Fiddle::Function.new
    ''initialize'' function functionality of Ruby. In
    Fiddle::Function.new ''initialize'' heap buffer
    ''arg_types'' allocation is made based on args array
    length. Specially constructed object passed as element
    of args array can increase this array size after
    mentioned allocation and cause heap
    overflow.(CVE-2016-2339)Type confusion exists in
    _cancel_eval Ruby's TclTkIp class method. Attacker
    passing different type of object than String as
    ''retval'' argument can cause arbitrary code
    execution.(CVE-2016-2337)

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.huaweicloud.com/ict/en/site-euleros/euleros/security-advisories/EulerOS-SA-2019-1617
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?5681a400");
  script_set_attribute(attribute:"solution", value:
"Update the affected ruby packages.");
  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:U/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:U/RL:O/RC:C");
  script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");

  script_set_attribute(attribute:"patch_publication_date", value:"2019/05/31");
  script_set_attribute(attribute:"plugin_publication_date", value:"2019/05/30");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:ruby");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:ruby-irb");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:ruby-libs");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:rubygem-bigdecimal");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:rubygem-io-console");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:rubygem-json");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:rubygem-psych");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:rubygem-rdoc");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:rubygems");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:huawei:euleros:uvp:3.0.2.0");
  script_set_attribute(attribute:"generated_plugin", value:"current");
  script_end_attributes();

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

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

  script_dependencies("ssh_get_info.nasl");
  script_require_keys("Host/local_checks_enabled", "Host/cpu", "Host/EulerOS/release", "Host/EulerOS/rpm-list", "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");
uvp = get_kb_item("Host/EulerOS/uvp_version");
if (uvp != "3.0.2.0") audit(AUDIT_OS_NOT, "EulerOS Virtualization 3.0.2.0");
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$" && "aarch64" >!< cpu) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, "EulerOS", cpu);
if ("aarch64" >!< cpu) audit(AUDIT_ARCH_NOT, "aarch64", cpu);

flag = 0;

pkgs = ["ruby-2.0.0.648-33.h13",
        "ruby-irb-2.0.0.648-33.h13",
        "ruby-libs-2.0.0.648-33.h13",
        "rubygem-bigdecimal-1.2.0-33.h13",
        "rubygem-io-console-0.4.2-33.h13",
        "rubygem-json-1.7.7-33.h13",
        "rubygem-psych-2.0.0-33.h13",
        "rubygem-rdoc-4.0.0-33.h13",
        "rubygems-2.0.14.1-33.h13"];

foreach (pkg in pkgs)
  if (rpm_check(release:"EulerOS-2.0", 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, "ruby");
}
VendorProductVersionCPE
huaweieulerosrubyp-cpe:/a:huawei:euleros:ruby
huaweieulerosruby-irbp-cpe:/a:huawei:euleros:ruby-irb
huaweieulerosruby-libsp-cpe:/a:huawei:euleros:ruby-libs
huaweieulerosrubygem-bigdecimalp-cpe:/a:huawei:euleros:rubygem-bigdecimal
huaweieulerosrubygem-io-consolep-cpe:/a:huawei:euleros:rubygem-io-console
huaweieulerosrubygem-jsonp-cpe:/a:huawei:euleros:rubygem-json
huaweieulerosrubygem-psychp-cpe:/a:huawei:euleros:rubygem-psych
huaweieulerosrubygem-rdocp-cpe:/a:huawei:euleros:rubygem-rdoc
huaweieulerosrubygemsp-cpe:/a:huawei:euleros:rubygems
huaweieulerosuvpcpe:/o:huawei:euleros:uvp:3.0.2.0