Description
Lemur manages TLS certificate creation. Prior to 1.9.1, StrictRolePermission and AuthorityCreatorPermission in lemur/auth/permissions.py call flask_principal.Permission.__init__() with zero Need objects when ADMIN_ONLY_AUTHORITY_CREATION and LEMUR_STRICT_ROLE_ENFORCEMENT are unset because both flags default to False. Flask-Principal Permission.allows() returns True when self.needs is empty, so the .can() authorization gate permits every authenticated identity, including the read-only role. A read-only user can access POST /api/1/authorities, POST /api/1/certificates/upload, POST /api/1/pending_certificates//upload, POST /api/1/notifications, PUT or DELETE /api/1/notifications/, and POST /api/1/domains to create root Certificate Authorities, upload arbitrary certificates, create or edit notifications that reach an SSRF sink, and create domain entries. Explicitly setting either flag to False continues to opt into the permissive behavior. This issue is fixed in version 1.9.1.
Published: 2026-08-18
Score: 8.8 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

StrictRolePermission and AuthorityCreatorPermission are instantiated with no Need objects when two configuration flags are unset, meaning that authorization checks automatically allow any authenticated identity. A user with a read‑only role can therefore hit privileged API endpoints—creating root certificate authorities, uploading arbitrary certificates, editing notifications and domains—and can also trigger SSRF attacks against internal resources. The flaw is a classic example of authorization bypass, which can expose confidentiality through forged certificates, integrity via unauthorized configuration changes, and availability if the system is misused to flood or redirect traffic.

Affected Systems

All releases of Netflix's Lemur before version 1 . 9 . 1 contain this flaw. The affected components are housed in lemur/auth/permissions.py and expose the bug through the public REST API endpoints listed in the advisory. Upgrading to v1.9.1 or later resolves the issue; no other vendor or version is affected.

Risk and Exploitability

The CVSS score of 8.8 reflects a high severity, and while an EPSS score is not disclosed, the vulnerability is not in the KEV catalogue, suggesting no widely known public exploits yet. Attackers need only an authenticated session with a read‑only role, making the exploit trivial over the network. The remote nature of the API and the lack of additional authentication steps lower the barrier to exploitation.

Generated by OpenCVE AI on August 18, 2026 at 19:47 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Lemur to version 1.9.1 or later.
  • If an upgrade is delayed, enable strict enforcement flags (ADMIN_ONLY_AUTHORITY_CREATION and LEMUR_STRICT_ROLE_ENFORCEMENT) so that permissions are never initialized with an empty need set.
  • Revoke or restrict the read‑only role’s access to privileged endpoints such as /api/1/authorities, /api/1/certificates/upload, and similar administrative routes.
  • Deploy monitoring to alert on unexpected creation of root certificate authorities or uploads of unauthorized certificates.

Generated by OpenCVE AI on August 18, 2026 at 19:47 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-qcqw-jwxc-2hqg Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
History

Tue, 18 Aug 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Tue, 18 Aug 2026 19:45:00 +0000

Type Values Removed Values Added
First Time appeared Netflix
Netflix lemur
Vendors & Products Netflix
Netflix lemur

Tue, 18 Aug 2026 18:15:00 +0000

Type Values Removed Values Added
Description Lemur manages TLS certificate creation. Prior to 1.9.1, StrictRolePermission and AuthorityCreatorPermission in lemur/auth/permissions.py call flask_principal.Permission.__init__() with zero Need objects when ADMIN_ONLY_AUTHORITY_CREATION and LEMUR_STRICT_ROLE_ENFORCEMENT are unset because both flags default to False. Flask-Principal Permission.allows() returns True when self.needs is empty, so the .can() authorization gate permits every authenticated identity, including the read-only role. A read-only user can access POST /api/1/authorities, POST /api/1/certificates/upload, POST /api/1/pending_certificates//upload, POST /api/1/notifications, PUT or DELETE /api/1/notifications/, and POST /api/1/domains to create root Certificate Authorities, upload arbitrary certificates, create or edit notifications that reach an SSRF sink, and create domain entries. Explicitly setting either flag to False continues to opt into the permissive behavior. This issue is fixed in version 1.9.1.
Title Lemur: Authorization bypass in StrictRolePermission / AuthorityCreatorPermission
Weaknesses CWE-863
References
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-18T19:31:21.754Z

Reserved: 2026-05-21T16:18:10.618Z

Link: CVE-2026-48508

cve-icon Vulnrichment

Updated: 2026-08-18T19:31:18.199Z

cve-icon NVD

Status : Received

Published: 2026-08-18T18:17:41.073

Modified: 2026-08-18T20:17:15.540

Link: CVE-2026-48508

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-18T20:00:04Z

Weaknesses