#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
#
# The descriptive text and package checks in this plugin were
# extracted from Tencent Linux Security Advisory TSSA-2023:0071.
##
include('deprecated_nasl_level.inc');
include('compat.inc');
if (description)
{
script_id(238587);
script_version("1.2");
script_set_attribute(attribute:"plugin_modification_date", value:"2025/11/20");
script_cve_id(
"CVE-2021-25220",
"CVE-2022-2795",
"CVE-2022-3080",
"CVE-2022-3094",
"CVE-2022-3736",
"CVE-2022-38177",
"CVE-2022-38178",
"CVE-2022-3924"
);
script_name(english:"TencentOS Server 3: bind9.16 (TSSA-2023:0071)");
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-2023:0071 advisory.
Package updates are available for TencentOS Server 3 that fix the following vulnerabilities:
CVE-2022-3094:
A flaw was found in Bind, where sending a flood of dynamic DNS updates may cause named to allocate large
amounts of memory. This issue may cause named to exit due to a lack of free memory, resulting in a denial
of service (DoS).
CVE-2022-3094:
A flaw was found in Bind, where sending a flood of dynamic DNS updates may cause named to allocate large
amounts of memory. This issue may cause named to exit due to a lack of free memory, resulting in a denial
of service (DoS).
CVE-2022-3736:
A flaw was found in Bind, where a resolver crash is possible. When stale cache and stale answers are
enabled, the option stale-answer-client-timeout is set to a positive integer, and the resolver receives an
RRSIG query.
CVE-2022-3924:
A flaw was found in Bind. When resolver receives many queries requiring recursion, there will be a
corresponding increase in the number of clients waiting for recursion to complete. This may, under certain
conditions, lead to an assertion failure and a denial of service.
CVE-2022-2795:
A flaw was found in bind. When flooding the target resolver with special queries, an attacker can
significantly impair the resolver's performance, effectively denying legitimate clients access to the DNS
resolution service.
CVE-2022-3080:
A flaw was found in the Bind package, where the resolver can crash when stale cache and stale answers
are enabled, option stale-answer-client-timeout is set to 0 and there is a stale CNAME in the cache for an
incoming query. By sending specific queries to the resolver, an attacker can cause named to crash.
CVE-2022-38177:
A flaw was found in the Bind package. By spoofing the target resolver with responses that have a
malformed ECDSA signature, an attacker can trigger a small memory leak, resulting in crashing the program.
CVE-2022-38178:
A flaw was found in the Bind package, where the DNSSEC verification code for the EdDSA algorithm leaks
memory when there is a signature length mismatch. By spoofing the target resolver with responses that have
a malformed EdDSA signature, an attacker can trigger a small memory leak, resulting in crashing the
program.
CVE-2021-25220:
A cache poisoning vulnerability was found in BIND when using forwarders. Bogus NS records supplied by
the forwarders may be cached and used by name if it needs to recurse for any reason. This issue causes it
to obtain and pass on potentially incorrect answers. This flaw allows a remote high privileged attacker to
manipulate cache results with incorrect records, leading to queries made to the wrong servers, possibly
resulting in false information received on the client's end.
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-20230071.xml");
script_set_attribute(attribute:"solution", value:
"Update the affected packages.");
script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:S/C:N/I:P/A:N");
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:H/UI:N/S:C/C:N/I:H/A:N");
script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:O/RC:C");
script_set_attribute(attribute:"cvss4_vector", value:"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N");
script_set_attribute(attribute:"cvss4_threat_vector", value:"CVSS:4.0/E:U");
script_set_attribute(attribute:"cvss_score_source", value:"CVE-2021-25220");
script_set_attribute(attribute:"cvss4_score_source", value:"CVE-2022-2795");
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:"2023/06/14");
script_set_attribute(attribute:"patch_publication_date", value:"2023/06/14");
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.14.tl3', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-9.16.23-0.14.tl3', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-chroot-9.16.23-0.14.tl3', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-chroot-9.16.23-0.14.tl3', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-debuginfo-9.16.23-0.14.tl3', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-debuginfo-9.16.23-0.14.tl3', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-debugsource-9.16.23-0.14.tl3', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-debugsource-9.16.23-0.14.tl3', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-devel-9.16.23-0.14.tl3', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-devel-9.16.23-0.14.tl3', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-dnssec-utils-9.16.23-0.14.tl3', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-dnssec-utils-9.16.23-0.14.tl3', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-dnssec-utils-debuginfo-9.16.23-0.14.tl3', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-dnssec-utils-debuginfo-9.16.23-0.14.tl3', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-doc-9.16.23-0.14.tl3', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-libs-9.16.23-0.14.tl3', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-libs-9.16.23-0.14.tl3', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-libs-debuginfo-9.16.23-0.14.tl3', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-libs-debuginfo-9.16.23-0.14.tl3', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-license-9.16.23-0.14.tl3', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-utils-9.16.23-0.14.tl3', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-utils-9.16.23-0.14.tl3', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-utils-debuginfo-9.16.23-0.14.tl3', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'bind9.16-utils-debuginfo-9.16.23-0.14.tl3', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'python3-bind9.16-9.16.23-0.14.tl3', '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_WARNING,
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