Security information

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

  • [MKE-12337] Kubernetes 1.31.8

  • [MKE-12188] Golang 1.23.9

  • [MKE-12220] Node Feature Discovery 0.17.2

  • [MKE-12314] Calico 3.29.3

  • [MKE-12239] Interlock 3.3.15

  • [MKE-12349] NGINX Ingress Controller 1.12.2

  • [MKE-12318] Prometheus 2.53.4

  • [MKE-12350] Blackbox Exporter 0.26.0

  • [MKE-12318] Alert Manager 0.28.1

  • [MKE-12241] NVIDIA GPU Feature Discovery 0.17.1

  • [MKE-12249] Gatekeeper 3.19.1

  • [MKE-12316] Metallb 0.14.9

  • [MKE-12317] Multus 4.2.0

  • [MKE-12335] CAdvisor 0.52.1

  • [MKE-12336] Windows GMSA 0.13.0

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-31498

Resolved

  • ucp

  • ucp-secureoverlay-mgr

  • ucp-secureoverlay-agent

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-hardware-info

  • ucp-etcd

  • ucp-controller

  • ucp-cfssl

  • ucp-calico-cni-firewalld-chroot

  • ucp-agent

  • ucp-rethinkdb-exporter

  • ucp-node-exporter

  • ucp-kube-ingress-controller

  • ucp-swarm

c-ares is an asynchronous resolver library. From 1.32.3 through 1.34.4, there is a use-after-free in read_answers() when process_answer() may re-enqueue a query either due to a DNS Cookie Failure or when the upstream server does not properly support EDNS, or possibly on TCP queries if the remote closed the connection immediately after a response. If there was an issue trying to put that new transaction on the wire, it would close the connection handle, but read_answers() was still expecting the connection handle to be available to possibly dequeue other responses. In theory a remote attacker might be able to trigger this by flooding the target with ICMP UNREACHABLE packets if they also control the upstream nameserver and can return a result with one of those conditions, this has been untested. Otherwise only a local attacker might be able to change system behavior to make send()/write() return a failure condition. This vulnerability is fixed in 1.34.5.

CVE-2025-31115

Resolved

  • ucp-interlock-proxy

  • ucp-interlock-config

  • ucp-auth-store

  • ucp-multus-cni

  • ucp-kube-ingress-controller

XZ Utils provide a general-purpose data-compression library plus command-line tools. In XZ Utils 5.3.3alpha to 5.8.0, the multithreaded .xz decoder in liblzma has a bug where invalid input can at least result in a crash. The effects include heap use after free and writing to an address based on the null pointer plus an offset. Applications and libraries that use the lzma_stream_decoder_mt function are affected. The bug has been fixed in XZ Utils 5.8.1, and the fix has been committed to the v5.4, v5.6, v5.8, and master branches in the xz Git repository. No new release packages will be made from the old stable branches, but a standalone patch is available that applies to all affected releases.

CVE-2025-30204

Resolved

  • ucp-auth

  • ucp-auth-store

golang-jwt is a Go implementation of JSON Web Tokens. Prior to 5.2.2 and 4.5.2, the function parse.ParseUnverified splits (via a call to strings.Split) its argument (which is untrusted data) on periods. As a result, in the face of a malicious request whose Authorization header consists of Bearer followed by many period characters, a call to that function incurs allocations to the tune of O(n) bytes (where n stands for the length of the function’s argument), with a constant factor of about 16. This issue is fixed in 5.2.2 and 4.5.2.

CVE-2025-29087

Resolved

  • ucp

  • ucp-auth-store

In SQLite 3.44.0 through 3.49.0 before 3.49.1, the concat_ws() SQL function can cause memory to be written beyond the end of a malloc-allocated buffer. If the separator argument is attacker-controlled and has a large string (e.g., 2MB or more), an integer overflow occurs in calculating the size of the result buffer, and thus malloc may not allocate enough memory.

CVE-2025-23419

Resolved

  • ucp-interlock-proxy

  • ucp-interlock-config

When multiple server blocks are configured to share the same IP address and port, an attacker can use session resumption to bypass client certificate authentication requirements on these servers. This vulnerability arises when TLS Session Tickets https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_ticket_key are used and/or the SSL session cache https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_cache are used in the default server and the default server is performing client certificate authentication. Note: Software versions which have reached End of Technical Support (EoTS) are not evaluated.

CVE-2025-22870

Resolved

  • ucp-node-feature-discovery

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-auth

  • ucp-auth-store

  • ucp-nvidia-gpu-feature-discovery

  • ucp-nvidia-device-plugin

  • ucp-rethinkdb-exporter

  • ucp-node-exporter

  • ucp-multus-cni

  • ucp-kube-gmsa-webhook

  • ucp-alertmanager

  • ucp-swarm

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-feature-discovery

  • ucp-auth

  • ucp-auth-store

  • ucp-rethinkdb-exporter

  • ucp-node-exporter

  • ucp-alertmanager

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-node-feature-discovery

  • ucp-nvidia-gpu-feature-discovery

  • ucp-node-exporter

  • ucp-multus-cni

  • ucp-kube-gmsa-webhook

  • ucp-alertmanager

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

CVE-2025-0725

Resolved

  • ucp-auth

  • ucp-auth-store

  • ucp-rethinkdb-exporter

  • ucp-node-exporter

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-alertmanager

  • ucp-swarm

When libcurl is asked to perform automatic gzip decompression of content-encoded HTTP responses with the CURLOPT_ACCEPT_ENCODING option, using zlib 1.2.0.3 or older, an attacker-controlled integer overflow would make libcurl perform a buffer overflow.

CVE-2025-0395

Resolved

  • ucp-multus-cni

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-56406

Resolved

  • ucp-multus-cni

A heap buffer overflow vulnerability was discovered in Perl. Release branches 5.34, 5.36, 5.38 and 5.40 are affected, including development versions from 5.33.1 through 5.41.10. When there are non-ASCII bytes in the left-hand-side of the tr operator, S_do_trans_invmap can overflow the destination pointer d. $ perl -e ‘$_ = “x{FF}” x 1000000; tr/xFF/x{100}/;’ Segmentation fault (core dumped) It is believed that this vulnerability can enable Denial of Service and possibly Code Execution attacks on platforms that lack sufficient defenses.

CCVE-2024-45341

Resolved

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-auth

  • ucp-auth-store

  • ucp-nvidia-gpu-feature-discovery

  • ucp-nvidia-device-plugin

  • ucp-rethinkdb-exporter

  • ucp-node-exporter

  • ucp-multus-cni

  • ucp-kube-gmsa-webhook

  • ucp-alertmanager

  • ucp-node-feature-discovery

  • ucp-swarm

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-45339

Resolved

  • ucp-nvidia-device-plugin

When logs are written to a widely-writable directory (the default), an unprivileged attacker may predict a privileged process’s log file path and pre-create a symbolic link to a sensitive file in its place. When that privileged process runs, it will follow the planted symlink and overwrite that sensitive file. To fix that, glog now causes the program to exit (with status code 2) when it finds that the configured log file already exists.

CVE-2024-45338

Resolved

  • ucp-node-feature-discovery

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-nvidia-gpu-feature-discovery

  • ucp-nvidia-device-plugin

  • ucp-rethinkdb-exporter

  • ucp-node-exporter

  • ucp-multus-cni

  • ucp-kube-gmsa-webhook

  • ucp-alertmanager

  • ucp-swarm

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-feature-discovery

  • ucp-rethinkdb-exporter

  • ucp-node-exporter

  • ucp-alertmanager

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-interlock

  • ucp-interlock-extension

  • ucp-auth

  • ucp-auth-store

  • ucp-nvidia-gpu-feature-discovery

  • ucp-nvidia-device-plugin

  • ucp-rethinkdb-exporter

  • ucp-node-exporter

  • ucp-multus-cni

  • ucp-kube-gmsa-webhook

  • ucp-alertmanager

  • ucp-node-feature-discovery

  • ucp-swarm

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-41110

Reassessed to Medium

  • ucp

  • ucp-metrics

  • ucp-metrics-swarm-only

  • ucp-hardware-info

  • ucp-controller

  • ucp-cfssl

  • ucp-cadvisor

  • ucp-auth-store

  • ucp-agent

  • ucp-swarm

  • ucp-dsinfo

  • ucp-compose

MKE does n0t use the authZ plugin from Docker. MKE uses Docker as client, and the vulnerably is on the server side.

Moby is an open-source project created by Docker for software containerization. A security vulnerability has been detected in certain versions of Docker Engine, which could allow an attacker to bypass authorization plugins (AuthZ) under specific circumstances. The base likelihood of this being exploited is low. Using a specially-crafted API request, an Engine API client could make the daemon forward the request or response to an authorization plugin without the body. In certain circumstances, the authorization plugin may allow a request which it would have otherwise denied if the body had been forwarded to it. A security issue was discovered In 2018, where an attacker could bypass AuthZ plugins using a specially crafted API request. This could lead to unauthorized actions, including privilege escalation. Although this issue was fixed in Docker Engine v18.09.1 in January 2019, the fix was not carried forward to later major versions, resulting in a regression. Anyone who depends on authorization plugins that introspect the request and/or response body to make access control decisions is potentially impacted. Docker EE v19.03.x and all versions of Mirantis Container Runtime are not vulnerable. docker-ce v27.1.1 containes patches to fix the vulnerability. Patches have also been merged into the master, 19.03, 20.0, 23.0, 24.0, 25.0, 26.0, and 26.1 release branches. If one is unable to upgrade immediately, avoid using AuthZ plugins and/or restrict access to the Docker API to trusted parties, following the principle of least privilege.

CVE-2024-37371

Resolved

  • ucp-cadvisor

In MIT Kerberos 5 (aka krb5) before 1.21.3, an attacker can cause invalid memory reads during GSS message token handling by sending message tokens with invalid length fields.

CVE-2024-34158

Resolved

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-multus-cni

  • ucp-kube-gmsa-webhook

  • ucp-swarm

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-interlock

  • ucp-interlock-extension

  • ucp-multus-cni

  • ucp-kube-gmsa-webhook

  • ucp-swarm

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-interlock

  • ucp-interlock-extension

  • ucp-multus-cni

  • ucp-kube-gmsa-webhook

  • ucp-swarm

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-24790

Resolved

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-metrics-swarm-only

  • ucp-metallb-speaker

  • ucp-metallb-controller

  • ucp-kube-gmsa-webhook

  • ucp-interlock

  • ucp-gatekeeper

  • ucp-cadvisor

  • ucp-blackbox-exporter

  • ucp-auth-store

  • ucp-swarm

  • ucp-dsinfo

  • ucp-compose

  • ucp-calico-cni

The various Is methods (IsPrivate, IsLoopback, etc) did not work as expected for IPv4-mapped IPv6 addresses, returning false for addresses which would return true in their traditional IPv4 forms.

CVE-2024-24788

Resolved

  • ucp-interlock

  • ucp-interlock-extension

A malformed DNS message in response to a query can cause the Lookup functions to get stuck in an infinite loop.

CVE-2024-24786

Resolved

  • ucp-node-feature-discovery

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-kube-gmsa-webhook

  • ucp-alertmanager

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-24785

Resolved

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-kube-gmsa-webhook

  • ucp-swarm

If errors returned from MarshalJSON methods contain user controlled data, they may be used to break the contextual auto-escaping behavior of the html/template package, allowing for subsequent actions to inject unexpected content into templates.

CVE-2024-24783

Resolved

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-kube-gmsa-webhook

  • ucp-swarm

Verifying a certificate chain which contains a certificate with an unknown public key algorithm will cause Certificate.Verify to panic. This affects all crypto/tls clients, and servers that set Config.ClientAuth to VerifyClientCertIfGiven or RequireAndVerifyClientCert. The default behavior is for TLS servers to not verify client certificates.

CVE-2024-12797

Resolved

  • ucp-auth

Clients using RFC7250 Raw Public Keys (RPKs) to authenticate a server may fail to notice that the server was not authenticated, because handshakes don’t abort as expected when the SSL_VERIFY_PEER verification mode is set. Impact summary: TLS and DTLS connections using raw public keys may be vulnerable to man-in-middle attacks when server authentication failure is not detected by clients. RPKs are disabled by default in both TLS clients and TLS servers. The issue only arises when TLS clients explicitly enable RPK use by the server, and the server, likewise, enables sending of an RPK instead of an X.509 certificate chain. The affected clients are those that then rely on the handshake to fail when the server’s RPK fails to match one of the expected public keys, by setting the verification mode to SSL_VERIFY_PEER. Clients that enable server-side raw public keys can still find out that raw public key verification failed by calling SSL_get_verify_result(), and those that do, and take appropriate action, are not affected. This issue was introduced in the initial implementation of RPK support in OpenSSL 3.2. The FIPS modules in 3.4, 3.3, 3.2, 3.1 and 3.0 are not affected by this issue.

CVE-2024-10220

Resolved

  • ucp-node-feature-discovery

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.

CVE-2024-8176

Resolved

  • ucp-interlock-proxy

  • ucp-interlock-config

  • ucp-auth-store

A stack overflow vulnerability exists in the libexpat library due to the way it handles recursive entity expansion in XML documents. When parsing an XML document with deeply nested entity references, libexpat can be forced to recurse indefinitely, exhausting the stack space and causing a crash. This issue could lead to denial of service (DoS) or, in some cases, exploitable memory corruption, depending on the environment and library usage.

CVE-2023-45290

Resolved

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-kube-gmsa-webhook

  • ucp-swarm

When parsing a multipart form (either explicitly with Request.ParseMultipartForm or implicitly with Request.FormValue, Request.PostFormValue, or Request.FormFile), limits on the total size of the parsed form were not applied to the memory consumed while reading a single form line. This permits a maliciously crafted input containing very long lines to cause allocation of arbitrarily large amounts of memory, potentially leading to memory exhaustion. With fix, the ParseMultipartForm function now correctly limits the maximum size of form lines.

CVE-2023-45289

Resolved

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-kube-gmsa-webhook

  • ucp-swarm

When following an HTTP redirect to a domain which is not a subdomain match or exact match of the initial domain, an http.Client does not forward sensitive headers such as “Authorization” or “Cookie”. For example, a redirect from foo.com to www.foo.com will forward the Authorization header, but a redirect to bar.com will not. A maliciously crafted HTTP redirect could cause sensitive headers to be unexpectedly forwarded.

CVE-2023-45288

Resolved

  • ucp-interlock

  • ucp-interlock-extension

  • ucp-kube-gmsa-webhook

  • ucp-swarm

An attacker may cause an HTTP/2 endpoint to read arbitrary amounts of header data by sending an excessive number of CONTINUATION frames. Maintaining HPACK state requires parsing and processing all HEADERS and CONTINUATION frames on a connection. When a request’s headers exceed MaxHeaderBytes, no memory is allocated to store the excess headers, but they are still parsed. This permits an attacker to cause an HTTP/2 endpoint to read arbitrary amounts of header data, all associated with a request which is going to be rejected. These headers can include Huffman-encoded data which is significantly more expensive for the receiver to decode than for an attacker to send. The fix sets a limit on the amount of excess header frames we will process before closing a connection.