Version 1.24.x#
Release notes for Nubus for Kubernetes 1.24.x:
Version 1.24.0 - 2026-10-27#
Upgrade path
For the upgrade to version 1.24.0, your deployment must run on version 1.23.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#
- Self Service malware scan
The Self Service can now scan uploaded files, for example profile pictures, for malware with an ICAP server.
- Keycloak update
Keycloak has been updated to version 26.8.1. Please be aware of the migration steps, see v1.24.0 - Migration steps.
Migration steps#
This section lists necessary migration steps that may apply to you. You need to run them before the upgrade.
Operators upgrading from 1.23.0 need to follow and apply the migration steps outlined in v1.23.1 - Migration steps.
Keycloak: Audience mappers for OIDC clients Keycloak 26.8.1 silently ignores OIDC audience mappers that use the
Included Client Audiencesetting with a value that does not match the client ID of an existing and enabled Keycloak client.Nubus for Kubernetes 1.23.2 prepared deployments for this change, but with Keycloak 26.8.1 in 1.24.0 broken audience mappers are no longer accepted.
Before the upgrade, check all OIDC clients for broken audience mappers and repair them with the
fix-audience-mappersscript. The command reads the Keycloak URL, realm, and administrator credentials from the most recent Keycloak bootstrap pod. Replace{NAMESPACE}with the namespace of your Nubus for Kubernetes deployment.NS={NAMESPACE} IMAGE=artifacts.software-univention.de/nubus/images/keycloak-bootstrap:26.7.4-nubus4@sha256:3e38cbff07f06905cd1bbf87390d9585d47ac6792e2608d46758787bc4d47f4f POD=$(kubectl get pods -n "$NS" -l app.kubernetes.io/name=keycloak-bootstrap \ --sort-by=.metadata.creationTimestamp -o name | tail -1) kubectl debug -n "$NS" "$POD" --copy-to=keycloak-fix-audience --container=main \ --set-image=main="$IMAGE" \ -- sh -c '/usr/share/univention-keycloak/fix-audience-mappers \ --realm "$KEYCLOAK_REALM" \ --keycloak-url "$KEYCLOAK_URL" --binduser "$KEYCLOAK_USERNAME" \ --bindpwdfile /credentials/keycloak.secret --dry-run' kubectl wait -n "$NS" --for=jsonpath='{.status.phase}'=Succeeded \ pod/keycloak-fix-audience --timeout=60s kubectl logs -n "$NS" -f keycloak-fix-audience -c main kubectl delete pod -n "$NS" keycloak-fix-audience
Run the same command without the
--dry-runflag to repair the OIDC audience mapper configuration on all existing OIDC clients before upgrading to 1.24.0.For more information, see https://help.univention.com/t/25737.
Changes#
This section lists the changes in 1.24.0 grouped by component in Nubus for Kubernetes.
2FA Helpdesk#
The twofa-helpdesk-backend container image
now uses a distroless Python base image
and contains only the software packages the 2FA Helpdesk backend needs at runtime.
This reduces the SBOM components in the image by 66%,
from 159 to 54 software packages.
The new image fixes the following security findings:
Guardian#
Upgrade Cerbos in the Guardian to version 0.57.0. This includes fixes for the following security findings:
LDAP server#
The leader elector sidecar container in the LDAP server primary pods now mounts the LDAP data volume read-only. The leader elector only checks whether the LDAP database exists and can no longer change it.
Disabling a user account no longer invalidates the password hash stored in the LDAP attribute
userPassword. This allows the Keycloak Identity Provider to distinguish a disabled account from invalid credentials and report the appropriate authentication error. TheshadowbindLDAP overlay is now mandatory to ensure that disabled user accounts cannot authenticate using LDAP bind.The
noopsrchoverlay has been added to LDAP server pods.The
shadowbindoverlay has been adjusted to reject LDAP binds whenshadowLastChangeis0. According to the semantics of the shadow password attributes, a value ofshadowLastChange=0indicates that the password must be changed before it can be used for further authentication.
Portal Frontend#
The Your profile page in the End User Self Service now shows an error message if the UMC server doesn’t save the changes, for example if the malware scan rejects an uploaded file. Earlier versions didn’t show a message and the page didn’t change.
Provisioning Service#
The job that registers the consumers now attempts to register all consumers, even if the registration of one consumer fails. The job still fails if any consumer registration fails. Previously, the job stopped at the first failed registration and skipped the remaining consumers.
Upgrade NATS to version 2.15.1. This includes fixes for the following security findings:
Keycloak service#
Upgrade Keycloak to version 26.8.1. This includes fixes for the following security findings:
Self Service Consumer#
The selfservice-invitation container image
now uses a distroless Python base image
and contains only the software packages the Self Service Consumer needs at runtime.
This reduces the SBOM components in the image by 58%,
from 118 to 49 software packages.
The new image fixes the following security findings:
UMC server#
The End User Self Service can now scan uploaded files for malware, for example profile pictures. It sends the files over TCP to an ICAP service, for example c-icap with ClamAV. If the ICAP service finds malware or can’t scan the file, the End User Self Service rejects the file. The malware scan is inactive by default. To activate it, set the value
nubusUmcServer.selfService.malwareScan.icap.url. For more information, see Malware scan of uploaded files in End User Self Service in Univention Nubus for Kubernetes - Operation Manual [1].The UDM REST API no longer crashes on a corrupted or concurrently-evicted entry in its internal authentication cache.
The sticky-session proxy for the UMC server now uses Traefik version 3.7.16. This includes fixes for the following security advisories:
UDM HTTP REST API#
The performance of counting license usage has been improved.
UDM now preserves the account expiration date when disabling a user account.
Included errata updates#
The errata updates contain fixes for the following CVEs:
- aiohttp
CVE-2026-111064 (high)
CVE-2026-111066 (high)
CVE-2026-111063 (medium)
CVE-2026-111065 (medium)
CVE-2026-111748 (medium)
CVE-2026-111750 (medium)
CVE-2026-111749 (low)
- bcprov-jdk18on
CVE-2026-8763 (critical)
CVE-2026-13506 (high)
- cryptography
CVE-2023-23931 (medium)
CVE-2024-0727 (medium)
CVE-2026-34073 (low)
- jackson-core
CVE-2026-89407 (high)
CVE-2026-89425 (high)
- jackson-databind
CVE-2026-68497 (high)
CVE-2026-91776 (high)
CVE-2026-91777 (high)
CVE-2026-19032 (medium)
CVE-2026-83557 (medium)
- libbrotli1
CVE-2026-111497 (critical)
- libevent-2.1-7t64
CVE-2026-63379 (medium)
CVE-2026-63381 (medium)
- libexpat1
CVE-2026-32776 (medium)
CVE-2026-32777 (medium)
CVE-2026-24515 (low)
CVE-2026-32778 (low)
- libpcre2-8-0
CVE-2026-89161 (high)
CVE-2026-89157 (medium)
CVE-2026-89158 (medium)
CVE-2026-89156 (low)
CVE-2026-89160 (low)
CVE-2026-89162 (low)
- libperl5.40
CVE-2025-15649 (medium)
CVE-2026-19487 (medium)
CVE-2026-7010 (medium)
- libpython3.13-minimal
CVE-2026-0864 (medium)
CVE-2026-4360 (low)
CVE-2026-6879 (low)
- libpython3.13-stdlib
CVE-2026-0864 (medium)
CVE-2026-4360 (low)
CVE-2026-6879 (low)
- libssl3t64
CVE-2026-54873 (high)
CVE-2026-72897 (high)
CVE-2026-84784 (high)
CVE-2026-35189 (medium)
CVE-2026-42772 (medium)
CVE-2026-75804 (medium)
CVE-2026-75805 (medium)
CVE-2026-75806 (medium)
CVE-2026-35191 (low)
CVE-2026-54872 (low)
CVE-2026-54875 (low)
CVE-2026-77696 (low)
- urllib3
CVE-2026-97687 (high)
CVE-2026-97689 (high)
CVE-2026-97688 (medium)