Lucene search
+L

CentOS 9 : tar-1.34-13.el9

🗓️ 26 Aug 2026 00:00:00Reported by TenableType 
nessus
 nessus
🔗 www.tenable.com👁 1 Views

CentOS 9 tar-1.34-13.el9: hidden file injection and directory traversal in crafted archives.

Related
Refs
Code
#%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
1