Version 1.20.x#
This page shows the changelog for Nubus for Kubernetes 1.20.x:
Version 1.20.0 - 2026-05-22#
This is the thirtieth production release of Nubus for Kubernetes.
Upgrade path
For the upgrade to version 1.20.0, your deployment must run on version 1.19.x. For the general steps to upgrade an existing Nubus for Kubernetes deployment, see Upgrade in Univention Nubus for Kubernetes - Operation Manual [1].
Release highlights#
- Nubus metrics
A new metrics endpoint has been introduced to the UDM REST API. It allows operators to retrieve basic metrics about Nubus including number of users, software version and license status to include them in standard tooling like Prometheus and Grafana to simplify the observability.
- Technical details of UDM objects in UMC
The technical details of objects management in the Univention Directory Manager are now visible in a new section of the Web UI. Administrators can now read or search for technical identifiers or get the creation and modification timestamps for all objects.
- LDAP Server storage configuration
The LDAP server deployments can now be configured to use different storage configurations for the LDAP database and runtime volumes, allowing operators to significantly reduce storage costs by moving the runtime data to smaller and cheaper storage.
- Structured logging
This will be the last release with “old style” plain logging as default. The next Nubus for Kubernetes release 1.21 will change the default to structured logging. If you need to prevent this change in your deployment we recommend to explicitly set all structured-logging configuration options to false as documented in Logging in Univention Nubus for Kubernetes - Operation Manual [1]. Please be aware that we will mark the the old plain logging as deprecated and will remove it at some point in the future.
Migration steps#
This section lists necessary migration steps that may apply to you. You need to run them before the upgrade.
Refactor the LDAP server persistence values to support granular PVC configuration. Operators that customize any of the following Helm Chart values, need to migrate their values to the new structure.
- LDAP Server
Move
nubusLdapServer.persistence.accessModestonubusLdapServer.persistence.volumes.sharedData.accessModes.Move
nubusLdapServer.persistence.sizetonubusLdapServer.persistence.volumes.sharedData.size.Move
nubusLdapServer.persistence.storageClasstonubusLdapServer.persistence.volumes.sharedData.storageClass.Remove
nubusLdapServer.persistence.annotations,nubusLdapServer.persistence.dataSource,nubusLdapServer.persistence.existingClaim,nubusLdapServer.persistence.labels, andnubusLdapServer.persistence.selector. These values are no longer supported.
Changes#
This section lists the changes in 1.20.0 grouped by component in Nubus for Kubernetes.
LDAP Server#
The LDAP Server Helm Chart now allows you to configure storage independently
for the LDAP database and for the slapd runtime state.
Previously, both shared the same PVC settings,
which forced operators to pay for high-performance storage even for transient runtime files.
You can now independently assign different storage classes to the two volumes:
shared-data:Holds the LDAP database and requires a storage class that provides the performance and data consistency and reliability guarantees expected of a database backend. Configure it through
nubusLdapServer.persistence.volumes.sharedData.shared-run:Holds transient
slapdruntime state, such as the socket and PID file, which the LDAP Notifier requires. This volume can be small and doesn’t need a high-performance storage class, so operators can point it at a cheaper storage class to reduce cost. Configure it throughnubusLdapServer.persistence.volumes.sharedRun.
The nubusLdapServer.persistence.enabled flag now controls only the shared-data volume.
The shared-run volume is always provisioned as a PVC,
regardless of this setting,
because the slapd socket must be shared with the LDAP Notifier.
For the required value migration, see Migration steps.
UMC Server#
A file descriptor leak caused during PAM authentication through SSS has been fixed.
In affected versions, each authentication attempt could leave an open UNIX domain socket to the SSSD PAM service. Over time, this caused the number of open file descriptors in the UMC server process to grow linearly with the total number of logins, not concurrent sessions.
After the process reached the system limit,
further authentication attempts failed with the message:
OSError: [Errno 24] Too many open files
PAM handles across multiple threads caused the issue, preventing proper cleanup of SSSD client sockets.
Operators don’t need to take action. Affected systems may have required periodic service restarts to recover prior to this fix.
Included errata updates#
The errata updates contain fixes for the following CVEs:
- Genshi
CVE-2026-0685 (unknown)
- apache2-bin
CVE-2026-28780 (critical), CVE-2026-23918 (high), CVE-2026-24072 (high)
CVE-2026-29168 (high), CVE-2026-29169 (high), CVE-2026-34059 (high)
CVE-2003-1307 (medium), CVE-2003-1580 (medium), CVE-2007-1743 (medium)
CVE-2007-3303 (medium), CVE-2026-33006 (medium), CVE-2026-33007 (medium)
CVE-2026-33523 (medium), CVE-2026-33857 (medium), CVE-2026-34032 (medium)
CVE-2001-1534 (low), CVE-2003-1581 (low), CVE-2008-0456 (low)
- axios
CVE-2025-62718 (critical), CVE-2026-42043 (critical), CVE-2026-42044 (critical)
CVE-2026-42264 (critical), CVE-2026-42033 (high), CVE-2026-42035 (high)
CVE-2026-42038 (high), CVE-2026-42039 (high), CVE-2026-39865 (medium)
CVE-2026-40175 (medium), CVE-2026-42034 (medium), CVE-2026-42036 (medium)
CVE-2026-42037 (medium), CVE-2026-42041 (medium), CVE-2026-42042 (medium)
CVE-2026-42040 (low)
- bcpkix-jdk18on
CVE-2026-5588 (unknown)
- bcprov-jdk18on
CVE-2026-0636 (unknown)
CVE-2026-5588 (unknown)
CVE-2026-5598 (unknown)
- brace-expansion
CVE-2026-25547 (unknown)
- dompurify
CVE-2025-15599 (medium)
- follow-redirects
CVE-2026-40895 (high)
- future
CVE-2025-50817 (medium)
- gson
CVE-2025-53864 (medium)
- iputils-ping
CVE-2025-47268 (medium)
- js-yaml
CVE-2025-64718 (medium)
- jwcrypto
CVE-2026-39373 (medium)
- keycloak-js
CVE-2023-6484 (medium)
- keycloak-model-storage-services
CVE-2025-9162 (medium)
- keycloak-quarkus-server
CVE-2024-11735 (unknown)
- keycloak-services
CVE-2026-4366 (medium), CVE-2026-7500 (medium), CVE-2026-1190 (low)
CVE-2026-1518 (low), CVE-2026-2733 (low)
- kotlin-stdlib
CVE-2022-24329 (medium)
- libasound2
CVE-2026-25068 (unknown)
- libasound2-data
CVE-2026-25068 (unknown)
- libavahi-client3
CVE-2024-52615 (medium), CVE-2024-52616 (medium), CVE-2025-59529 (medium)
CVE-2025-68276 (medium), CVE-2025-68468 (medium), CVE-2025-68471 (medium)
CVE-2026-24401 (medium), CVE-2026-34933 (medium)
- libavahi-common-data
CVE-2024-52615 (medium), CVE-2024-52616 (medium), CVE-2025-59529 (medium)
CVE-2025-68276 (medium), CVE-2025-68468 (medium), CVE-2025-68471 (medium)
CVE-2026-24401 (medium), CVE-2026-34933 (medium)
- libavahi-common3
CVE-2024-52615 (medium), CVE-2024-52616 (medium), CVE-2025-59529 (medium)
CVE-2025-68276 (medium), CVE-2025-68468 (medium), CVE-2025-68471 (medium)
CVE-2026-24401 (medium), CVE-2026-34933 (medium)
- libc-ares2
CVE-2023-31147 (medium)
CVE-2024-25629 (medium)
CVE-2023-31124 (low)
- libc-bin
CVE-2026-5358 (unknown)
- libc-dev-bin
CVE-2026-5358 (unknown)
- libc-l10n
CVE-2026-5358 (unknown)
- libc6
CVE-2026-5358 (unknown)
- libc6-dev
CVE-2026-5358 (unknown)
- libcups2
CVE-2026-34980 (high), CVE-2026-34990 (high), CVE-2025-58436 (medium)
CVE-2025-61915 (medium), CVE-2026-27447 (medium), CVE-2026-34978 (medium)
CVE-2026-34979 (medium), CVE-2026-39314 (medium), CVE-2026-39316 (medium)
CVE-2026-41079 (medium)
- libfreetype6
CVE-2026-23865 (medium)
- libgnutls30
CVE-2025-14831 (medium)
CVE-2025-9820 (medium)
- liblcms2-2
CVE-2026-41254 (high)
CVE-2026-42798 (medium)
- libnfsidmap1
CVE-2025-12801 (medium)
- libnss-sss
CVE-2026-6245 (medium)
- libnss-sudo
CVE-2005-1119 (low)
- libnss3
CVE-2026-6766 (high), CVE-2026-6772 (high), CVE-2023-5388 (medium)
CVE-2023-6135 (medium), CVE-2024-7531 (medium), CVE-2026-6767 (medium)
- libpam-sss
CVE-2026-6245 (medium)
- libpng16-16
CVE-2026-33416 (high)
CVE-2026-33636 (high)
CVE-2026-34757 (medium)
- libssl3
CVE-2026-28387 (high), CVE-2026-28389 (high), CVE-2026-28390 (high)
CVE-2026-31790 (high)
- libsss-certmap0
CVE-2026-6245 (medium)
- libsss-idmap0
CVE-2026-6245 (medium)
- libsss-nss-idmap0
CVE-2026-6245 (medium)
- libsss-sudo
CVE-2026-6245 (medium)
- libtiff6
CVE-2026-4775 (high)
- locales
CVE-2026-5358 (unknown)
- lodash
CVE-2025-13465 (medium)
CVE-2026-2950 (medium)
- lodash-es
CVE-2025-13465 (medium)
CVE-2026-2950 (medium)
- loguru
CVE-2022-0338 (medium)
- netty-codec
CVE-2026-42583 (high)
- netty-codec-dns
CVE-2026-42579 (critical)
- netty-codec-http
CVE-2026-42581 (critical), CVE-2026-42584 (critical), CVE-2026-33870 (high)
CVE-2026-42585 (high), CVE-2026-42587 (high), CVE-2026-41417 (medium)
CVE-2026-42580 (medium)
- netty-codec-http2
CVE-2026-33871 (high)
CVE-2026-42587 (high)
- netty-handler-proxy
CVE-2026-42578 (high)
- netty-transport-native-epoll
CVE-2026-42577 (high)
- nginx
CVE-2026-28755 (medium)
- nginx-common
CVE-2026-28755 (medium)
- openjdk-17-jre-headless
CVE-2026-22016 (high), CVE-2026-34282 (high), CVE-2026-22013 (medium)
CVE-2026-22021 (medium), CVE-2026-22007 (low), CVE-2026-22018 (low)
CVE-2026-34268 (low)
- openssh-client
CVE-2025-61984 (low)
CVE-2025-61985 (low)
CVE-2026-3497 (unknown)
- openssl
CVE-2026-28387 (high), CVE-2026-28389 (high), CVE-2026-28390 (high)
CVE-2026-31790 (high)
- opentelemetry-api
CVE-2026-45292 (medium)
- poetry
CVE-2026-34591 (medium)
CVE-2026-41140 (unknown)
- postgresql
CVE-2026-42198 (high)
- prismjs
CVE-2024-53382 (medium)
- python-ldap
CVE-2025-61911 (medium)
CVE-2025-61912 (medium)
- python3-ldap
CVE-2025-61911 (medium)
CVE-2025-61912 (medium)
- python3-sss
CVE-2026-6245 (medium)
- python3-tornado
CVE-2025-67724 (medium)
- quarkus-vertx-http
CVE-2026-39852 (high)
- sssd-common
CVE-2026-6245 (medium)
- sssd-krb5-common
CVE-2026-6245 (medium)
- sssd-ldap
CVE-2026-6245 (medium)
- tornado
CVE-2025-67724 (medium)
- vertx-core
CVE-2026-6860 (medium)