Description
Lemur manages TLS certificate creation. Prior to 1.9.2, the JWT verifier in lemur/auth/service.py:130-137 used fetch_token_header to read header_data["alg"] from an unverified token and passed that attacker-controlled value to decode_with_multiple_secrets. PyJWT 2.x rejects alg=none with the configured key, so the flaw is a defense-in-depth gap rather than a direct authentication bypass in the shipped configuration. The unpinned algorithm can become exploitable after an asymmetric-signing migration through algorithm confusion, and it weakens algorithm-based anomaly detection because the token chooses the recorded value. A separate disclosure of LEMUR_TOKEN_SECRET would also permit forged HS256 tokens, although that disclosure is an independent prerequisite. The fix introduces the server-controlled LEMUR_TOKEN_ALGORITHMS allowlist and defaults it to HS256. This issue is fixed in version 1.9.2.
Published: 2026-08-18
Score: 4.8 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Lemur JWT verifier reads the "alg" field from an inbound token before verifying the token’s signature, then passes that value unchanged to the decoding routine in PyJWT. Because no server‑controlled whitelist of acceptable algorithms is enforced, the verifier trusts a value supplied by an attacker. Under the current configuration PyJWT rejects the "none" algorithm, so the flaw does not allow a direct authentication bypass in the shipped configuration. However, the unpinned algorithm introduces a defense‑in‑depth gap that could become exploitable after a migration to asymmetric signing or if an attacker can obtain the shared LEMUR_TOKEN_SECRET and forge an HS256 token.

Affected Systems

All installations of Netflix Lemur running a version earlier than 1.9.2 are affected. The vulnerability resides in lemur/auth/service.py lines 130‑137. No patch level is specified beyond the major/minor version boundary; the fix was introduced in the 1.9.2 release.

Risk and Exploitability

The CVSS score of 4.8 indicates a low‑to‑moderate overall risk. EPSS is not provided and the vulnerability is not listed in CISA’s KEV catalog. Exploitation would require an attacker to supply a crafted JWT to an authentication endpoint and, in most cases, to have the LEMUR_TOKEN_SECRET to forge a valid HS256 token. Because no public exploitation has been reported, administrators should treat the risk as low but monitor for anomalous "alg" values and protect the secret.

Generated by OpenCVE AI on August 18, 2026 at 21:20 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Lemur to version 1.9.2 or later to enable the server‑controlled algorithm whitelist
  • Configure the LEMUR_TOKEN_ALGORITHMS setting to allow only HS256 or other approved algorithms
  • Monitor authentication endpoints for anomalous or unexpected token "alg" values
  • Ensure the LEMUR_TOKEN_SECRET is kept confidential and rotate it if it has been exposed

Generated by OpenCVE AI on August 18, 2026 at 21:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-r9gp-7f88-9r54 Lemur: JWT verifier honors attacker-supplied alg, enabling ATO
History

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

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

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

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


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

Type Values Removed Values Added
Description Lemur manages TLS certificate creation. Prior to 1.9.2, the JWT verifier in lemur/auth/service.py:130-137 used fetch_token_header to read header_data["alg"] from an unverified token and passed that attacker-controlled value to decode_with_multiple_secrets. PyJWT 2.x rejects alg=none with the configured key, so the flaw is a defense-in-depth gap rather than a direct authentication bypass in the shipped configuration. The unpinned algorithm can become exploitable after an asymmetric-signing migration through algorithm confusion, and it weakens algorithm-based anomaly detection because the token chooses the recorded value. A separate disclosure of LEMUR_TOKEN_SECRET would also permit forged HS256 tokens, although that disclosure is an independent prerequisite. The fix introduces the server-controlled LEMUR_TOKEN_ALGORITHMS allowlist and defaults it to HS256. This issue is fixed in version 1.9.2.
Title Lemur : JWT verifier trusts attacker-supplied alg from token header — defense-in-depth gap; chain-dependent ATO with secret disclosure
Weaknesses CWE-347
References
Metrics cvssV3_1

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


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-18T19:35:55.129Z

Reserved: 2026-06-16T15:13:28.165Z

Link: CVE-2026-55165

cve-icon Vulnrichment

Updated: 2026-08-18T19:35:50.379Z

cve-icon NVD

Status : Received

Published: 2026-08-18T19:16:58.647

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

Link: CVE-2026-55165

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-18T21:30:04Z

Weaknesses
  • CWE-347

    Improper Verification of Cryptographic Signature