CentOS 9 : tar-1.34-13.el9
10
#%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(339712);
script_version("1.1");
script_set_attribute(attribute:"plugin_modification_date", value:"2026/08/26");
script_cve_id(
"CVE-2025-45582",
"CVE-2026-5704",
"CVE-2026-18477",
"CVE-2026-18508"
);
script_name(english:"CentOS 9 : tar-1.34-13.el9");
script_set_attribute(attribute:"synopsis", value:
"The remote CentOS host is missing one or more security updates for tar.");
script_set_attribute(attribute:"description", value:
"The remote CentOS Linux 9 host has a package installed that is affected by multiple vulnerabilities as referenced in the
tar-1.34-13.el9 build changelog.
- A flaw was found in tar. A remote attacker could exploit this vulnerability by crafting a malicious
archive, leading to hidden file injection with fully attacker-controlled content. This bypasses pre-
extraction inspection mechanisms, potentially allowing an attacker to introduce malicious files onto a
system without detection. (CVE-2026-5704)
- GNU Tar through 1.35 allows file overwrite via directory traversal in crafted TAR archives, with a certain
two-step process. First, the victim must extract an archive that contains a ../ symlink to a critical
directory. Second, the victim must extract an archive that contains a critical file, specified via a
relative pathname that begins with the symlink name and ends with that critical file's name. Here, the
extraction follows the symlink and overwrites the critical file. This bypasses the protection mechanism of
Member name contains '..' that would occur for a single TAR archive that attempted to specify the
critical file via a ../ approach. For example, the first archive can contain x ->
../../../../../home/victim/.ssh and the second archive can contain x/authorized_keys. This can affect
server applications that automatically extract any number of user-supplied TAR archives, and were relying
on the blocking of traversal. This can also affect software installation processes in which tar xf is
run more than once (e.g., when installing a package can automatically install two dependencies that are
set up as untrusted tarballs instead of official packages). NOTE: the official GNU Tar manual has an
otherwise-empty directory for each tar xf in its Security Rules of Thumb; however, third-party advice
leads users to run tar xf more than once into the same directory. (CVE-2025-45582)
- A TOCTOU (Time-of-Check Time-of-Use) vulnerability in GNU tar's incremental dumpdir 'X' rename handling
allows a local attacker with write access to a directory being backed up to influence the restore process
if the attacker has access to the system where the restore is being performed. During restoration, files
or directories may be created, renamed or overwritten outside the intended extraction directory. This
could lead to unauthorized file modification or, in some cases, privilege escalation. Exploitation does
not require the attacker to modify or craft the archive, and standard backup and restore
workflowsincluding extracting into a newly created directory without using the -P option do not mitigate
the issue. (CVE-2026-18477)
- A flaw was found in GNU tar. When extracting an archive with the --one-top-level option, hardlink targets
are not confined to the designated top-level directory and may resolve relative to the extraction working
directory. A crafted archive can create hardlinks that escape the intended boundary and, when combined
with a preexisting symbolic link under the working directory, may allow writing outside that boundary
during a single extraction. (CVE-2026-18508)
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=125840");
script_set_attribute(attribute:"solution", value:
"Update the CentOS 9 Stream tar package.");
script_set_cvss_base_vector("CVSS2#AV:L/AC:L/Au:N/C:N/I:C/A:N");
script_set_cvss_temporal_vector("CVSS2#E:POC/RL:OF/RC:C");
script_set_cvss3_base_vector("CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N");
script_set_cvss3_temporal_vector("CVSS:3.0/E:P/RL:O/RC:C");
script_set_attribute(attribute:"cvss_score_source", value:"CVE-2026-5704");
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:"2025/07/11");
script_set_attribute(attribute:"patch_publication_date", value:"2026/08/24");
script_set_attribute(attribute:"plugin_publication_date", value:"2026/08/26");
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:tar");
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) 2026 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('rpm2.inc');
include('rhel.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) || 'CentOS' >!< os_product) audit(AUDIT_OS_NOT, 'CentOS');
var os_version = get_kb_item('installed_os/local/SSH/0/version');
if (isnull(os_version)) audit(AUDIT_UNKNOWN_APP_VER, 'CentOS');
if (!rhel_check_release(operator: 'ge', os_version: os_version, rhel_version: '9')) audit(AUDIT_OS_NOT, 'CentOS 9.x', 'CentOS ' + os_version);
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 ('aarch64' >!< cpu && cpu !~ "^i[3-6]86$" && 's390' >!< cpu && 'x86_64' >!< cpu) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, 'CentOS', cpu);
var constraints = [
{
'release': '9',
'pkgs': [
{'reference':'tar-1.34-13.el9', 'rpm_spec_vers_cmp':TRUE, 'epoch':'2'}
]
}
];
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, 'tar');
}
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
26 Aug 2026 00:00Current
6Medium risk
Vulners AI Score6
CVSS 3.15 - 5.5
EPSS0.00433
SSVC