The remote CentOS Linux 9 host has packages installed that are affected by multiple vulnerabilities as referenced in the libxml2-2.9.12-4.el9 build changelog.
xmlSchemaPreRun in xmlschemas.c in libxml2 2.9.10 allows an xmlSchemaValidateStream memory leak.
(CVE-2019-20388)
GNOME project libxml2 v2.9.10 has a global buffer over-read vulnerability in xmlEncodeEntitiesInternal at libxml2/entities.c. The issue has been fixed in commit 50f06b3e. (CVE-2020-24977)
xmlStringLenDecodeEntities in parser.c in libxml2 2.9.10 has an infinite loop in a certain end-of-file situation. (CVE-2020-7595)
There’s a flaw in libxml2’s xmllint in versions before 2.9.11. An attacker who is able to submit a crafted file to be processed by xmllint could trigger a use-after-free. The greatest impact of this flaw is to confidentiality, integrity, and availability. (CVE-2021-3516)
There is a flaw in the xml entity encoding functionality of libxml2 in versions before 2.9.11. An attacker who is able to supply a crafted file to be processed by an application linked with the affected functionality of libxml2 could trigger an out-of-bounds read. The most likely impact of this flaw is to application availability, with some potential impact to confidentiality and integrity if an attacker is able to use memory information to further exploit the application. (CVE-2021-3517)
There’s a flaw in libxml2 in versions before 2.9.11. An attacker who is able to submit a crafted file to be processed by an application linked with libxml2 could trigger a use-after-free. The greatest impact from this flaw is to confidentiality, integrity, and availability. (CVE-2021-3518)
A vulnerability found in libxml2 in versions before 2.9.11 shows that it did not propagate errors while parsing XML mixed content, causing a NULL dereference. If an untrusted XML document was parsed in recovery mode and post-validated, the flaw could be used to crash the application. The highest threat from this vulnerability is to system availability. (CVE-2021-3537)
Note that Nessus has not tested for these issues but has instead relied only on the application’s self-reported version number.
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
#
# The package checks in this plugin were extracted from
# the CentOS Stream Build Service.
##
include('compat.inc');
if (description)
{
script_id(191152);
script_version("1.1");
script_set_attribute(attribute:"plugin_modification_date", value:"2024/04/26");
script_cve_id(
"CVE-2019-20388",
"CVE-2020-7595",
"CVE-2020-24977",
"CVE-2021-3516",
"CVE-2021-3517",
"CVE-2021-3518",
"CVE-2021-3537"
);
script_name(english:"CentOS 9 : libxml2-2.9.12-4.el9");
script_set_attribute(attribute:"synopsis", value:
"The remote CentOS host is missing one or more security updates for libxml2.");
script_set_attribute(attribute:"description", value:
"The remote CentOS Linux 9 host has packages installed that are affected by multiple vulnerabilities as referenced in the
libxml2-2.9.12-4.el9 build changelog.
- xmlSchemaPreRun in xmlschemas.c in libxml2 2.9.10 allows an xmlSchemaValidateStream memory leak.
(CVE-2019-20388)
- GNOME project libxml2 v2.9.10 has a global buffer over-read vulnerability in xmlEncodeEntitiesInternal at
libxml2/entities.c. The issue has been fixed in commit 50f06b3e. (CVE-2020-24977)
- xmlStringLenDecodeEntities in parser.c in libxml2 2.9.10 has an infinite loop in a certain end-of-file
situation. (CVE-2020-7595)
- There's a flaw in libxml2's xmllint in versions before 2.9.11. An attacker who is able to submit a crafted
file to be processed by xmllint could trigger a use-after-free. The greatest impact of this flaw is to
confidentiality, integrity, and availability. (CVE-2021-3516)
- There is a flaw in the xml entity encoding functionality of libxml2 in versions before 2.9.11. An attacker
who is able to supply a crafted file to be processed by an application linked with the affected
functionality of libxml2 could trigger an out-of-bounds read. The most likely impact of this flaw is to
application availability, with some potential impact to confidentiality and integrity if an attacker is
able to use memory information to further exploit the application. (CVE-2021-3517)
- There's a flaw in libxml2 in versions before 2.9.11. An attacker who is able to submit a crafted file to
be processed by an application linked with libxml2 could trigger a use-after-free. The greatest impact
from this flaw is to confidentiality, integrity, and availability. (CVE-2021-3518)
- A vulnerability found in libxml2 in versions before 2.9.11 shows that it did not propagate errors while
parsing XML mixed content, causing a NULL dereference. If an untrusted XML document was parsed in recovery
mode and post-validated, the flaw could be used to crash the application. The highest threat from this
vulnerability is to system availability. (CVE-2021-3537)
Note that Nessus has not tested for these issues but has instead relied only on the application's self-reported version
number.");
script_set_attribute(attribute:"see_also", value:"https://kojihub.stream.centos.org/koji/buildinfo?buildID=11860");
script_set_attribute(attribute:"solution", value:
"Update the CentOS 9 Stream libxml2 package.");
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:POC/RL:OF/RC:C");
script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H");
script_set_cvss3_temporal_vector("CVSS:3.0/E:P/RL:O/RC:C");
script_set_attribute(attribute:"cvss_score_source", value:"CVE-2021-3517");
script_set_attribute(attribute:"cvss3_score_source", value:"CVE-2021-3518");
script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
script_set_attribute(attribute:"exploit_available", value:"true");
script_set_attribute(attribute:"vuln_publication_date", value:"2020/01/21");
script_set_attribute(attribute:"patch_publication_date", value:"2021/08/10");
script_set_attribute(attribute:"plugin_publication_date", value:"2024/02/29");
script_set_attribute(attribute:"plugin_type", value:"local");
script_set_attribute(attribute:"cpe", value:"cpe:/a:centos:centos:9");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:centos:centos:libxml2");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:centos:centos:libxml2-devel");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:centos:centos:libxml2-static");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:centos:centos:python3-libxml2");
script_set_attribute(attribute:"generated_plugin", value:"current");
script_end_attributes();
script_category(ACT_GATHER_INFO);
script_family(english:"CentOS Local Security Checks");
script_copyright(english:"This script is Copyright (C) 2024 and is owned by Tenable, Inc. or an Affiliate thereof.");
script_dependencies("ssh_get_info.nasl");
script_require_keys("Host/local_checks_enabled", "Host/CentOS/release", "Host/CentOS/rpm-list", "Host/cpu");
exit(0);
}
include('rpm.inc');
include('rhel.inc');
if (!get_kb_item('Host/local_checks_enabled')) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
var os_release = get_kb_item('Host/CentOS/release');
if (isnull(os_release) || 'CentOS' >!< os_release) audit(AUDIT_OS_NOT, 'CentOS');
var os_ver = pregmatch(pattern: "CentOS(?: Stream)?(?: Linux)? release ([0-9]+)", string:os_release);
if (isnull(os_ver)) audit(AUDIT_UNKNOWN_APP_VER, 'CentOS');
os_ver = os_ver[1];
if (!rhel_check_release(operator: 'ge', os_version: os_ver, rhel_version: '9')) audit(AUDIT_OS_NOT, 'CentOS 9.x', 'CentOS ' + os_ver);
if (!get_kb_item('Host/CentOS/rpm-list')) audit(AUDIT_PACKAGE_LIST_MISSING);
var cpu = get_kb_item('Host/cpu');
if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH);
if ('x86_64' >!< cpu && cpu !~ "^i[3-6]86$" && 's390' >!< cpu && 'aarch64' >!< cpu && 'ppc' >!< cpu) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, 'CentOS', cpu);
var pkgs = [
{'reference':'libxml2-2.9.12-4.el9', 'release':'9', 'rpm_spec_vers_cmp':TRUE},
{'reference':'libxml2-devel-2.9.12-4.el9', 'release':'9', 'rpm_spec_vers_cmp':TRUE},
{'reference':'libxml2-static-2.9.12-4.el9', 'release':'9', 'rpm_spec_vers_cmp':TRUE},
{'reference':'python3-libxml2-2.9.12-4.el9', 'release':'9', 'rpm_spec_vers_cmp':TRUE}
];
var flag = 0;
foreach var package_array ( pkgs ) {
var reference = NULL;
var _release = NULL;
var sp = NULL;
var _cpu = NULL;
var el_string = NULL;
var rpm_spec_vers_cmp = NULL;
var epoch = NULL;
var allowmaj = NULL;
if (!empty_or_null(package_array['reference'])) reference = package_array['reference'];
if (!empty_or_null(package_array['release'])) _release = 'CentOS-' + package_array['release'];
if (!empty_or_null(package_array['sp'])) sp = package_array['sp'];
if (!empty_or_null(package_array['cpu'])) _cpu = package_array['cpu'];
if (!empty_or_null(package_array['el_string'])) el_string = package_array['el_string'];
if (!empty_or_null(package_array['rpm_spec_vers_cmp'])) rpm_spec_vers_cmp = package_array['rpm_spec_vers_cmp'];
if (!empty_or_null(package_array['epoch'])) epoch = package_array['epoch'];
if (!empty_or_null(package_array['allowmaj'])) allowmaj = package_array['allowmaj'];
if (reference && _release) {
if (rpm_check(release:_release, sp:sp, cpu:_cpu, reference:reference, epoch:epoch, el_string:el_string, rpm_spec_vers_cmp:rpm_spec_vers_cmp, allowmaj:allowmaj)) flag++;
}
}
if (flag)
{
security_report_v4(
port : 0,
severity : SECURITY_HOLE,
extra : rpm_report_get()
);
exit(0);
}
else
{
var tested = pkg_tests_get();
if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
else audit(AUDIT_PACKAGE_NOT_INSTALLED, 'libxml2 / libxml2-devel / libxml2-static / python3-libxml2');
}
Vendor | Product | Version | CPE |
---|---|---|---|
centos | centos | 9 | cpe:/a:centos:centos:9 |
centos | centos | libxml2 | p-cpe:/a:centos:centos:libxml2 |
centos | centos | libxml2-devel | p-cpe:/a:centos:centos:libxml2-devel |
centos | centos | libxml2-static | p-cpe:/a:centos:centos:libxml2-static |
centos | centos | python3-libxml2 | p-cpe:/a:centos:centos:python3-libxml2 |
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-20388
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-24977
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-7595
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3516
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3517
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3518
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3537
kojihub.stream.centos.org/koji/buildinfo?buildID=11860