Security information

Upgraded the following middleware component versions to resolve vulnerabilities in MKE:

  • [MKE-12429] Kubernetes 1.31.10

  • [MKE-12370] Interlock 3.3.16

  • [MKE-12516] Golang 1.23.10

  • [MKE-12783] Golang 1.23.10 in containerd-shim-process

  • [MKE-12782] Golang 1.23.10 in eNZi

  • [MKE-12781] Golang 1.23.10 in Swarm

  • [MKE-12443] NGINX Ingress Controller 1.12.3

  • [MKE-12442] Metallb 0.15.2

  • [MKE-12767] cri-dockerd 0.3.19

  • [MKE-12430] Node Local DNS 1.26.4

The following table details the specific CVEs addressed, including which images are affected per CVE.

CVE

Status

Image mitigated

Problem details from upstream

CVE-2025-32415

Resolved

  • ucp-kube-ingress-controller

  • ucp-interlock-proxy

  • ucp-interlock-config

In libxml2 before 2.13.8 and 2.14.x before 2.14.2, xmlSchemaIDCFillNodeTables in xmlschemas.c has a heap-based buffer under-read. To exploit this, a crafted XML document must be validated against an XML schema with certain identity constraints, or a crafted XML schema must be used.

CVE-2025-32414

Resolved

  • ucp-kube-ingress-controller

  • ucp-interlock-proxy

  • ucp-interlock-config

In libxml2 before 2.13.8 and 2.14.x before 2.14.2, out-of-bounds memory access can occur in the Python API (Python bindings) because of an incorrect return value. This occurs in xmlPythonFileRead and xmlPythonFileReadRaw because of a difference between bytes and characters.

CVE-2025-22870

Reassessed to Medium

  • ucp-node-local-dns

  • ucp-metallb-speaker

  • ucp-metallb-controller

  • ucp-dsinfo

  • ucp-compose

Matching of hosts against proxy patterns can improperly treat an IPv6 zone ID as a hostname component. For example, when the NO_PROXY environment variable is set to “*.example.com”, a request to “[::1%25.example.com]:80` will incorrectly match and not be proxied.

CVE-2025-22869

Resolved

  • ucp-node-local-dns

SSH servers which implement file transfer protocols are vulnerable to a denial of service attack from clients which complete the key exchange slowly, or not at all, causing pending content to be read into memory, but never transmitted.

CVE-2025-22868

Resolved

  • ucp-metallb-speaker

  • ucp-metallb-controller

An attacker can pass a malicious malformed token which causes unexpected memory to be consumed during parsing.

CVE-2025-4802

Resolved

  • ucp-node-local-dns

Untrusted LD_LIBRARY_PATH environment variable vulnerability in the GNU C Library version 2.27 to 2.38 allows attacker controlled loading of dynamically shared library in statically compiled setuid binaries that call dlopen (including internal dlopen calls after setlocale or calls to NSS functions such as getaddrinfo).

CVE-2025-4673

Resolved

  • ucp

  • ucp-swarm

  • ucp-secureoverlay-mgr

  • ucp-secureoverlay-agent

  • ucp-rethinkdb-exporter

  • ucp-nvidia-gpu-feature-discovery

  • ucp-nvidia-device-plugin

  • ucp-node-feature-discovery

  • ucp-node-exporter

  • ucp-multus-cni

  • ucp-kube-state-metrics

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-hardware-info

  • ucp-etcd

  • ucp-coredns

  • ucp-controller

  • ucp-containerd-shim-process

  • ucp-cfssl

  • ucp-azure-ip-allocator

  • ucp-auth

  • ucp-auth-store

  • ucp-alertmanager

  • ucp-agent

  • ucp-hyperkube

Proxy-Authorization and Proxy-Authenticate headers persisted on cross-origin redirects potentially leaking sensitive information.

CVE-2025-0395

Resolved

  • ucp-node-local-dns

When the assert() function in the GNU C Library versions 2.13 to 2.40 fails, it does not allocate enough space for the assertion failure message string and size information, which may lead to a buffer overflow if the message string size aligns to page size.

CCVE-2024-45341

Resolved

  • ucp-node-local-dns

  • ucp-metallb-speaker

  • ucp-metallb-controller

  • ucp-containerd-shim-process

A certificate with a URI which has a IPv6 address with a zone ID may incorrectly satisfy a URI name constraint that applies to the certificate chain. Certificates containing URIs are not permitted in the web PKI, so this only affects users of private PKIs which make use of URIs.

CVE-2024-45338

Resolved

  • ucp-node-local-dns

  • ucp-metallb-speaker

  • ucp-metallb-controller

An attacker can craft an input to the Parse functions that would be processed non-linearly with respect to its length, resulting in extremely slow parsing. This could cause a denial of service.

CVE-2024-45337

Resolved

  • ucp-node-local-dns

Applications and libraries which misuse connection.serverAuthenticate (via callback field ServerConfig.PublicKeyCallback) may be susceptible to an authorization bypass. The documentation for ServerConfig.PublicKeyCallback says that “A call to this function does not guarantee that the key offered is in fact used to authenticate.” Specifically, the SSH protocol allows clients to inquire about whether a public key is acceptable before proving control of the corresponding private key. PublicKeyCallback may be called with multiple keys, and the order in which the keys were provided cannot be used to infer which key the client successfully authenticated with, if any. Some applications, which store the key(s) passed to PublicKeyCallback (or derived information) and make security relevant determinations based on it once the connection is established, may make incorrect assumptions. For example, an attacker may send public keys A and B, and then authenticate with A. PublicKeyCallback would be called only twice, first with A and then with B. A vulnerable application may then make authorization decisions based on key B for which the attacker does not actually control the private key. Since this API is widely misused, as a partial mitigation golang.org/x/cry…@v0.31.0 enforces the property that, when successfully authenticating via public key, the last key passed to ServerConfig.PublicKeyCallback will be the key used to authenticate the connection. PublicKeyCallback will now be called multiple times with the same key, if necessary. Note that the client may still not control the last key passed to PublicKeyCallback if the connection is then authenticated with a different method, such as PasswordCallback, KeyboardInteractiveCallback, or NoClientAuth. Users should be using the Extensions field of the Permissions return value from the various authentication callbacks to record data associated with the authentication attempt instead of referencing external state. Once the connection is established the state corresponding to the successful authentication attempt can be retrieved via the ServerConn.Permissions field. Note that some third-party libraries misuse the Permissions type by sharing it across authentication attempts; users of third-party libraries should refer to the relevant projects for guidance.

CVE-2024-45336

Resolved

  • ucp-node-local-dns

  • ucp-metallb-speaker

  • ucp-metallb-controller

  • ucp-containerd-shim-process

The HTTP client drops sensitive headers after following a cross-domain redirect. For example, a request to a.com/ containing an Authorization header which is redirected to b.com/ will not send that header to b.com. In the event that the client received a subsequent same-domain redirect, however, the sensitive headers would be restored. For example, a chain of redirects from a.com/, to b.com/1, and finally to b.com/2 would incorrectly send the Authorization header to b.com/2.

CVE-2024-34158

Resolved

  • ucp-containerd-shim-process

Calling Parse on a “// +build” build tag line with deeply nested expressions can cause a panic due to stack exhaustion.

CVE-2024-34156

Resolved

  • ucp-containerd-shim-process

Calling Decoder.Decode on a message which contains deeply nested structures can cause a panic due to stack exhaustion. This is a follow-up to CVE-2022-30635.

CVE-2024-34155

Resolved

  • ucp-containerd-shim-process

Calling any of the Parse functions on Go source code which contains deeply nested literals can cause a panic due to stack exhaustion.

CVE-2024-24786

Reassessed to Medium

  • ucp-dsinfo

  • ucp-containerd-shim-process

  • ucp-compose

The protojson.Unmarshal function can enter an infinite loop when unmarshaling certain forms of invalid JSON. This condition can occur when unmarshaling into a message which contains a google.protobuf.Any value, or when the UnmarshalOptions.DiscardUnknown option is set.

CVE-2024-21626

Reassessed to Low

  • ucp-dsinfo

  • ucp-compose

runc is a CLI tool for spawning and running containers on Linux according to the OCI specification. In runc 1.1.11 and earlier, due to an internal file descriptor leak, an attacker could cause a newly-spawned container process (from runc exec) to have a working directory in the host filesystem namespace, allowing for a container escape by giving access to the host filesystem (“attack 2”). The same attack could be used by a malicious image to allow a container process to gain access to the host filesystem through runc run (“attack 1”). Variants of attacks 1 and 2 could be also be used to overwrite semi-arbitrary host binaries, allowing for complete container escapes (“attack 3a” and “attack 3b”). runc 1.1.12 includes patches for this issue.

CVE-2024-10220

Resolved

  • ucp-dsinfo

  • ucp-compose

The Kubernetes kubelet component allows arbitrary command execution via specially crafted gitRepo volumes.This issue affects kubelet: through 1.28.11, from 1.29.0 through 1.29.6, from 1.30.0 through 1.30.2.