CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-70666

CVE-2026-70666: Server-Side Request Forgery in Netflix Lemur ACME Authority Management

Alon Barad
Alon Barad
Software Engineer

Aug 19, 2026·5 min read·1 visit

Executive Summary (TL;DR)

An SSRF vulnerability in Netflix Lemur allows lower-privileged users with authority roles to update authority settings to point to a rogue ACME server. The Lemur ACME client then trusts server-supplied dynamic URLs, enabling attackers to query private internal endpoints and retrieve cloud instance credentials.

CVE-2026-70666 is a critical Server-Side Request Forgery (SSRF) vulnerability in Netflix Lemur's ACME certificate management integration. Prior to version 1.9.3, the system allowed authority-role users to bypass initial ACME URL allowlist validations when updating an existing authority. Additionally, the underlying ACME network client blindly parsed and connected to dynamic endpoint URLs supplied in JSON responses from the configured ACME directory, allowing attackers to route arbitrary JWS-signed requests to internal services or cloud metadata endpoints.

Vulnerability Overview

Netflix Lemur functions as an orchestration framework designed to manage and automate TLS certificates across complex enterprise environments. Its ACME integration plugin (lemur_acme) handles communication with Automated Certificate Management Environment providers like Let's Encrypt to validate ownership and issue certificates.

The attack surface exists in how Lemur handles internal authority administrative actions and parses ACME directory parameters. A vulnerability in both the validation logic and the networking client allows an authenticated authority-role user to hijack outbound requests. This creates an exploitation path targeting internal networks, microservices, and metadata endpoints.

Root Cause Analysis

The vulnerability consists of two distinct software defects that work in tandem. The first defect involves an authentication-by-role privilege escalation within the authority update paths. During authority creation, Lemur enforces the ACME_DIRECTORY_HOST_ALLOWLIST filter. However, the update endpoints PUT /api/1/authorities/{id} and PUT /api/1/authorities/{id}/options failed to re-validate modified configurations, permitting arbitrary ACME directory URL changes.

The second defect is an unvalidated endpoint trust issue. RFC 8555 specifies that an ACME client must first fetch a directory resource to obtain active endpoint links (e.g., newOrder, newNonce). The standard Python acme dependency class ClientNetwork retrieves and connects to these links automatically. Because Lemur did not verify that these dynamically returned hostnames matched the original trusted ACME directory domain, a malicious directory server could redirect outbound Lemur API calls to internal system targets.

Code Analysis

To address the bypass, the patch implements strict hostname validation within the update pathways inside lemur/authorities/service.py and creates a custom client class to restrict HTTP network traffic.

The updated validation routine extracts and verifies the hostname of any updated ACME URL:

# lemur/authorities/service.py
def _validate_acme_url(url: str) -> None:
    allowed_hosts = current_app.config.get(
        'ACME_DIRECTORY_HOST_ALLOWLIST',
        {
            'acme-v02.api.letsencrypt.org',
            'acme-staging-v02.api.letsencrypt.org',
            'dv.acme-v02.api.pki.goog',
        },
    )
    parsed = urlparse(url)
    if parsed.scheme != 'https' or parsed.hostname not in allowed_hosts:
        raise InvalidConfiguration(
            f'acme_url host not in ACME_DIRECTORY_HOST_ALLOWLIST: {parsed.hostname}'
        )

Additionally, the patch replaces the default networking component with a pinned-hostname implementation to prevent redirect attacks:

# lemur/plugins/lemur_acme/acme_handlers.py
class _PinnedClientNetwork(ClientNetwork):
    def __init__(self, *args, pinned_hostname: str, **kwargs):
        super().__init__(*args, **kwargs)
        self._pinned_hostname = pinned_hostname
 
    def _send_request(self, method: str, url: str, *args, **kwargs) -> requests.Response:
        parsed = urlparse(url)
        # Enforce hostname equality for all dynamic requests
        if parsed.hostname != self._pinned_hostname:
            raise InvalidConfiguration(
                f'ACME client attempted request to disallowed host {parsed.hostname!r}; ' 
                f'expected {self._pinned_hostname!r}'
            )
        return super()._send_request(method, url, *args, **kwargs)

Exploitation & Methodology

Exploiting this flaw requires the attacker to possess credentials with sufficient authorization to modify a Lemur authority configuration. The attacker hosts a malicious server configured to return an ACME-compatible JSON payload that substitutes internal network resources for normal ACME protocol endpoints.

Once the rogue server is online, the attacker targets the authority update endpoint using a JSON payload containing the rogue acme_url. Because the validation routines are missing from the update path, the backend database stores the modified configuration directly without error.

When a certificate generation process is subsequently initialized, Lemur queries the rogue ACME server directory. The rogue server sends a response that maps standard paths like newOrder to internal targets such as http://169.254.169.254/latest/meta-data/iam/security-credentials/. The Lemur client processes this response and immediately transmits JWS-signed requests to the internal cloud metadata service, exposing IAM credentials to the attacker through system responses or error outputs.

Impact Assessment

The security impact of CVE-2026-70666 is significant due to the critical infrastructure role Lemur serves. By pivoting through the trusted Lemur server, an attacker bypasses perimeter defenses, firewalls, and network access control lists. This provides direct network access to otherwise isolated management plane APIs and local container network environments.

In environments deployed on Amazon Web Services (AWS), Google Cloud Platform (GCP), or Microsoft Azure, accessing the instance metadata service allows the attacker to extract short-term cloud provider credentials. If the instance runs with overly permissive IAM roles, the attacker can leverage these credentials to escalate privileges across the cloud account.

Furthermore, because the SSRF payload transmits JWS-signed JSON POST requests, it can be used to interact with raw key-value stores, database endpoints, or orchestration systems (such as Kubernetes Kubelet APIs) that accept unauthenticated or poorly authenticated JSON inputs over local interfaces.

Remediation & Detection

Remediation requires upgrading Netflix Lemur instances to version 1.9.3 or higher. The update fixes the flaw by validating configurations during updates and restricting the network client to the pinned hostname of the ACME directory.

Until a patch is applied, administrators should deploy egress firewall filters on Lemur hosts. These filters must restrict outgoing HTTP/HTTPS traffic exclusively to recognized, public ACME endpoints. Additionally, cloud metadata service protections should be enforced by configuring IMDSv2 with a strict hop limit of 1.

Administrators can identify historical exploitation attempts by querying their databases for unauthorized values in the authority option configurations. The following query helps identify non-standard ACME URLs stored in the authority table:

SELECT id, name, options FROM authority WHERE options LIKE '%acme_url%';

Fix Analysis (1)

Technical Appendix

CVSS Score
7.4/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:L

Affected Systems

Netflix Lemur

Affected Versions Detail

Product
Affected Versions
Fixed Version
Lemur
Netflix
< 1.9.31.9.3
AttributeDetail
CWE IDCWE-918
Attack VectorNetwork
CVSS v3.1 Score7.4
Privileges RequiredLow (Tenant Authority Role)
ImpactServer-Side Request Forgery & Information Disclosure
Exploit StatusProof of Concept available
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1005Data from Local System
Collection
CWE-918
Server-Side Request Forgery (SSRF)

The web application receives a URL or similar vector from an upstream component and retrieves the resource without validating the destination host.

Known Exploits & Detection

GitHub Security AdvisoryVulnerability details, reproduction vectors, and remediation patches detailed inside the official security advisory repository.

Vulnerability Timeline

Netflix remediates the SSRF vulnerabilities in Lemur commit 6dcb19b6
2026-06-29
GitHub Security Advisory GHSA-xpmj-wjcp-6pww is published
2026-08-18
CVE-2026-70666 is published to the National Vulnerability Database
2026-08-18

References & Sources

  • [1]GitHub Security Advisory GHSA-xpmj-wjcp-6pww
  • [2]NVD Record Details
  • [3]CVE.org Authority Record
  • [4]Netflix Lemur Remediation Commit
  • [5]Netflix Lemur Release v1.9.3

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•38 minutes ago•CVE-2026-62988
9.0

CVE-2026-62988: Multi-Factor Authentication and Credential Bypass in Froxlor API

An insecure data retrieval flaw in the Froxlor server administration panel API allows authenticated remote attackers to retrieve unredacted bcrypt password hashes and Base32-encoded Time-Based One-Time Password (TOTP) seeds. Affected endpoints include several 'get' and 'listing' handlers for customers, administrators, and FTP accounts. Utilizing these leaked parameters, attackers can crack the password hashes offline and concurrently generate valid second-factor authentication codes to completely bypass access controls.

Amit Schendel
Amit Schendel
0 views•6 min read
•about 3 hours ago•CVE-2026-70667
6.3

CVE-2026-70667: Server-Side Request Forgery Bypass in Netflix Lemur Certificate Verification

A security vulnerability in Netflix Lemur, a TLS certificate management framework, allows authenticated operators to bypass Server-Side Request Forgery (SSRF) mitigations. The issue exists within the certificate revocation verification workflow, specifically inside the CRL and OCSP retrieval logic. By exploiting HTTP redirects or DNS rebinding (Time-of-Check Time-of-Use) mechanisms, an attacker can coerce the server into issuing arbitrary network requests to internal services, such as the cloud instance metadata service (IMDS) or loopback addresses. This bypass neutralizes previous network-boundary validation logic and allows blind read/write SSRF targeting internal infrastructure resources.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 4 hours ago•CVE-2026-71303
7.7

CVE-2026-71303: Server-Side Request Forgery Bypass in Netflix Lemur Authority Updates

Netflix Lemur, an open-source TLS certificate management framework, is affected by a Server-Side Request Forgery (SSRF) vulnerability. This vulnerability arises from an incomplete patch for a previous security flaw, CVE-2026-55166. While Lemur version 1.9.2 validated the ACME directory URL against an allowlist during authority creation, it failed to perform the same checks when updating existing authorities. An authenticated user possessing an authority role can exploit this omission to replace the directory URL with internal or cloud metadata endpoints. During subsequent certificate issuance, the Lemur backend executes unauthorized requests, potentially leaking sensitive metadata or credentials.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 5 hours ago•CVE-2026-71307
7.7

CVE-2026-71307: Plaintext Credential Exposure in Netflix Lemur Destinations API

An authorization bypass and information disclosure vulnerability in Netflix Lemur before version 1.9.3 allows authenticated, low-privilege users to retrieve raw destination configurations, exposing plaintext credentials such as SFTP passwords and private key passphrases.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 6 hours ago•CVE-2026-71308
8.1

CVE-2026-71308: Missing Authorization and Lifecycle Hijacking in Netflix Lemur

Netflix Lemur before 1.9.3 contains a missing authorization vulnerability (CWE-862, CWE-639) when handling certificate creation, upload, or modification. Authenticated non-read-only users can manipulate the replaces parameter to silence expiration notifications and hijack certificate rotation tasks for arbitrary targets, leading to unauthorized TLS certificate deployment and traffic interception.

Alon Barad
Alon Barad
8 views•7 min read
•about 7 hours ago•CVE-2026-71317
6.5

CVE-2026-71317: Missing Authorization in Netflix Lemur Allows Unauthorized Subordinate CA Creation

CVE-2026-71317 is a critical Broken Object-Level Authorization (BOLA) / Missing Authorization vulnerability in Netflix Lemur versions prior to 1.9.3. When the self-service authority creation option is enabled (ADMIN_ONLY_AUTHORITY_CREATION = False), Lemur allows authenticated non-read-only users to request the creation of a subordinate Certificate Authority (sub-CA) chained to any internal parent authority, even if the requesting user lacks administrative or usage permissions over that parent CA. This allows attackers to generate subordinate CAs signed by trusted root certificates, exposing private keys and compromising the organizational PKI trust chain.

Alon Barad
Alon Barad
4 views•7 min read