lemur
Certificate management and orchestration service
Activity
- Latest release
- 2mo ago
- Total releases
- 20
- Cadence
- ~30 days
- Last 12 months
- 4
Reach
- Stars
- —
Details
- License
- Apache-2.0
- First release
- Nov 16, 2020
| Version | Released | |
|---|---|---|
1.9.3
patch
| ||
1.9.2
patch
8 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
1.9.1
patch
13 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev | ||
1.9.0
minor
14 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev | ||
1.8.2
patch
16 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev | ||
1.8.1
patch
16 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev | ||
1.8.0
minor
16 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev | ||
1.7.0
minor
16 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev | ||
1.6.0
minor
16 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev | ||
1.5.0
minor
16 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev | ||
1.4.0
minor
16 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev | ||
1.3.2
patch
16 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev | ||
1.3.1
minor
17 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev
CVE-2023-30797
PYSEC-2023-20
GHSA-5fqv-mpj8-h7gm
Apr 19, 2023
Netflix Lemur before version 1.3.2 used insufficiently random values when generating default credentials. The insufficiently random values may allow an attacker to guess the credentials and gain access to resources managed by Lemur. Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
Fixed in
1.3.2
References Updated Nov 08, 2023 · Source: OSV.dev | ||
1.2.0
minor
17 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev
CVE-2023-30797
PYSEC-2023-20
GHSA-5fqv-mpj8-h7gm
Apr 19, 2023
Netflix Lemur before version 1.3.2 used insufficiently random values when generating default credentials. The insufficiently random values may allow an attacker to guess the credentials and gain access to resources managed by Lemur. Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
Fixed in
1.3.2
References Updated Nov 08, 2023 · Source: OSV.dev | ||
1.1.0
minor
17 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev
CVE-2023-30797
PYSEC-2023-20
GHSA-5fqv-mpj8-h7gm
Apr 19, 2023
Netflix Lemur before version 1.3.2 used insufficiently random values when generating default credentials. The insufficiently random values may allow an attacker to guess the credentials and gain access to resources managed by Lemur. Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
Fixed in
1.3.2
References Updated Nov 08, 2023 · Source: OSV.dev | ||
1.0.0
major
17 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev
CVE-2023-30797
PYSEC-2023-20
GHSA-5fqv-mpj8-h7gm
Apr 19, 2023
Netflix Lemur before version 1.3.2 used insufficiently random values when generating default credentials. The insufficiently random values may allow an attacker to guess the credentials and gain access to resources managed by Lemur. Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
Fixed in
1.3.2
References Updated Nov 08, 2023 · Source: OSV.dev | ||
0.11.0
minor
17 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev
CVE-2023-30797
PYSEC-2023-20
GHSA-5fqv-mpj8-h7gm
Apr 19, 2023
Netflix Lemur before version 1.3.2 used insufficiently random values when generating default credentials. The insufficiently random values may allow an attacker to guess the credentials and gain access to resources managed by Lemur. Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
Fixed in
1.3.2
References Updated Nov 08, 2023 · Source: OSV.dev | ||
0.9.0
minor
17 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev
CVE-2023-30797
PYSEC-2023-20
GHSA-5fqv-mpj8-h7gm
Apr 19, 2023
Netflix Lemur before version 1.3.2 used insufficiently random values when generating default credentials. The insufficiently random values may allow an attacker to guess the credentials and gain access to resources managed by Lemur. Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
Fixed in
1.3.2
References Updated Nov 08, 2023 · Source: OSV.dev | ||
0.8.1
patch
17 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev
CVE-2023-30797
PYSEC-2023-20
GHSA-5fqv-mpj8-h7gm
Apr 19, 2023
Netflix Lemur before version 1.3.2 used insufficiently random values when generating default credentials. The insufficiently random values may allow an attacker to guess the credentials and gain access to resources managed by Lemur. Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
Fixed in
1.3.2
References Updated Nov 08, 2023 · Source: OSV.dev | ||
0.8.0
initial
17 CVEs
CVE-2026-71417
PYSEC-2026-3678
GHSA-pxmc-2ffp-8j67
Aug 19, 2026
Lemur: Any user can revoke arbitrary certificates at the CA by uploading a duplicate record and revoking it
7.3
/ 10
High
Local
Low
Low
None
Changed
None
Low
High
SummaryRepo under test: https://github.com/Netflix/lemur
An attacker can therefore read a target certificate's public Affected route
Affected code
ImpactA low-privileged authenticated insider (or holder of a stolen non-admin token/API key) can revoke any certificate managed by Lemur — including high-value certificates they do not own and certificates currently attached to live endpoints — directly at the issuing CA. Iterating over Root causeRevocation authority is bound to ownership of the Lemur DB row, not to the CA-side certificate identity. Because upload allows creating a second row that aliases the same CA-side certificate (same Validated evidenceStatic path trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA — revoking at a real CA is destructive). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixDecouple CA-side revocation authority from Lemur row ownership:
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71322
PYSEC-2026-3673
GHSA-4h97-p9wq-chqj
Aug 19, 2026
Lemur: Missing authorization check on POST /certificates/<id>/export for plugins with requires_key = False
4.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
None
None
SummaryThe Root Cause
The authorization gate is structurally inside the The only currently shipping
Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/ ImpactIn the current codebase:
Latent risk:
RemediationLift the authorization check out of the
This makes the authorization gate independent of the plugin's Steps to Reproduce
The log row shows Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71317
PYSEC-2026-3677
GHSA-g7p5-89mh-248h
Aug 19, 2026
Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority
6.5
/ 10
Medium
Local
Low
Low
None
Changed
None
High
None
SummaryRepo under test: https://github.com/Netflix/lemur When Any authenticated non-read-only user can therefore mint a sub-CA chained to any internal root whose private key Lemur holds — including roots they hold no role on — attach a role they already belong to, and immediately issue or offline-sign trusted leaf certificates for arbitrary names. Affected route
Affected code
ImpactIn deployments that set
This converts "can create a self-contained test CA" into "can mint trusted certs under any internal PKI root in the organisation". The Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions:
The response contains a new authority whose Static-trace validation command from the source report:
Source artifact: Suggested fixIn Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71308
PYSEC-2026-3675
GHSA-cfh6-pv5c-38jv
Aug 19, 2026
Lemur: Unchecked `replaces[]` lets any user silence notifications and hijack auto-rotation for arbitrary certificates
8.1
/ 10
High
Network
Low
Low
None
Unchanged
None
High
High
SummaryRepo under test: https://github.com/Netflix/lemur The certificate create and upload endpoints accept a Any authenticated non-read-only user can therefore silently substitute their own certificate onto production load balancers and Kubernetes secrets they hold no role on, while suppressing the legitimate certificate's lifecycle automation. Affected route
Affected code
ImpactAn authenticated insider or holder of a stolen low-privilege token can, without holding any role on a target certificate:
Minimum impact is fleet-wide TLS denial of service equivalent to mass revocation. Where internal clients trust the substituted chain (or combined with the sub-CA finding LEMUR-BUG-07), it escalates to TLS interception. This directly violates the invariant that a user may only modify or revoke a certificate if they are its owner, a member of an owning role, or an administrator. Root cause
Validated evidenceStatic trace, confirmed by code inspection (validation status:
Proof of concept / reproducerStatus: reconstructed from source report (static control-flow trace; not executed against a live CA). Preconditions: attacker is an authenticated Lemur user holding any role other than
Static-trace validation command from the source report:
Source artifact: Suggested fixBefore persisting Affected versions
0.11.0
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
1.6.0
+ 7 more Show less
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71307
PYSEC-2026-3674
GHSA-6c8m-q6g9-vrw3
Aug 19, 2026
Lemur: Authenticated low-privilege users can read plaintext destination credentials (SFTP password / private-key passphrase) via the destinations API
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryLemur's destination read endpoints -- The built-in SFTP destination plugin ( DetailsRead endpoints lack the authorization that their write siblings enforce:
The output schema emits all option values, including secret ones:
There is no PoCReproduction of Lemur's exact serialization path (verbatim
Output (truncated) -- the plaintext secrets appear in both
End-to-end, as a low-privilege (or read-only) user holding a normal Lemur JWT:
ImpactConfidentiality breach of deployment credentials. Any authenticated Lemur user -- regardless of role, including users intentionally limited to Suggested fix: gate the destination GET handlers with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-71303
PYSEC-2026-3679
GHSA-v5rc-cpwc-cfpr
Aug 19, 2026
Lemur: Incomplete fix for GHSA-v2wp-frmc-5q3v -- ACME authority update endpoint allows non-admin to replace `acme_url` with internal IP, bypassing allowlist
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryThe fix for GHSA-v2wp-frmc-5q3v added DetailsWhere the fix lives (POST path -- protected):
Where the gap is (PUT path -- unprotected):
Where the SSRF sink is:
With the default configuration ( PoCPrerequisites:
Step 1 -- Authenticate as the non-admin user (role: TestRootCA_operator):
Response (truncated):
Step 2 -- Confirm identity (non-admin, no global operator role):
Response:
Step 3 -- Overwrite acme_url with an internal IMDS endpoint via authority update:
Response (HTTP 200 -- no validation error):
Live validation output (observed on Lemur 1.9.2, 2026-06-19):
Step 4 -- Trigger SSRF: Issue any certificate via authority 1 (using the same or any other user with certificate issuance rights). Lemur's celery worker calls
The backend issues an HTTP GET to Suggested fix: Call
ImpactAn authenticated Lemur user who has been granted membership in any ACME authority's role group can overwrite that authority's Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70667
PYSEC-2026-3676
GHSA-f3qq-49m6-rw8f
Aug 19, 2026
Lemur: SSRF protection in certificate revocation checking bypassable via HTTP redirects and DNS rebinding (incomplete fix for GHSA-54vg-pfh7-jq95)
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe SSRF mitigation added for GHSA-54vg-pfh7-jq95 ( Affected versionTested against Bypass 1 — HTTP redirect (deterministic)The guard validates only the URL in the certificate; the CRL fetch then follows redirects without re-validating the target:
The attacker hosts the CRL URL on a public host they control (passes the guard); that host returns Bypass 2 — DNS rebinding / TOCTOU (probabilistic)The guard resolves once during validation; the fetch re-resolves independently:
A low-TTL attacker name that answers a public IP at check time and an internal IP at fetch time passes the guard but is fetched internally. Same gap affects the OCSP path ( Relationship to GHSA-54vg-pfh7-jq95Incomplete-fix of that mitigation, not a duplicate. Bypass 1 is not mentioned there; bypass 2 is the rebinding gap that advisory's remediation text anticipated ("pins the resolved IP") but the code does not implement. Affected endpoint
PoC
ImpactBlind SSRF from the Lemur host: reach internal services and instance metadata (169.254.169.254 without IMDSv2). Response is parsed as a CRL and discarded — reachability/side-effects, not response exfiltration. Remediation
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-70666
PYSEC-2026-3680
GHSA-xpmj-wjcp-6pww
Aug 19, 2026
Lemur: Server-Side Request Forgery via the ACME client following server-controlled URLs
7.4
/ 10
High
Network
Low
Low
None
Changed
Low
Low
Low
SummaryThe ACME client (used to issue certificates from Let's Encrypt / Google Public CA / private ACME CAs) connects to an DetailDefect A - allowlist only at creation.
Defect B - ACME client follows server-supplied URLs.
A malicious ACME server can return internal URLs for all of these. Authorization on update: Source-to-sink trace:
Steps to Reproduce (POC)Step 1 - Attacker runs a malicious ACME directory server (e.g.
Step 2 - Attacker (authority-role member) repoints an existing ACME authority:
Step 3 - Issue a certificate against the repointed authority (via UI/API):
The Lemur ACME client connects to
Impact
Fix
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 8 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
1.9.2
Fixed in
1.9.3
References
Updated Aug 19, 2026 · Source: OSV.dev
CVE-2026-55165
PYSEC-2026-2589
GHSA-r9gp-7f88-9r54
Jul 13, 2026
Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
4.8
/ 10
Medium
Network
High
None
None
Unchanged
Low
Low
None
Field | Value -- | -- Title | Lemur 1.9.0: JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure Component | lemur/lemur/auth/service.py:130-137 CWE | CWE-347 (Improper Verification of Cryptographic Signature) Attack Prerequisite | Defense-in-depth gap on its own — no single-request exploit against PyJWT 2.x. Single-request ATO requires a separate disclosure issue that leaks LEMUR_TOKEN_SECRET, or a future migration to asymmetric signing without fixing this sink. Affected Versions | github.com/Netflix/lemur version = "1.9.0". Same code present in every prior release that has the auth/service.py:130 block. Exploit Code & Lab Set-up
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55164
PYSEC-2026-2587
GHSA-q437-g7fv-2jvv
Jul 13, 2026
Lemur user-update path stores plaintext passwords
4.9
/ 10
Medium
Network
Low
High
None
Unchanged
High
None
None
Summary
Root Cause
No Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/users/
ImpactWhen an administrator changes a user's password via The more serious consequence is a defense-in-depth bypass. Bcrypt is the protection that prevents a database compromise from yielding usable credentials. With plaintext rows present, an attacker who exfiltrates the The bug specifically affects admin-driven password resets, which are the normal post-incident workflow and exactly when plaintext storage is most harmful. Steps to Reproduce
RemediationRegister the listener for both events:
Alternative, equivalent fix in the service layer:
The listener fix is preferred because it closes the gap for any future code path that mutates A one-time migration is recommended to detect and re-hash any rows already stored in cleartext. Bcrypt hashes begin with Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55163
PYSEC-2026-2591
GHSA-x3vf-mgxj-7785
Jul 13, 2026
Lemur Privilege Escalation: Non-admin role members can rewrite role membership via PUT /api/1/roles/<id>
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryThe Root Cause
Affected Endpoints| Method | Path | Source |
|---|---|---|
| PUT | /api/1/roles/ ImpactA user who is a member of role X can:
RemediationAdd
If selective delegation is intended (role owners managing their own roles), that capability should be modeled with a dedicated permission class whose Needs reflect role ownership rather than membership, and the Steps to Reproduce
Step 4 succeeds despite Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55162
PYSEC-2026-2586
GHSA-54vg-pfh7-jq95
Jul 13, 2026
Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF
6.3
/ 10
Medium
Network
Low
Low
None
Unchanged
Low
Low
Low
SummaryWhen verifying an uploaded certificate, Root Cause
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-list of hostnames, no scheme restriction beyond rejecting LDAP via Affected Endpoints| Method | Path | Source |
|---|---|---|
| POST | /api/1/certificates/upload | The bug additionally surfaces anywhere ImpactAn operator-role attacker can:
RemediationFilter the URL before it reaches the network sink. Either:
Additionally, bound Steps to Reproduce
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-48508
PYSEC-2026-2588
GHSA-qcqw-jwxc-2hqg
Jul 13, 2026
Lemur has an authorization bypass in StrictRolePermission / AuthorityCreatorPermission
8.8
/ 10
High
Network
Low
Low
None
Unchanged
High
High
High
Summary
Flask-Principal's A user holding only Root Cause
When Affected EndpointsViews whose only authorization check is | Method | Path | Source | |----------|-------------------------------------------|-----------------------------------------| | POST | /api/1/authorities | lemur/authorities/views.py:231 | | POST | /api/1/certificates/upload | lemur/certificates/views.py:651 | | POST | /api/1/pending_certificates/<id>/upload | lemur/pending_certificates/views.py:545 | | POST | /api/1/notifications | lemur/notifications/views.py:227 | | PUT/DEL | /api/1/notifications/<id> | lemur/notifications/views.py:370,384 | | POST | /api/1/domains | lemur/domains/views.py:131 |
Note on scope: ImpactA user holding only the
Combined with any low-privilege credential leak (phished employee, leaked SSO token) or insider access, this is a pivot from "any authenticated identity" to control of the PKI issuance plane. RemediationThe config flag defaults for
Note: The opt-out branches (empty Needs) remain in the code. Operators who explicitly set Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 6 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
Fixed in
1.9.1
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44304
PYSEC-2026-2585
GHSA-3r34-vq8m-39gh
Jul 13, 2026
Lemur: LDAP Filter Injection enables post-authentication privilege escalation
8.1
/ 10
High
Network
Low
Low
None
Unchanged
High
High
None
DescriptionOverviewLemur's LDAP authentication module ( Vulnerable CodeLocation: Filter 1 — User lookup (line ~161):
Filter 2 — Active Directory group lookup (line ~189):
The ImpactAn authenticated LDAP user can:
Exploitation ConstraintThe Steps to Reproduce
RemediationApply
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-44305
PYSEC-2026-2590
GHSA-vr7c-r5gj-j3w5
Jul 13, 2026
Lemur: LDAP Authentication Globally Disables TLS Certificate Verification When LDAP_USE_TLS Is Enabled
6.8
/ 10
Medium
Adjacent
High
None
None
Unchanged
High
High
None
DescriptionOverviewWhen LDAP TLS is enabled ( Vulnerable CodeLocation:
Key issues:
ImpactA network-positioned attacker (man-in-the-middle) between Lemur and the LDAP server can:
This is particularly severe because Lemur is a certificate management system — the tool designed to manage TLS security is itself vulnerable to a TLS attack. Steps to Reproduce
RemediationRemove the global TLS verification bypass and default to strict verification:
If backward compatibility is needed, make it configurable with a secure default:
Resources
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 5 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
Fixed in
1.9.0
References
Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-55166
PYSEC-2026-384
GHSA-v2wp-frmc-5q3v
Jun 29, 2026
Lemur: ACME SSRF + creator-equality IDOR lead to AWS IAM/PKI compromise
9.9
/ 10
Critical
Network
Low
Low
None
Changed
High
High
Low
Field | Value -- | -- Title | Lemur 1.9.0: any SSO-authenticated user achieves AWS IAM compromise and permanent PKI key access via ACME acme_url SSRF and creator-equality IDOR Component | lemur/lemur/plugins/lemur_acme/acme_handlers.py:161-201 (SSRF), lemur/lemur/certificates/views.py:734 (IDOR), lemur/lemur/auth/views.py:300-308 (SSO auto-provision) CWE | CWE-918 (SSRF) + CWE-639 (Authorization Bypass Through User-Controlled Key) + CWE-285 (Improper Authorization) Attack Prerequisite | A valid SSO session against the deployment's IdP. Lemur auto-provisions any new SSO identity at active=True, so an attacker with corporate SSO (or any federated IdP Lemur trusts) clears this bar. Affected Versions | github.com/Netflix/lemur version = "1.9.0" (see lemur/lemur/about.py) and every prior release that carries the same three sinks. Exploit Code & Lab Set-upLemur-acme-ssrf-creator-idor.zip
Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
1.3.2
1.4.0
1.5.0
+ 7 more Show less
1.6.0
1.7.0
1.8.0
1.8.1
1.8.2
1.9.0
1.9.1
Fixed in
1.9.2
References Updated Jul 01, 2026 · Source: OSV.dev
CVE-2023-30797
PYSEC-2023-20
GHSA-5fqv-mpj8-h7gm
Apr 19, 2023
Netflix Lemur before version 1.3.2 used insufficiently random values when generating default credentials. The insufficiently random values may allow an attacker to guess the credentials and gain access to resources managed by Lemur. Affected versions
0.11.0
0.2.1
0.8.0
0.8.1
0.9.0
1.0.0
1.1.0
1.2.0
1.3.1
Fixed in
1.3.2
References Updated Nov 08, 2023 · Source: OSV.dev |