The remote Redhat Enterprise Linux 7 host has one or more packages installed that are affected by multiple vulnerabilities that have been acknowledged by the vendor but will not be patched.
libxml2: Missing validation for external entities in xmlParsePEReference (CVE-2017-7375)
libxml2: Heap-based buffer overflow in xmlEncodeEntitiesInternal() in entities.c (CVE-2021-3517)
Possible cross-site scripting vulnerability in libxml after commit 960f0e2. (CVE-2016-3709)
The xmlBufAttrSerializeTxtContent function in xmlsave.c in libxml2 allows context-dependent attackers to cause a denial of service (out-of-bounds read and application crash) via a non-UTF-8 attribute value, related to serialization. NOTE: this vulnerability may be a duplicate of CVE-2016-3627. (CVE-2016-4483)
libxml2 2.9.4 and earlier, as used in XMLSec 1.2.23 and earlier and other products, does not offer a flag directly indicating that the current document may be read but other files may not be opened, which makes it easier for remote attackers to conduct XML External Entity (XXE) attacks via a crafted document.
(CVE-2016-9318)
A remote code execution vulnerability in libxml2 could enable an attacker using a specially crafted file to execute arbitrary code within the context of an unprivileged process. This issue is rated as High due to the possibility of remote code execution in an application that uses this library. Product: Android.
Versions: 4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2. Android ID: A-37104170. (CVE-2017-0663)
parser.c in libxml2 before 2.9.5 mishandles parameter-entity references because the NEXTL macro calls the xmlParserHandlePEReference function in the case of a ‘%’ character in a DTD name. (CVE-2017-16931)
parser.c in libxml2 before 2.9.5 does not prevent infinite recursion in parameter entities.
(CVE-2017-16932)
libxml2 2.9.4, when used in recover mode, allows remote attackers to cause a denial of service (NULL pointer dereference) via a crafted XML document. NOTE: The maintainer states I would disagree of a CVE with the Recover parsing option which should only be used for manual recovery at least for XML parser.
(CVE-2017-5969)
The htmlParseTryOrFinish function in HTMLparser.c in libxml2 2.9.4 allows attackers to cause a denial of service (buffer over-read) or information disclosure. (CVE-2017-8872)
A buffer overflow was discovered in libxml2 20904-GITv2.9.4-16-g0741801. The function xmlSnprintfElementContent in valid.c is supposed to recursively dump the element content definition into a char buffer ‘buf’ of size ‘size’. The variable len is assigned strlen(buf). If the content->type is XML_ELEMENT_CONTENT_ELEMENT, then (i) the content->prefix is appended to buf (if it actually fits) whereupon (ii) content->name is written to the buffer. However, the check for whether the content->name actually fits also uses ‘len’ rather than the updated buffer length strlen(buf). This allows us to write about size many bytes beyond the allocated memory. This vulnerability causes programs that use libxml2, such as PHP, to crash. (CVE-2017-9047)
libxml2 20904-GITv2.9.4-16-g0741801 is vulnerable to a stack-based buffer overflow. The function xmlSnprintfElementContent in valid.c is supposed to recursively dump the element content definition into a char buffer ‘buf’ of size ‘size’. At the end of the routine, the function may strcat two more characters without checking whether the current strlen(buf) + 2 < size. This vulnerability causes programs that use libxml2, such as PHP, to crash. (CVE-2017-9048)
libxml2 20904-GITv2.9.4-16-g0741801 is vulnerable to a heap-based buffer over-read in the xmlDictComputeFastKey function in dict.c. This vulnerability causes programs that use libxml2, such as PHP, to crash. This vulnerability exists because of an incomplete fix for libxml2 Bug 759398.
(CVE-2017-9049)
libxml2 20904-GITv2.9.4-16-g0741801 is vulnerable to a heap-based buffer over-read in the xmlDictAddString function in dict.c. This vulnerability causes programs that use libxml2, such as PHP, to crash. This vulnerability exists because of an incomplete fix for CVE-2016-1839. (CVE-2017-9050)
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’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)
valid.c in libxml2 before 2.9.13 has a use-after-free of ID and IDREF attributes. (CVE-2022-23308)
An issue was discovered in libxml2 before 2.10.3. When parsing a multi-gigabyte XML document with the XML_PARSE_HUGE parser option enabled, several integer counters can overflow. This results in an attempt to access an array at a negative 2GB offset, typically leading to a segmentation fault. (CVE-2022-40303)
An issue was discovered in libxml2 before 2.10.3. Certain invalid XML entity definitions can corrupt a hash table key, potentially leading to subsequent logic errors. In one case, a double-free can be provoked. (CVE-2022-40304)
In libxml2 before 2.10.4, parsing of certain invalid XSD schemas can lead to a NULL pointer dereference and subsequently a segfault. This occurs in xmlSchemaFixupComplexType in xmlschemas.c. (CVE-2023-28484)
An issue was discovered in libxml2 before 2.10.4. When hashing empty dict strings in a crafted XML document, xmlDictComputeFastKey in dict.c can produce non-deterministic values, leading to various logic and memory errors, such as a double free. This behavior occurs because there is an attempt to use the first byte of an empty string, and any value is possible (not solely the ‘\0’ value). (CVE-2023-29469)
Xmlsoft Libxml2 v2.11.0 was discovered to contain an out-of-bounds read via the xmlSAX2StartElement() function at /libxml2/SAX2.c. This vulnerability allows attackers to cause a Denial of Service (DoS) via supplying a crafted XML file. NOTE: the vendor’s position is that the product does not support the legacy SAX1 interface with custom callbacks; there is a crash even without crafted input. (CVE-2023-39615)
An issue was discovered in libxml2 before 2.11.7 and 2.12.x before 2.12.5. When using the XML Reader interface with DTD validation and XInclude expansion enabled, processing crafted XML documents can lead to an xmlValidatePopElement use-after-free. (CVE-2024-25062)
Note that Nessus has not tested for these issues but has instead relied on the package manager’s report that the package is installed.
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
#
# The descriptive text and package checks in this plugin were
# extracted from Red Hat Security Advisory libxml2. The text
# itself is copyright (C) Red Hat, Inc.
##
include('compat.inc');
if (description)
{
script_id(195373);
script_version("1.0");
script_set_attribute(attribute:"plugin_modification_date", value:"2024/05/11");
script_cve_id(
"CVE-2016-3709",
"CVE-2016-4483",
"CVE-2016-9318",
"CVE-2017-0663",
"CVE-2017-5969",
"CVE-2017-7375",
"CVE-2017-8872",
"CVE-2017-9047",
"CVE-2017-9048",
"CVE-2017-9049",
"CVE-2017-9050",
"CVE-2017-16931",
"CVE-2017-16932",
"CVE-2021-3516",
"CVE-2021-3517",
"CVE-2021-3518",
"CVE-2021-3537",
"CVE-2022-23308",
"CVE-2022-40303",
"CVE-2022-40304",
"CVE-2023-28484",
"CVE-2023-29469",
"CVE-2023-39615",
"CVE-2024-25062"
);
script_name(english:"RHEL 7 : libxml2 (Unpatched Vulnerability)");
script_set_attribute(attribute:"synopsis", value:
"The remote Red Hat 7 host is affected by multiple vulnerabilities that will not be patched.");
script_set_attribute(attribute:"description", value:
"The remote Redhat Enterprise Linux 7 host has one or more packages installed that are affected by multiple
vulnerabilities that have been acknowledged by the vendor but will not be patched.
- libxml2: Missing validation for external entities in xmlParsePEReference (CVE-2017-7375)
- libxml2: Heap-based buffer overflow in xmlEncodeEntitiesInternal() in entities.c (CVE-2021-3517)
- Possible cross-site scripting vulnerability in libxml after commit 960f0e2. (CVE-2016-3709)
- The xmlBufAttrSerializeTxtContent function in xmlsave.c in libxml2 allows context-dependent attackers to
cause a denial of service (out-of-bounds read and application crash) via a non-UTF-8 attribute value,
related to serialization. NOTE: this vulnerability may be a duplicate of CVE-2016-3627. (CVE-2016-4483)
- libxml2 2.9.4 and earlier, as used in XMLSec 1.2.23 and earlier and other products, does not offer a flag
directly indicating that the current document may be read but other files may not be opened, which makes
it easier for remote attackers to conduct XML External Entity (XXE) attacks via a crafted document.
(CVE-2016-9318)
- A remote code execution vulnerability in libxml2 could enable an attacker using a specially crafted file
to execute arbitrary code within the context of an unprivileged process. This issue is rated as High due
to the possibility of remote code execution in an application that uses this library. Product: Android.
Versions: 4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2. Android ID: A-37104170. (CVE-2017-0663)
- parser.c in libxml2 before 2.9.5 mishandles parameter-entity references because the NEXTL macro calls the
xmlParserHandlePEReference function in the case of a '%' character in a DTD name. (CVE-2017-16931)
- parser.c in libxml2 before 2.9.5 does not prevent infinite recursion in parameter entities.
(CVE-2017-16932)
- libxml2 2.9.4, when used in recover mode, allows remote attackers to cause a denial of service (NULL
pointer dereference) via a crafted XML document. NOTE: The maintainer states I would disagree of a CVE
with the Recover parsing option which should only be used for manual recovery at least for XML parser.
(CVE-2017-5969)
- The htmlParseTryOrFinish function in HTMLparser.c in libxml2 2.9.4 allows attackers to cause a denial of
service (buffer over-read) or information disclosure. (CVE-2017-8872)
- A buffer overflow was discovered in libxml2 20904-GITv2.9.4-16-g0741801. The function
xmlSnprintfElementContent in valid.c is supposed to recursively dump the element content definition into a
char buffer 'buf' of size 'size'. The variable len is assigned strlen(buf). If the content->type is
XML_ELEMENT_CONTENT_ELEMENT, then (i) the content->prefix is appended to buf (if it actually fits)
whereupon (ii) content->name is written to the buffer. However, the check for whether the content->name
actually fits also uses 'len' rather than the updated buffer length strlen(buf). This allows us to write
about size many bytes beyond the allocated memory. This vulnerability causes programs that use libxml2,
such as PHP, to crash. (CVE-2017-9047)
- libxml2 20904-GITv2.9.4-16-g0741801 is vulnerable to a stack-based buffer overflow. The function
xmlSnprintfElementContent in valid.c is supposed to recursively dump the element content definition into a
char buffer 'buf' of size 'size'. At the end of the routine, the function may strcat two more characters
without checking whether the current strlen(buf) + 2 < size. This vulnerability causes programs that use
libxml2, such as PHP, to crash. (CVE-2017-9048)
- libxml2 20904-GITv2.9.4-16-g0741801 is vulnerable to a heap-based buffer over-read in the
xmlDictComputeFastKey function in dict.c. This vulnerability causes programs that use libxml2, such as
PHP, to crash. This vulnerability exists because of an incomplete fix for libxml2 Bug 759398.
(CVE-2017-9049)
- libxml2 20904-GITv2.9.4-16-g0741801 is vulnerable to a heap-based buffer over-read in the xmlDictAddString
function in dict.c. This vulnerability causes programs that use libxml2, such as PHP, to crash. This
vulnerability exists because of an incomplete fix for CVE-2016-1839. (CVE-2017-9050)
- 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'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)
- valid.c in libxml2 before 2.9.13 has a use-after-free of ID and IDREF attributes. (CVE-2022-23308)
- An issue was discovered in libxml2 before 2.10.3. When parsing a multi-gigabyte XML document with the
XML_PARSE_HUGE parser option enabled, several integer counters can overflow. This results in an attempt to
access an array at a negative 2GB offset, typically leading to a segmentation fault. (CVE-2022-40303)
- An issue was discovered in libxml2 before 2.10.3. Certain invalid XML entity definitions can corrupt a
hash table key, potentially leading to subsequent logic errors. In one case, a double-free can be
provoked. (CVE-2022-40304)
- In libxml2 before 2.10.4, parsing of certain invalid XSD schemas can lead to a NULL pointer dereference
and subsequently a segfault. This occurs in xmlSchemaFixupComplexType in xmlschemas.c. (CVE-2023-28484)
- An issue was discovered in libxml2 before 2.10.4. When hashing empty dict strings in a crafted XML
document, xmlDictComputeFastKey in dict.c can produce non-deterministic values, leading to various logic
and memory errors, such as a double free. This behavior occurs because there is an attempt to use the
first byte of an empty string, and any value is possible (not solely the '\0' value). (CVE-2023-29469)
- Xmlsoft Libxml2 v2.11.0 was discovered to contain an out-of-bounds read via the xmlSAX2StartElement()
function at /libxml2/SAX2.c. This vulnerability allows attackers to cause a Denial of Service (DoS) via
supplying a crafted XML file. NOTE: the vendor's position is that the product does not support the legacy
SAX1 interface with custom callbacks; there is a crash even without crafted input. (CVE-2023-39615)
- An issue was discovered in libxml2 before 2.11.7 and 2.12.x before 2.12.5. When using the XML Reader
interface with DTD validation and XInclude expansion enabled, processing crafted XML documents can lead to
an xmlValidatePopElement use-after-free. (CVE-2024-25062)
Note that Nessus has not tested for these issues but has instead relied on the package manager's report that the package
is installed.");
script_set_attribute(attribute:"solution", value:
"The vendor has acknowledged the vulnerabilities but no solution has been provided. Refer to the vendor for remediation
guidance.");
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:N/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-2017-7375");
script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
script_set_attribute(attribute:"exploit_available", value:"true");
script_set_attribute(attribute:"vendor_unpatched", value:"true");
script_set_attribute(attribute:"vuln_publication_date", value:"2016/05/03");
script_set_attribute(attribute:"plugin_publication_date", value:"2024/05/11");
script_set_attribute(attribute:"plugin_type", value:"local");
script_set_attribute(attribute:"cpe", value:"cpe:/o:redhat:enterprise_linux:5");
script_set_attribute(attribute:"cpe", value:"cpe:/o:redhat:enterprise_linux:6");
script_set_attribute(attribute:"cpe", value:"cpe:/o:redhat:enterprise_linux:7");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:compat-expat1");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:libxml2");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:mingw-virt-viewer");
script_set_attribute(attribute:"generated_plugin", value:"current");
script_end_attributes();
script_category(ACT_GATHER_INFO);
script_family(english:"Red Hat 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", "redhat_repos.nasl");
script_require_keys("Host/local_checks_enabled", "Host/RedHat/release", "Host/RedHat/rpm-list", "Host/cpu");
exit(0);
}
include('rpm.inc');
include('rhel.inc');
if (!get_kb_item("global_settings/vendor_unpatched"))
exit(0, "Unpatched Vulnerabilities Detection not active.");
if (!get_kb_item('Host/local_checks_enabled')) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
var os_release = get_kb_item('Host/RedHat/release');
if (isnull(os_release) || 'Red Hat' >!< os_release) audit(AUDIT_OS_NOT, 'Red Hat');
var os_ver = pregmatch(pattern: "Red Hat Enterprise Linux.*release ([0-9]+(\.[0-9]+)?)", string:os_release);
if (isnull(os_ver)) audit(AUDIT_UNKNOWN_APP_VER, 'Red Hat');
os_ver = os_ver[1];
if (!rhel_check_release(operator: 'ge', os_version: os_ver, rhel_version: '7')) audit(AUDIT_OS_NOT, 'Red Hat 7.x', 'Red Hat ' + os_ver);
if (!get_kb_item('Host/RedHat/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, 'Red Hat', cpu);
var constraints = [
{
'pkgs': [
{'reference':'libxml2', 'release':'7', 'rpm_spec_vers_cmp':TRUE, 'unpatched_pkg':'libxml2'},
{'reference':'mingw-virt-viewer', 'release':'7', 'rpm_spec_vers_cmp':TRUE, 'unpatched_pkg':'mingw-virt-viewer', 'cves':['CVE-2017-7375', 'CVE-2017-8872']}
]
}
];
var flag = 0;
foreach var constraint_array ( constraints ) {
var repo_relative_urls = NULL;
var enterprise_linux_flag = rhel_repo_urls_has_content_dist_rhel(repo_urls:repo_relative_urls);
foreach var pkg ( constraint_array['pkgs'] ) {
var unpatched_pkg = NULL;
var _release = NULL;
var sp = NULL;
var el_string = NULL;
var rpm_spec_vers_cmp = NULL;
var exists_check = NULL;
var cves = NULL;
if (!empty_or_null(pkg['unpatched_pkg'])) unpatched_pkg = pkg['unpatched_pkg'];
if (!empty_or_null(pkg['release'])) _release = 'RHEL' + pkg['release'];
if (!empty_or_null(pkg['sp'])) sp = pkg['sp'];
if (!empty_or_null(pkg['rpm_spec_vers_cmp'])) rpm_spec_vers_cmp = pkg['rpm_spec_vers_cmp'];
if (!empty_or_null(pkg['exists_check'])) exists_check = pkg['exists_check'];
if (!empty_or_null(pkg['cves'])) cves = pkg['cves'];
if (unpatched_pkg &&
_release &&
(!exists_check || rpm_exists(release:_release, rpm:exists_check)) &&
unpatched_package_exists(release:_release, package:unpatched_pkg, cves: cves)) flag++;
}
}
if (flag)
{
var extra = NULL;
security_report_v4(
port : 0,
severity : SECURITY_HOLE,
extra : unpatched_packages_report()
);
exit(0);
}
else
{
var tested = pkg_tests_get();
if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
else audit(AUDIT_PACKAGE_NOT_INSTALLED, 'libxml2 / mingw-virt-viewer');
}
Vendor | Product | Version | CPE |
---|---|---|---|
redhat | enterprise_linux | 5 | cpe:/o:redhat:enterprise_linux:5 |
redhat | enterprise_linux | 6 | cpe:/o:redhat:enterprise_linux:6 |
redhat | enterprise_linux | 7 | cpe:/o:redhat:enterprise_linux:7 |
redhat | enterprise_linux | compat-expat1 | p-cpe:/a:redhat:enterprise_linux:compat-expat1 |
redhat | enterprise_linux | libxml2 | p-cpe:/a:redhat:enterprise_linux:libxml2 |
redhat | enterprise_linux | mingw-virt-viewer | p-cpe:/a:redhat:enterprise_linux:mingw-virt-viewer |
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3709
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-4483
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9318
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0663
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-16931
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-16932
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5969
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7375
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8872
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9047
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9048
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9049
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9050
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
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-23308
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-40303
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-40304
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-28484
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-29469
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-39615
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-25062