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

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

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 19, 2026·6 min read·2 visits

Executive Summary (TL;DR)

A flaw in Netflix Lemur prior to v1.9.3 allows authenticated operators to bypass Server-Side Request Forgery (SSRF) protections. This is accomplished using DNS rebinding and HTTP redirects during certificate revocation checking (CRL/OCSP), exposing private VPC infrastructure and AWS instance metadata (IMDS).

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.

Vulnerability Overview

Netflix Lemur orchestrates TLS certificate creation, tracking, and validation within enterprise and cloud environments. Prior to version 1.9.3, the validation component tasked with verifying Certificate Revocation List (CRL) distribution points and Online Certificate Status Protocol (OCSP) endpoints, implemented in lemur/certificates/verify.py, contained fundamental architectural weaknesses.

These weaknesses permitted authenticated operators with certificate-upload privileges to upload custom certificates embedded with malicious, attacker-controlled revocation endpoints. This capability exposed an active internal attack surface, allowing attackers to query resources inside private network spaces (RFC1918) or loopback boundaries.

The vulnerability is classified under CWE-918 (Server-Side Request Forgery) and CWE-367 (Time-of-Check Time-of-Use Race Condition). By abusing these flaws, attackers can establish blind outbound connections to local ports, container management endpoints, or cloud provider metadata endpoints (e.g., AWS IMDS), bypassing previous mitigations established for CVE-2026-55162.

Root Cause Analysis

The primary flaw resides in the execution sequence of the URL validation mechanism (_validate_revocation_url) relative to the actual network connections initiated by Lemur.

First, during Certificate Revocation List (CRL) retrieval, the system executed the standard Python requests.get(url) function on the extracted CRL URL. Because the default configuration of the requests library follows HTTP redirects (such as 301, 302, 303, 307, and 308 responses) automatically, an attacker-controlled external domain could pass the initial IP validation phase and then redirect the client connection to an internal address like 169.254.169.254 or 127.0.0.1.

Second, the validation workflow was vulnerable to a DNS Rebinding Time-of-Check Time-of-Use (TOCTOU) race condition. The validation logic initially resolved the target domain to verify that the target IP was not within a restricted, loopback, or link-local subnet range. However, immediately after passing this check, the application initiated a separate, independent network request via requests.get (for CRLs) or via the external openssl ocsp utility (for OCSP verification). This second request triggered a second DNS lookup.

By configuring an authoritative DNS server with a Time-to-Live (TTL) of 0 seconds, an attacker could program the server to return a safe, public IP during the validation phase (Time-of-Check) and then return a private, internal IP during the connection phase (Time-of-Use). This completely bypassed the host validation filter.

Vulnerable vs. Patched Code Path Analysis

An analysis of the fix in commit ed504a830f38a83825b1570302e9f38d6553938a shows how the developer closed both bypass vectors by modifying lemur/certificates/verify.py.

In the patched version, _validate_revocation_url is updated to return the resolved IP address (str(addr)) after performing safety checks. This allows the calling functions to 'pin' the hostname to a specific, validated IP address.

To prevent DNS rebinding, the helper function _pin_url_to_ip(url, resolved_ip) replaces the hostname in the HTTP URL with the validated IP address. Because this replacement breaks HTTPS Server Name Indication (SNI) and TLS host verification, it is strictly restricted to http schemes. To ensure the remote server can route virtual hosts correctly, the original host header is preserved and explicitly passed as an HTTP header.

# Patched implementation in lemur/certificates/verify.py
def _pin_url_to_ip(url, resolved_ip):
    parsed = urlparse(url)
    if parsed.scheme != "http":
        return url
    port = parsed.port
    netloc = f"{resolved_ip}:{port}" if port else resolved_ip
    return parsed._replace(netloc=netloc).geturl()

Additionally, the HTTP redirect vector is mitigated in crl_verify by explicitly setting allow_redirects=False in the requests.get call:

# Patched request invocation in crl_verify
response = requests.get(
    pinned_url,
    timeout=(3.05, 6),
    allow_redirects=False,
    headers={"Host": _host_header(point)},
)

This modification prevents the client from following Location headers, neutralising the redirect bypass. However, the limitation of this patch is that HTTPS endpoints are not pinned to prevent rebinding, meaning a theoretical risk remains if an attacker can manipulate TLS bindings on internal endpoints.

Exploitation Methodology and Attack Vectors

An attacker seeking to exploit CVE-2026-70667 must possess certificate upload privileges on the target Lemur instance. The exploitation can proceed via two primary vectors depending on the targeted revocation path.

Scenario A: HTTP Redirect Bypass (CRL Path)

  1. The attacker sets up an external web server that responds to incoming requests with a 302 Found redirect pointing to http://169.254.169.254/latest/meta-data/.
  2. The attacker generates an X.509 certificate containing a CRL Distribution Point extension pointing to the external server: URI: http://attacker-server.com/crl.crl.
  3. The attacker uploads this certificate via the POST /api/1/certificates/upload endpoint.
  4. Lemur parses the certificate, validates that attacker-server.com resolves to a public IP, and then makes a request to it. The server follows the redirect directly to the AWS IMDS endpoint, returning metadata to the log files or application responses.

Scenario B: DNS Rebinding Bypass (OCSP/CRL Path)

  1. The attacker configures a malicious DNS server for the domain rebind.attacker.com with a TTL of 0.
  2. The DNS server is programmed to resolve the first query to 1.1.1.1 (public) and the second query to 127.0.0.1 (internal loopback).
  3. The attacker uploads a certificate with an Authority Information Access (AIA) extension containing the OCSP URI: http://rebind.attacker.com/ocsp.
  4. Lemur's validation logic queries DNS, receives 1.1.1.1, and validates the URL. Then, the execution tool (openssl ocsp) queries DNS a second time, receives 127.0.0.1, and establishes a TCP handshake with the local interface on the Lemur host.

Technical Impact and Remediation Guidance

The concrete impact of this vulnerability is a complete bypass of SSRF protections on the host server. An attacker can map internal ports, communicate with backend VPC databases, or query orchestrators. In AWS environments, this exposure can lead to the retrieval of IAM credentials, configuration parameters, and access keys from the Instance Metadata Service (IMDSv1).

To address this vulnerability, administrators must upgrade Netflix Lemur instances to version 1.9.3 or later. This version implements resolution pinning and disables HTTP redirects on CRL validation paths.

If immediate updates are not feasible, the following workarounds should be applied:

  1. Restrict administrative access to the POST /api/1/certificates/upload endpoint using role-based access controls.
  2. Implement outbound firewall rules (egress filtering) at the host or VPC network level to prevent the Lemur application process from communicating with private subnets, including the link-local metadata address 169.254.169.254/32.
  3. Ensure AWS IMDSv2 is enforced with a hop limit of 1 to prevent metadata harvesting from containerized environments or reverse-proxy setups.

Official Patches

NetflixOfficial patch commit addressing the SSRF and TOCTOU flaws.

Fix Analysis (1)

Technical Appendix

CVSS Score
6.3/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/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, CWE-367
Attack VectorNetwork
CVSS Score6.3
EPSS PercentileN/A
ImpactServer-Side Request Forgery (SSRF) bypass to internal targets
Exploit StatusConceptual
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 server receives a URL or similar request from an upstream component and retrieves the resource without validating the destination.

Vulnerability Timeline

Security patch committed to repository
2026-06-30
GitHub Security Advisory published
2026-08-18
CVE-2026-70667 assigned and listed in NVD
2026-08-18

References & Sources

  • [1]GitHub Security Advisory GHSA-f3qq-49m6-rw8f
  • [2]Netflix Lemur Patch Commit
  • [3]Netflix Lemur v1.9.3 Release Notes
  • [4]NVD CVE-2026-70667 Detail
  • [5]CVE Record Details

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

•37 minutes ago•CVE-2026-70666
7.4

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

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.

Alon Barad
Alon Barad
1 views•5 min read
•about 3 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 4 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 5 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 6 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
•about 7 hours ago•CVE-2026-71322
4.3

CVE-2026-71322: Missing Authorization Check in Netflix Lemur Certificate Export

Netflix Lemur, a TLS/SSL certificate management framework, contains a missing authorization check in its certificate export endpoint. Prior to version 1.9.3, the validation logic verifying whether a user had permission to export a certificate was incorrectly placed inside a block that executed only if the selected plugin required a private key. When an authenticated user attempted to export a certificate using a plugin that did not require the private key, the authorization check was bypassed, allowing unauthorized access to the public portions of the certificate and producing misleading audit logs.

Alon Barad
Alon Barad
4 views•6 min read