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

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

Alon Barad
Alon Barad
Software Engineer

Aug 19, 2026·7 min read·3 visits

Executive Summary (TL;DR)

An authorization bypass in Netflix Lemur (< 1.9.3) allows low-privileged users to create unauthorized subordinate CAs chained to any trusted root CA, bypassing normal certificate policies and exposing the PKI private keys.

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.

Vulnerability Overview

Netflix Lemur functions as an orchestration and management engine for Public Key Infrastructure (PKI) certificates across enterprise networks. To simplify administrative operations and support developer workflows, Lemur includes a self-service model that allows non-privileged users to request and create new Certificate Authorities (CAs). This capability is governed by the ADMIN_ONLY_AUTHORITY_CREATION configuration setting, which, when configured to False, permits any standard authenticated user to register and generate CA objects.

Under normal operations, a subordinate CA (sub-CA) must be chained to an existing root or intermediate CA. When creating a sub-CA, the user specifies a target parent authority from Lemur's inventory. The API endpoint handling these creation requests is located at POST /api/1/authorities.

The vulnerability, identified as CVE-2026-71317 (GHSA-g7p5-89mh-248h), resides within this endpoint. The endpoint fails to verify if the requesting authenticated user has been granted appropriate operational or administrative rights (AuthorityPermission) over the requested parent CA. Consequently, standard authenticated accounts can chain newly created sub-CAs to highly sensitive root CAs, bypassing the system's intended logical isolation and access control policies.

Root Cause Analysis

The root cause of CVE-2026-71317 is a Broken Object-Level Authorization (BOLA) flaw in the endpoint controller within lemur/authorities/views.py. When a POST request is processed by the AuthoritiesList resource, Lemur validates global privileges using AuthorityCreatorPermission and StrictRolePermission. These checks ensure that the user is permitted to create CA objects in general, which is satisfied by any authenticated user if self-service creation is enabled.

To parse the incoming JSON payload, the application employs Marshmallow serialization schemas. The parent attribute of the payload is resolved using the AssociatedAuthoritySchema. This schema executes database lookups (e.g., fetch_objects) to retrieve the underlying database object for the parent authority based on user-provided identifier values.

Crucially, prior to version 1.9.3, once the parent object was resolved, the controller failed to execute an object-level permission check. The system assumed that the successful retrieval of the parent CA meant the operation could proceed. It did not evaluate whether the user belonged to the administrative roles linked to that specific parent CA resource.

After resolving the parent object, the application hands control over to the configured signing plugin (typically cryptography-issuer). The cryptographic engine retrieves the parent authority's stored private key material (authority_certificate.private_key) and uses it to sign the newly requested subordinate CA certificate. The lack of validation on the parent CA allows standard users to coerce the backend into performing administrative signing operations using restricted cryptographic keys.

Code-Level Analysis and Patch Verification

In vulnerable versions of Lemur (prior to 1.9.3), the post method of the AuthoritiesList class inside lemur/authorities/views.py only validated global creator permissions before invoking the CA generation workflow. The vulnerable logic did not examine the relationship between the active user and the retrieved parent CA.

# Vulnerable implementation in lemur/authorities/views.py
def post(self, data=None):
    permission = AuthorityCreatorPermission()
    if not permission.can() or not StrictRolePermission().can():
        return dict(message="You are not allowed to create a new authority."), 403
 
    # Vulnerability: The parent authority is resolved inside `data` (via schemas)
    # but no authority-specific permissions are evaluated before creation
    new_authority = manager.create(**data)

The official fix in version 1.9.3 (commit 8669011203ca3dd89d9e39bab9ef6850eca723f9) resolves the issue by intercepting the parsed parent CA within the post method and verifying the caller's rights against the parent's assigned roles.

# Patched implementation in lemur/authorities/views.py
def post(self, data=None):
    permission = AuthorityCreatorPermission()
    if not permission.can() or not StrictRolePermission().can():
        return dict(message="You are not allowed to create a new authority."), 403
 
    # Patched: Retrieve and validate parent authority permissions
    parent = data.get("parent")
    if parent:
        parent_roles = [x.name for x in parent.roles]
        if not AuthorityPermission(parent.id, parent_roles).can():
            return dict(message="You are not authorized to use the specified parent authority."), 403
 
    if not validators.is_valid_owner(data["owner"]):
        return dict(message=f"Invalid owner: check if {data['owner']} is a valid group email."), 412

This patch successfully mitigates the vulnerability by ensuring that every sub-CA creation request undergoes a secondary, object-specific check. If the user does not possess administrative or operational roles associated with the parent CA, the controller terminates the execution path and returns an HTTP 403 Forbidden status code, blocking the cryptographic issuer from signing the certificate.

Exploitation Methodology and Attack Vector

To exploit this vulnerability, an attacker must have valid, non-privileged authentication credentials to a Lemur instance that has self-service CA creation enabled (ADMIN_ONLY_AUTHORITY_CREATION = False). The attacker begins by identifying or predicting the ID of an internal Root or parent CA managed by the target Lemur instance (such as the default root authority, which often holds an ID of 1).

The attacker then sends a crafted JSON payload via an HTTP POST request to /api/1/authorities using their active authentication session token. The payload explicitly specifies the targeted restricted parent CA ID within the parent object structure.

{
  "name": "attacker-compromised-subca",
  "owner": "attacker@example.com",
  "common_name": "malicious-subca.corp.internal",
  "type": "subca",
  "parent": {
    "id": 1
  },
  "plugin": {
    "slug": "cryptography-issuer"
  },
  "validityStart": "2026-08-18T00:00:00.000Z",
  "validityEnd": "2036-08-18T00:00:00.000Z"
}

On vulnerable versions, Lemur authorizes the global request, fetches the parent CA with ID 1 from the database, and processes the signing operation using the parent's private key. The response returns the cryptographic parameters of the newly minted subordinate CA, exposing its newly generated private key back to the unauthorized attacker. The attacker can then export this private key to sign arbitrary certificates offline, bypassing all internal controls and logging mechanisms.

Security Impact and Criticality Assessment

The security impact of CVE-2026-71317 is high because it compromises the root of trust within the target organization's PKI. An attacker who successfully generates an unauthorized subordinate CA gains the ability to sign valid, fully trusted SSL/TLS leaf certificates for any domain, service, or identity within the corporate namespace.

This can be leveraged to perform highly effective man-in-the-middle (MitM) attacks, decrypt secure network communications, and forge trusted administrative services. Additionally, because the attacker has direct custody of the subordinate CA's private key, they can establish long-term persistence outside the Lemur management framework, signing new leaf certificates indefinitely even if the vulnerability in Lemur is subsequently patched.

The Common Vulnerability Scoring System (CVSS) v3.1 assigns this vulnerability a base score of 6.5. Although the vulnerability resides in an API endpoint, it requires active authenticated access, resulting in a Local (AV:L) attack vector classification. However, the scope change (S:C) and high integrity impact (I:H) emphasize the systemic risk introduced to the broader corporate domain.

Remediation and Mitigation Guidance

The primary recommendation to resolve CVE-2026-71317 is to upgrade the Netflix Lemur installation to version 1.9.3 or higher. This update introduces the necessary parent authority validation check, blocking unauthorized sub-CA generation attempts at the controller layer. System administrators should verify their current deployment version and execute the standard update procedure.

If an immediate upgrade is not feasible, organizations can fully mitigate the threat by modifying the application's configuration. This is achieved by explicitly restricting CA creation to administrators. Administrators must modify the lemur.conf.py file to set ADMIN_ONLY_AUTHORITY_CREATION = True:

# Restrict authority creation to administrators
ADMIN_ONLY_AUTHORITY_CREATION = True

After applying this configuration change, restart the Lemur web services to enforce the restriction. This effectively blocks non-admin users from accessing the vulnerable endpoint logic, rendering the exploit vector unusable by general users. Security teams should also inspect historical Lemur audit logs and certificate inventories for any unexpected subordinate CAs generated by non-admin users prior to the application of the patch.

Official Patches

NetflixNetflix Lemur 1.9.3 Release

Fix Analysis (1)

Technical Appendix

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

Affected Systems

Netflix Lemur versions prior to 1.9.3

Affected Versions Detail

Product
Affected Versions
Fixed Version
Lemur
Netflix
< 1.9.31.9.3
AttributeDetail
CWE IDCWE-862
Attack VectorLocal
CVSS v3.1 Score6.5
Exploit StatusProof of Concept (PoC)
CISA KEV StatusNot Listed
ImpactHigh Integrity Compromise
Remediation StatusPatched

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-862
Missing Authorization

The software does not perform an authorization check when an actor attempts to access a resource or perform an action.

Known Exploits & Detection

NucleiDetection Template Available

Vulnerability Timeline

Remediation patch developed and committed to master branch.
2026-07-03
Netflix Lemur version 1.9.3 published and vulnerability disclosed.
2026-08-18

References & Sources

  • [1]GHSA-g7p5-89mh-248h Advisory
  • [2]Lemur Fix Commit
  • [3]NVD - CVE-2026-71317
  • [4]CVE.org Record

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

•39 minutes 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
2 views•7 min read
•about 3 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
3 views•6 min read
•about 4 hours ago•GHSA-JF24-8G2H-2WG7
7.2

GHSA-JF24-8G2H-2WG7: Remote Code Execution in LibreNMS AboutController via Binary Path Substitution

A critical security flaw in LibreNMS allows authenticated administrators to execute arbitrary commands by modifying the configured binary path for snmpget and accessing the About page. This occurs due to insufficient verification of the executable file's identity and integrity prior to executing it with shell_exec.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 5 hours ago•GHSA-7CJ5-V4PP-V632
4.8

GHSA-7cj5-v4pp-v632: Stored Cross-Site Scripting in LibreNMS Graph Descriptions

LibreNMS versions prior to 26.7.0 are vulnerable to a stored Cross-Site Scripting (XSS) vulnerability. An authenticated administrator can inject arbitrary HTML or JavaScript into graph descriptions via specific administrative configuration endpoints. When another authenticated user views the affected graph, the unescaped payload executes within their browser context.

Alon Barad
Alon Barad
3 views•5 min read
•about 6 hours ago•GHSA-7GWW-X7FH-JF9J
8.1

GHSA-7GWW-X7FH-JF9J: SSRF-Driven Stored Cross-Site Scripting in LibreNMS Oxidized Integration

An injection vulnerability in LibreNMS's Oxidized integration component allows administrative or network-positioned attackers to achieve stored cross-site scripting (XSS). By setting a malicious oxidized.url endpoint, the server makes outbound queries and processes returned JSON fields containing malicious HTML or JavaScript. These payloads are outputted directly in the web UI without appropriate output encoding.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 7 hours ago•CVE-2026-17106
7.1

CVE-2026-17106: Container-to-Host Arbitrary File Write in moby/go-archive (CopyEscape)

CVE-2026-17106 (CopyEscape) is a container-to-host arbitrary file-write vulnerability within Docker's archiving and extraction library moby/go-archive. By utilizing a Time-of-Check to Time-of-Use (TOCTOU) race condition during the file-walking stage inside a running container, a malicious container process can force the host engine to produce a compromised tar stream. During client-side extraction, the Docker CLI resolves directory entries through absolute symbolic links, resulting in arbitrary file creation or modification on the host system.

Amit Schendel
Amit Schendel
4 views•6 min read