#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
#
# The descriptive text and package checks in this plugin were
# extracted from Tencent Linux Security Advisory TSSA-2024:0113.
##
include('deprecated_nasl_level.inc');
include('compat.inc');
if (description)
{
script_id(239311);
script_version("1.2");
script_set_attribute(attribute:"plugin_modification_date", value:"2025/11/20");
script_cve_id(
"CVE-2023-4408",
"CVE-2023-50387",
"CVE-2023-50868",
"CVE-2023-5517",
"CVE-2023-5679",
"CVE-2023-6516"
);
script_name(english:"TencentOS Server 3: bind9.16 (TSSA-2024:0113)");
script_set_attribute(attribute:"synopsis", value:
"The remote TencentOS Server 3 host is missing one or more security updates.");
script_set_attribute(attribute:"description", value:
"The version of Tencent Linux installed on the remote TencentOS Server 3 host is prior to tested version. It is,
therefore, affected by multiple vulnerabilities as referenced in the TSSA-2024:0113 advisory.
Package updates are available for TencentOS Server 3 that fix the following vulnerabilities:
CVE-2023-4408:
A flaw was found in the bind package. This issue may allow a remote attacker with no specific privileges
to craft a specially long DNS message leading to an excessive and uncontrolled CPU usage, the server being
unavailable, and a Denial of Service.
CVE-2023-5517:
A flaw was found in the bind package which may result in a Denial of Service in `named` process. This is a
result of a reachable assertion, leading `named` to prematurely terminate when both conditions are met:
nxdomain-redirect for the queried domain is configured and the resolver receives a PTR query, used for a
reverse DNS lookup, for a RFC 1918 address that would normally result in an authoritative `NXDOMAIN`
response. A single query matching both conditions can lead to a Denial of Service in the named
application.
CVE-2023-5679:
A flaw was found in the bind package. This issue may allow an attacker to query in a DNS64 enabled
resolver node with a domain name triggering a server-stale data, triggering a code assertion, and
resulting in a crash of `named` processes. This can allow a remote unauthenticated user to cause a Denial
Of Service in the DNS server.
CVE-2023-6516:
A flaw was found in the `named` application, part of the bind9 package, which uses a cache database to
speeds up DNS queries. To maintain its efficiency when running as a recursive name resolver, `named`
performs a cache database clean up under certain conditions. This issue may allow an attacker to craft a
continuous set of crafted queries, which can induce `named` to trigger the cleanup process with a high
frequency, making the internal cleanup items queue to grow indefinitely. This can lead to an uncontrolled
memory consumption and resource starvation, potentially making `named` consume all available memory in the
host, leading to a Denial of Service of the targeted system.
CVE-2023-50387:
Processing specially crafted responses coming from DNSSEC-signed zones can lead to uncontrolled CPU usage,
leading to a Denial of Service in the DNSSEC-validating resolver side.
This vulnerability applies only for systems where DNSSEC validation is enabled.
CVE-2023-50868:
A flaw was found in bind9. By flooding a DNSSEC resolver with responses coming from a DNSEC-signed zone
using NSEC3, an attacker can lead the targeted resolver to a CPU exhaustion, further leading to a Denial
of Service on the targeted host.
This vulnerability applies only for systems where DNSSEC validation is enabled.
Tenable has extracted the preceding description block directly from the Tencent Linux security advisory.
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://mirrors.tencent.com/tlinux/errata/tssa-20240113.xml");
script_set_attribute(attribute:"solution", value:
"Update the affected packages.");
script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:N/I:N/A:C");
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:N/I:N/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-2023-6516");
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:"2024/04/11");
script_set_attribute(attribute:"patch_publication_date", value:"2024/04/11");
script_set_attribute(attribute:"plugin_publication_date", value:"2025/06/16");
script_set_attribute(attribute:"plugin_type", value:"local");
script_set_attribute(attribute:"cpe", value:"cpe:/o:tencent:tencentos_server:3");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:tencent:tencentos_server:bind9.16");
script_set_attribute(attribute:"generated_plugin", value:"current");
script_end_attributes();
script_category(ACT_GATHER_INFO);
script_family(english:"Tencent Local Security Checks");
script_copyright(english:"This script is Copyright (C) 2025 and is owned by Tenable, Inc. or an Affiliate thereof.");
script_dependencies("ssh_get_info2.nasl");
script_require_keys("Host/local_checks_enabled", "Host/etc/os-release", "Host/TencentOS/rpm-list", "Host/cpu");
exit(0);
}
include('rpm2.inc');
if (!get_kb_item('Host/local_checks_enabled')) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
var os_product = get_kb_item('installed_os/local/SSH/0/product');
if (isnull(os_product) || 'TencentOS' >!< os_product) audit(AUDIT_OS_NOT, 'TencentOS');
var os_version = get_kb_item('installed_os/local/SSH/0/version');
if (isnull(os_version)) audit(AUDIT_UNKNOWN_APP_VER, 'TencentOS');
if (! preg(pattern:"^3([^0-9]|$)", string:os_version)) audit(AUDIT_OS_NOT, 'TencentOS 3.x', 'TencentOS ' + os_version);
if (!get_kb_item('Host/TencentOS/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) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, 'TencentOS', cpu);
var constraints = [
{
'release': '3',
'pkgs': [
{'reference':'bind9.16-9.16.23-0.16.tl3.2', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-9.16.23-0.16.tl3.2', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-chroot-9.16.23-0.16.tl3.2', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-chroot-9.16.23-0.16.tl3.2', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-debuginfo-9.16.23-0.16.tl3.2', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-debuginfo-9.16.23-0.16.tl3.2', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-debugsource-9.16.23-0.16.tl3.2', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-debugsource-9.16.23-0.16.tl3.2', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-devel-9.16.23-0.16.tl3.2', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-devel-9.16.23-0.16.tl3.2', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-dnssec-utils-9.16.23-0.16.tl3.2', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-dnssec-utils-9.16.23-0.16.tl3.2', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-dnssec-utils-debuginfo-9.16.23-0.16.tl3.2', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-dnssec-utils-debuginfo-9.16.23-0.16.tl3.2', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-doc-9.16.23-0.16.tl3.2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-libs-9.16.23-0.16.tl3.2', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-libs-9.16.23-0.16.tl3.2', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-libs-debuginfo-9.16.23-0.16.tl3.2', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-libs-debuginfo-9.16.23-0.16.tl3.2', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-license-9.16.23-0.16.tl3.2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-utils-9.16.23-0.16.tl3.2', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-utils-9.16.23-0.16.tl3.2', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-utils-debuginfo-9.16.23-0.16.tl3.2', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-utils-debuginfo-9.16.23-0.16.tl3.2', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'python3-bind9.16-9.16.23-0.16.tl3.2', 'rpm_spec_vers_cmp':TRUE}
]
}
];
var os_release = get_one_kb_item('installed_os/local/SSH/0/release');
var os_sp = get_one_kb_item('Host/*/minor_release');
var flag = 0;
var reference;
var sp;
var _cpu;
var el_string;
var rpm_spec_vers_cmp;
var epoch;
var allowmaj;
var exists_check;
var cves;
foreach var constraint ( constraints ) {
# Check that the target release is equal to the affected release
if (!empty_or_null(constraint['release'])){
if (constraint['release'] != os_release) continue;
}
if (!empty_or_null(constraint['sp'])){
if (constraint['sp'] != os_sp) continue;
}
foreach var pkg ( constraint['pkgs'] ) {
reference = NULL;
sp = NULL;
_cpu = NULL;
el_string = NULL;
rpm_spec_vers_cmp = NULL;
epoch = NULL;
allowmaj = NULL;
exists_check = NULL;
cves = NULL;
if (!empty_or_null(pkg['reference'])) reference = pkg['reference'];
if (!empty_or_null(pkg['sp'])) sp = pkg['sp'];
if (!empty_or_null(pkg['cpu'])) _cpu = pkg['cpu'];
if (!empty_or_null(pkg['el_string'])) el_string = pkg['el_string'];
if (!empty_or_null(pkg['rpm_spec_vers_cmp'])) rpm_spec_vers_cmp = pkg['rpm_spec_vers_cmp'];
if (!empty_or_null(pkg['epoch'])) epoch = pkg['epoch'];
if (!empty_or_null(pkg['allowmaj'])) allowmaj = pkg['allowmaj'];
if (!empty_or_null(pkg['exists_check'])) exists_check = pkg['exists_check'];
if (!empty_or_null(pkg['cves'])) cves = pkg['cves'];
if (reference &&
## (no known rpm to check OR known rpm_exists)
(!exists_check || rpm_exists(rpm:exists_check)) &&
rpm_check(sp:sp, cpu:_cpu, reference:reference, epoch:epoch, el_string:el_string, rpm_spec_vers_cmp:rpm_spec_vers_cmp, allowmaj:allowmaj, cves:cves)) 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, 'bind9.16 / bind9.16-chroot / bind9.16-debuginfo / etc');
}
Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation