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

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

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 19, 2026·6 min read·16 visits

Executive Summary (TL;DR)

An incomplete patch in Netflix Lemur allows users with authority roles to bypass host allowlists. By submitting a crafted PUT request, attackers can overwrite the ACME directory URL with internal IP addresses, causing the Lemur backend to perform unauthorized outbound connections.

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.

Vulnerability Overview

Netflix Lemur functions as a TLS certificate orchestration framework designed to automate certificate generation and deployment. Within Lemur, certificate authorities are created and configured to interact with Automated Certificate Management Environment (ACME) endpoints. The platform relies on configuration directives to control external network operations, defining a strict allowlist of approved ACME directory destinations.

During previous security audits, CVE-2026-55166 was discovered and partially remediated in version 1.9.2. The initial fix implemented a validation routine that checked user-supplied ACME directory URLs against the ACME_DIRECTORY_HOST_ALLOWLIST configuration block. However, this defense-in-depth measure was only integrated into the creation workflow of new authorities, leaving the modification endpoints exposed.

This gap results in a Server-Side Request Forgery (SSRF) vulnerability designated as CVE-2026-71303. An authenticated attacker who holds authority modification privileges can manipulate existing parameters to point to internal services. Consequently, the Lemur backend can be coerced into connecting to restricted network entities, such as the cloud Instance Metadata Service.

Root Cause Analysis

The fundamental vulnerability lies in the logical separation between the creation and modification codepaths inside Lemur's authority management engine. When an administrator creates an authority, Lemur invokes the create_authority function. This function references a helper function named _validate_acme_url within the ACME plugin module to parse and verify the target hostname.

In contrast, the authority modification process utilizes a distinct service function inside lemur/authorities/service.py. When an authorized user issues an HTTP PUT request to /api/1/authorities/<id>, the request parameters are routed to the service's update() method. This method accepts the payload parameters, including the options dictionary block, and updates the database records directly.

Prior to version 1.9.3, the update() service method did not apply the validation checks built for the creation workflow. As a result, any modified ACME directory parameters bypass validation check cycles. The values are committed to the application database and subsequently read during normal cryptographic operations, triggering outbound calls to unauthorized destinations.

Code-Level Technical Review

Analyzing the code diff reveals how the validation functions were reorganized and integrated into the update routine. In the vulnerable implementation, the validation function was defined as a private method within the ACME plugin module.

# Vulnerable private method in lemur/plugins/lemur_acme/plugin.py
-def _validate_acme_url(url):
+def validate_acme_url(url):
     """Reject acme_url values that are not in the configured allowlist.
 
     Called at authority creation time only — existing authorities in the DB

By renaming _validate_acme_url to the public validate_acme_url, the development team made the verification logic accessible to external service components. Within lemur/authorities/service.py, the update function was subsequently refactored to catch unauthorized parameters on update:

# Patched implementation in lemur/authorities/service.py
 def update(authority_id, description, owner, active, roles, options: Optional[str] = None):
     authority.description = description
     authority.owner = owner
     if options:
+        # acme_url can be changed here too, so it must be re-validated against the
+        # allowlist the same way it is at authority creation time (GHSA-v5rc-cpwc-cfpr)
+        from lemur.plugins.lemur_acme.plugin import validate_acme_url
+
+        for option in json.loads(options):
+            if option.get("name") == "acme_url":
+                validate_acme_url(option.get("value", ""))
         authority.options = options

This ensures that whenever the update service method processes an options block, it deserializes the configuration list, searches for any parameter labeled acme_url, and passes its associated value to validate_acme_url. If the value fails the hostname validation, the process throws an exception, and the database transaction is aborted.

Attack Vector & Exploitation Flow

To exploit this vulnerability, an attacker must have an active user account associated with a role that is authorized to edit authority configurations. This represents a low-privilege requirement within the application's internal access model. The attack is executed over HTTP through a standard API interaction.

The attacker first identifies an existing ACME authority identifier and targets the update API endpoint: PUT /api/1/authorities/<id>. The payload consists of an options array designed to override the ACME directory URL. This parameter is changed from a standard certificate authority URL to an internal network address.

[
  {
    "name": "acme_url",
    "value": "http://169.254.169.254/latest/meta-data/"
  }
]

Once the database record is updated, the attacker initiates a certificate creation flow that utilizes this authority. The backend schedules the task and attempts to fetch ACME directory resources from the newly configured URL. The Lemur server makes a GET request to the local link-local address, retrieving internal cloud details or API resources and forwarding them through system responses.

Impact Assessment

The impact of this SSRF is evaluated with a CVSS base score of 7.7. The vulnerability receives a changed scope (S:C) designation because the security posture of resources external to Lemur is altered. Specifically, resources isolated within the internal cloud environment are exposed to requests initiated by the application.

In standard cloud architectures, instances running Lemur may have access to the AWS Instance Metadata Service (IMDS). If IMDSv1 is enabled or if IMDSv2 hop limits are misconfigured, requests targeting 169.254.169.254 can leak temporary security credentials assigned to the host. These credentials can be harvested to gain lateral access to other cloud services.

Additionally, the vulnerability exposes internal microservices, configuration servers, and database APIs that sit behind host perimeter firewalls. Because the outbound connection originates from Lemur's trusted host IP address, internal firewalls will permit the connections, bypassing network boundary protections.

Remediation and Fix Completeness

The primary remediation strategy is upgrading to Netflix Lemur version 1.9.3. This version applies correct verification checks to both create and update operations, eliminating the configuration validation bypass. If patching cannot be performed immediately, temporary operational controls should be established.

Administrators should configure host firewalls on the Lemur application servers to deny outbound connections to internal private IP spaces, specifically RFC 1918 subnets and the link-local metadata range. For environments deployed on Amazon Web Services, enforcing IMDSv2 with a maximum hop limit of 1 prevents unauthorized container or runtime interactions from retrieving host credentials.

While the code modifications in 1.9.3 address the direct route bypass, security teams must note that the validation continues to rely on domain-level checks. If the downstream HTTP library handles URL parsing differently from the Python standard library, parser differentials may allow bypasses. DNS rebinding also remains a theoretical vector if hostnames are verified at resolution time but resolved to local IPs during operational execution.

Fix Analysis (1)

Technical Appendix

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

Affected Systems

Netflix Lemur certificate management environments deployed prior to version 1.9.3

Affected Versions Detail

Product
Affected Versions
Fixed Version
Lemur
Netflix
< 1.9.31.9.3
AttributeDetail
CWE IDCWE-918
Attack VectorNetwork
CVSS Severity7.7 High
EPSS ScoreNot Calculated
ImpactServer-Side Request Forgery leading to unauthorized internal access or credential leakage
Exploit StatusNo public weaponized exploits available
KEV StatusNot listed in CISA KEV Catalog

MITRE ATT&CK Mapping

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

The web server receives a URL or similar vector from an upstream application and does not sufficiently ensure that the request is being sent to an expected, secure destination.

Vulnerability Timeline

Netflix releases Lemur version 1.9.2 to address the initial SSRF vulnerability (CVE-2026-55166).
2026-06-10
Security researchers identify the bypass mechanism on update. Code fix is written to address the vulnerability.
2026-07-01
Official CVE-2026-71303 entry is published by GitHub Security Advisories and synced to the NVD database.
2026-08-18

References & Sources

  • [1]GitHub Security Advisory GHSA-v5rc-cpwc-cfpr
  • [2]Netflix Lemur Fix Commit edca0390f930344d65ff4ca37a669c2320e3dfad
  • [3]Netflix Lemur Release Tag v1.9.3
  • [4]GitHub Security Advisory GHSA-v2wp-frmc-5q3v (CVE-2026-55166)
  • [5]CVE-2026-71303 Record on CVE.org
  • [6]NVD Vulnerability Details for CVE-2026-71303

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

•1 day ago•CVE-2026-11748
6.9

CVE-2026-11748: Unauthenticated LDAP Injection in Central Dogma Server Authentication

An LDAP injection vulnerability exists in the centraldogma-server-auth-shiro module of LY Corporation Central Dogma before version 0.84.0. The search logic dynamically constructs LDAP search filters by interpolating user-provided usernames without escaping RFC 4515 metacharacters. Unauthenticated remote attackers can leverage this flaw to bypass authentication, enumerate directory hierarchies, and access unauthorized resources.

Alon Barad
Alon Barad
9 views•6 min read
•1 day ago•CVE-2026-11746
9.4

CVE-2026-11746: Use of Hard-coded ZooKeeper Replication Secret 'ch4n63m3' in Central Dogma Server

CVE-2026-11746 is a critical vulnerability in Central Dogma Server prior to version 0.84.0, where an embedded ZooKeeper replication secret silently falls back to a publicly known, hard-coded default string ('ch4n63m3'). Remote attackers with access to the replication network can authenticate as legitimate cluster peers, potentially leading to unauthorized data exposure, state manipulation, or complete cluster takeover.

Amit Schendel
Amit Schendel
7 views•6 min read
•1 day ago•CVE-2026-56665
4.2

CVE-2026-56665: Logical Validation Bypass in ZITADEL External JWT Identity Provider

A logical verification flaw in ZITADEL's external JWT Identity Provider validation allows attackers to bypass session expiration checks. If an incoming JWT lacks the 'exp' claim, the system skips validation entirely, creating an indefinitely valid session. This issue has been addressed in versions 3.4.12 and 4.15.2.

Alon Barad
Alon Barad
6 views•7 min read
•1 day ago•CVE-2026-59149
6.5

CVE-2026-59149: Sibling Directory Path Traversal in Mockoon Backend Server

CVE-2026-59149 identifies a directory traversal vulnerability in `@mockoon/commons-server`, the backend mock-server library powering the Mockoon application. The flaw occurs in the path containment validation logic used during raw file response generation. An unauthenticated attacker can exploit this weakness to retrieve arbitrary files from sibling directories sharing a common prefix with the designated static base directory.

Amit Schendel
Amit Schendel
9 views•5 min read
•1 day ago•CVE-2026-59148
8.8

CVE-2026-59148: Unauthenticated Administrative API and CORS Misconfiguration in Mockoon

An in-depth analysis of CVE-2026-59148, a high-severity flaw in Mockoon where unauthenticated administrative endpoints and a wildcard Cross-Origin Resource Sharing (CORS) policy allow remote execution, state poisoning, and credential theft.

Alon Barad
Alon Barad
11 views•6 min read
•1 day ago•CVE-2026-56666
4.8

CVE-2026-56666: Account Takeover via Improper Email Verification in ZITADEL Federated Identity Handler

An improper authentication vulnerability (CWE-287) in ZITADEL's external identity provider handler before version 4.15.3 allows remote attackers to perform complete account takeover. When auto-linking by email is enabled, ZITADEL verifies that the local target account has a verified email address but fails to verify if the external provider confirmed ownership of that same email. Attackers can exploit this by registering an unverified account with a victim's email address on a permissive external provider, leading to unauthorized account binding and persistent access.

Amit Schendel
Amit Schendel
7 views•7 min read