CVE-2026-1709: Keylime: keylime: authentication bypass allows unauthorized administrative operations due to missing client-side tls authentication

Published Jan 30, 2026
·
Updated

Impact

The Keylime registrar does not enforce mutual TLS (mTLS) client certificate authentication since version 7.12.0. The registrar's TLS context is configured with ssl.CERTOPTIONAL instead of ssl.CERTREQUIRED, allowing any client to connect to protected API endpoints without presenting a valid client certificate.

Who is impacted: - All Keylime deployments running versions 7.12.0 through 7.13.0 - Environments where the registrar HTTPS port (default 8891) is network-accessible to untrusted clients

What an attacker can do: - List all registered agents (GET /v2/agents/) - enumerate the entire agent inventory - Retrieve agent details (GET /v2/agents/{uuid}) - obtain public TPM keys, certificates, and network locations (IP/port) of any agent - Delete any agent (DELETE /v2/agents/{uuid}) - remove agents from the registry, disrupting attestation services

Note: The exposed TPM data (EK, AK, certificates) consists of public keys and certificates. Private keys remain protected within TPM hardware. The HMAC secret used for challenge-response validation is stored in the database but is not exposed via the API.

Affected versions: >= 7.12.0, <= 7.13.0

Fixed versions: 7.12.2, >= 7.13.1

Patches

A patch for the affected released versions is available. It removes the line that override the configuration of ssl.verifymode, leaving the CERTREQUIRED value set by webutil.initmtls():

diff diff --git a/keylime/web/base/server.py b/keylime/web/base/server.py index 1d9a9c2..859b23a 100644 --- a/keylime/web/base/server.py +++ b/keylime/web/base/server.py @@ -2,7 +2,6 @@ import asyncio import multiprocessing from abc import ABC, abstractmethod from functools import wraps -from ssl import CERTOPTIONAL from typing import TYPECHECKING, Any, Callable, Optional

import tornado @@ -252,7 +251,6 @@ class Server(ABC): self.httpsport = config.getint(component, "tlsport", fallback=0) self.maxuploadsize = config.getint(component, "maxuploadsize", fallback=104857600) self.sslctx = webutil.initmtls(component) - self.sslctx.verifymode = CERTOPTIONAL

def get(self, pattern: str, controller: type["Controller"], action: str, allowinsecure: bool = False) -> None: """Creates a new route to handle incoming GET requests issued for paths which match the given

Users should upgrade to the patched version once it is released.

Workarounds

If upgrading is not immediately possible, apply one of the following mitigations:

1. Network isolation (Recommended)

Restrict access to the registrar HTTPS port (default 8891) using firewall rules to allow only trusted hosts (verifier, tenant):

Example using iptables iptables -A INPUT -p tcp --dport 8891 -s <verifierip> -j ACCEPT iptables -A INPUT -p tcp --dport 8891 -s <tenantip> -j ACCEPT iptables -A INPUT -p tcp --dport 8891 -j DROP

2. Reverse proxy with mTLS enforcement

Deploy a reverse proxy (nginx, HAProxy) in front of the registrar that enforces client certificate authentication:

Example nginx configuration server { listen 8891 ssl; sslcertificate /path/to/server.crt; sslcertificatekey /path/to/server.key; sslclientcertificate /path/to/ca.crt; sslverifyclient on; # Enforce client certificates

location / { proxypass https://localhost:8892; # Internal registrar port } }

Other sources

A flaw was found in Keylime. The Keylime registrar, since version 7.12.0, does not enforce client-side Transport Layer Security (TLS) authentication. This authentication bypass vulnerability allows unauthenticated clients with network access to perform administrative operations, including listing agents, retrieving public Trusted Platform Module (TPM) data, and deleting agents, by connecting without presenting a client certificate.

MITRE

The Keylime registrar since version 7.12.0 does not require client-side TLS authentication because ssl.CERTREQUIRED is not set when configuring the TLS context. This allows unauthenticated clients to perform administrative operations (list agents, retrieve public TPM data, delete agents) by connecting without presenting a client certificate. Requirements to exploit:

Network access to the registrar HTTPS port (default 8891) No credentials, certificates, or special tools required Standard HTTP client (curl, wget, etc.) is sufficient

Mitigation if available: 1. Network isolation - Restrict network access to registrar port 8891 to only trusted verifier and tenant hosts using firewall rules 2. Reverse proxy with mTLS - Deploy a reverse proxy (nginx, HAProxy) in front of the registrar that enforces client certificate authentication 3. Upgrade - Apply the fix when released (adds ssl.CERTREQUIRED to enforce client certificate validation)

Red Hat

Affected Software

16 affected componentsFixes available
keylime/keylime>=7.12.0
pip/keylime=7.13.0
7.13.1
pip/keylime>=7.12.0<7.12.2
7.12.2
Keylime Keylime<7.12.0
redhat Enterprise Linux=9.0
redhat Enterprise Linux=10.0
redhat Enterprise Linux Eus=10.0
redhat Enterprise Linux For Arm 64=9.0_aarch64
redhat Enterprise Linux For Arm 64=10.0_aarch64
redhat Enterprise Linux For Arm 64 Eus=10.0_aarch64
redhat Enterprise Linux For Ibm Z Systems=9.0_s390x
redhat Enterprise Linux For Ibm Z Systems=10.0_s390x
redhat Enterprise Linux For Ibm Z Systems Eus=10.0_s390x
redhat Enterprise Linux For Power Little Endian=9.0_ppc64le
redhat Enterprise Linux For Power Little Endian=10.0_ppc64le
redhat Enterprise Linux For Power Little Endian Eus=10.0_ppc64le

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade pip/keylime to a version that resolves this vulnerability.

    Fixed in 7.13.1
  2. Upgrade

    Upgrade pip/keylime to a version that resolves this vulnerability.

    Fixed in 7.12.2
  3. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 7.12.2
  4. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 7.13.1
  5. Configuration

    Remove the override that sets `self._ssl_ctx.verify_mode = CERT_OPTIONAL` so the TLS context keeps `ssl.CERT_REQUIRED` as initialized by `web_util.init_mtls()` (fixes authentication bypass affecting Keylime 7.12.0 through 7.13.0).

    Keylime registrar (keylime/web/base/server.py) ssl.verify_mode = CERT_REQUIRED
  6. Configuration

    Deploy a reverse proxy (nginx or HAProxy) in front of the registrar that enforces client certificate authentication (mTLS) for the registrar HTTPS port (default 8891).

    Reverse proxy in front of registrar (nginx/HAProxy) mTLS client certificate enforcement = enabled
  7. Compensating control

    Network isolate the registrar HTTPS port (default 8891) by restricting access with firewall rules to only trusted verifier and tenant hosts (allow verifier_ip and tenant_ip; default deny/drop). Example shown in material: `iptables -A INPUT -p tcp --dport 8891 -j DROP` then `iptables -A INPUT -p tcp --dport 8891 -s <tenant_ip> -j ACCEPT` and `iptables -A INPUT -p tcp --dport 8891 -s <verifier_ip> -j ACCEPT`.

Event History

Jan 30, 2026
Data Sourced
via Red Hat·05:04 PM
DescriptionSeverityAffected Software
Feb 6, 2026
CVE Published
via MITRE·07:13 PM
Data Sourced
via MITRE·07:13 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·08:16 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·08:16 PM
Affected Software
Advisory Published
via GitHub·10:34 PM
Data Sourced
via GitHub·10:34 PM
DescriptionSeverityWeaknessAffected Software
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2026-1709?

CVE-2026-1709 is considered a high severity vulnerability due to the significant risk of unauthorized administrative operations.

2

How do I fix CVE-2026-1709?

To fix CVE-2026-1709, ensure that you implement client-side TLS authentication in your Keylime setup, preferably by upgrading to a patched version after 7.12.0.

3

What systems are affected by CVE-2026-1709?

CVE-2026-1709 affects Keylime versions starting from 7.12.0.

4

What type of vulnerability is represented by CVE-2026-1709?

CVE-2026-1709 is categorized as an authentication bypass vulnerability.

5

Who is at risk from CVE-2026-1709?

Organizations using affected versions of Keylime are at risk of unauthorized access and administrative actions.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203