Lucene search
+L

openSUSE 16: libzypp / libzypp-devel / zypper / zypper-aptitude / zypper-log / etc (openSUSE-SU-2026:21808-1)

🗓️ 11 Sep 2026 00:00:00Reported by TenableType 
nessus
 nessus
🔗 www.tenable.com👁 3 Views

openSUSE 16 libzypp lets legacy unsigned repo cache persist after enabling repo_gpgcheck.

Refs
Code
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
#
# The package checks in this plugin were extracted from
# openSUSE Security Update openSUSE-SU-2026:21808-1. The text itself
# is copyright (C) SUSE.
##

include('compat.inc');

if (description)
{
  script_id(344663);
  script_version("1.1");
  script_set_attribute(attribute:"plugin_modification_date", value:"2026/09/11");

  script_name(english:"openSUSE 16: libzypp / libzypp-devel / zypper / zypper-aptitude / zypper-log / etc (openSUSE-SU-2026:21808-1)");

  script_set_attribute(attribute:"synopsis", value:
"The remote openSUSE host is missing a security update.");
  script_set_attribute(attribute:"description", value:
"The remote openSUSE 16 host has packages installed that are affected by a vulnerability as referenced in the openSUSE-
SU-2026:21808-1 advisory.

    Security issue fixed:

    - invalidating legacy libzypp unsigned-repository cache state [LIBZYPP-LEGACY-CACHE-01] (bsc#1274625).

    Non security issues fixed:

    - Econf parser adds tags in drop-in files outside any section to [main] (bsc#1272534).
    - Need zypper option to disable services to fix Dockerfile builds in OBS (bsc#1257249).
    - zypper loads repository data and installed packages prior to checking for required arguments
    (bsc#1274091).
    - Zypper patch doesn't give enough details about conflicts (bsc#1277790).

    Changes for libzypp:

    Update to version 17.38.1:

    - Prevent libgpgme from launching gpg-agents; we don't need them.
    - defaultLoadSystem: Hand out the ZYpp::Ptr as return value.
    - Log all solver problem rules (bsc#1277790)
     The log contains the most relevant problem rule, but sometimes it
     helps to know all rules associated with this problem. zypper
     shows them on demand as 'detail'. The log now remembers them as
     well.
    - Replace popen cat/zcat with solv_xfopen for testcase loaders
     (fixes #749)
    - repoGpgCheck: Strictly follow the repo_gpgcheck setting
     (bsc#1274625)
     There's been a legacy exception for unsigned repositories which
     were explicitly accepted in the past. After switching the
     repo_gpgcheck from off to on, they were allowed to stay unsigned
     until a first signed version was retrieved. From there on the
     handling was strict.
     Now the handling is strict as soon as the repo_gpgcheck turned
     on. The next set of metadata retrieved must be signed.
    - Iniparser: each new file starts in the unnamed section
     (bsc#1272534)
    - Fix hasCredentials() to require both username AND password to
     be non-empty (bsc#1273242)
     This avoids an unnecessary 2nd 401 response sending just the
     username in case the username but no password is known. Now it
     immediately fetches the credentials from disk if no password is
     known.
    - GPG Key hints in repoindex.xml require at least a long id to
     allow auto-import (bsc#1271730)
     The short Id (32bit/8byte) is not considered to be a safe
     identifier for a gpg key. A long id (64bit/16byte) or even better
     the full fingerprint is needed to identify the key.
    - zypp: Improve Testcase Loading for MCP Tools.

    Changes for zypper:

    Update to version 1.14.99:

    - Show solver problem details per default in not-interactive mode
     (bsc#1277790)
     This way they see all details when capturing zypper's output
     because the (d)etail button can't be pressed in not-interactive
     mode.
    - Add --servicesd-dir global option to relocate
     /etc/zypp/services.d (bsc#1257249)
    - info: check for missing positional args before systemSetup
     (bsc#1274091)
    - Remove deprecated installRecommends option from zypper.conf.
     The system wide default for all libzypp based applications is
     defined in zypp.conf(5). It is not recommended to define this in
     zypper exclusively.

Tenable has extracted the preceding description block directly from the SUSE security advisory.

Note that Nessus has not tested for this issue but has instead relied only on the application's self-reported version
number.");
  script_set_attribute(attribute:"see_also", value:"https://bugzilla.suse.com/1257249");
  script_set_attribute(attribute:"see_also", value:"https://bugzilla.suse.com/1271730");
  script_set_attribute(attribute:"see_also", value:"https://bugzilla.suse.com/1272534");
  script_set_attribute(attribute:"see_also", value:"https://bugzilla.suse.com/1273242");
  script_set_attribute(attribute:"see_also", value:"https://bugzilla.suse.com/1274091");
  script_set_attribute(attribute:"see_also", value:"https://bugzilla.suse.com/1274625");
  script_set_attribute(attribute:"see_also", value:"https://bugzilla.suse.com/1277790");
  script_set_attribute(attribute:"solution", value:
"Update the affected packages.");
  script_set_attribute(attribute:"risk_factor", value:"Critical");

  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:"2026/09/08");
  script_set_attribute(attribute:"patch_publication_date", value:"2026/09/08");
  script_set_attribute(attribute:"plugin_publication_date", value:"2026/09/11");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:libzypp");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:libzypp-devel");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:zypper");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:zypper-aptitude");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:zypper-log");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:zypper-needs-restarting");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:novell:opensuse:16.0");
  script_set_attribute(attribute:"generated_plugin", value:"current");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"SuSE 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/cpu", "Host/SuSE/release", "Host/SuSE/rpm-list");

  exit(0);
}


include('rpm.inc');

if (!get_kb_item('Host/local_checks_enabled')) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
var os_release = get_kb_item('Host/SuSE/release');
if (isnull(os_release) || os_release =~ "^(SLED|SLES)") audit(AUDIT_OS_NOT, 'openSUSE');
var _os_ver = pregmatch(pattern: "^SUSE([\d.]+)", string:os_release);
if (isnull(_os_ver)) audit(AUDIT_UNKNOWN_APP_VER, 'openSUSE');
_os_ver = _os_ver[1];
if (os_release !~ "^(SUSE16\.0)$") audit(AUDIT_OS_RELEASE_NOT, 'openSUSE', '16.0', os_release);
if (!get_kb_item("Host/SuSE/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, 'openSUSE ' + _os_ver, cpu);

var pkgs = [
    {'reference':'libzypp-17.38.15-160000.1.1', 'release':'SUSE16.0', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'libzypp-devel-17.38.15-160000.1.1', 'release':'SUSE16.0', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'zypper-1.14.101-160000.1.1', 'release':'SUSE16.0', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'zypper-aptitude-1.14.101-160000.1.1', 'release':'SUSE16.0', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'zypper-log-1.14.101-160000.1.1', 'release':'SUSE16.0', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'zypper-needs-restarting-1.14.101-160000.1.1', 'release':'SUSE16.0', 'rpm_spec_vers_cmp':TRUE}
];

var flag = 0;
foreach package_array ( pkgs ) {
  var reference = NULL;
  var _release = NULL;
  var _cpu = NULL;
  var rpm_spec_vers_cmp = NULL;
  if (!empty_or_null(package_array['reference'])) reference = package_array['reference'];
  if (!empty_or_null(package_array['release'])) _release = package_array['release'];
  if (!empty_or_null(package_array['cpu'])) cpu = package_array['cpu'];
  if (!empty_or_null(package_array['rpm_spec_vers_cmp'])) rpm_spec_vers_cmp = package_array['rpm_spec_vers_cmp'];
  if (reference && _release) {
    if (rpm_check(release:_release, cpu:_cpu, reference:reference, rpm_spec_vers_cmp:rpm_spec_vers_cmp)) 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, 'libzypp / libzypp-devel / zypper / zypper-aptitude / zypper-log / 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