Executive brief
Netflix Lemur, a service for managing TLS certificates, contains a security flaw in how it verifies user login tokens. The system incorrectly trusts the security algorithm specified by the user's token rather than enforcing its own standards. While currently difficult to exploit, this could allow an attacker to bypass security controls if other system secrets are leaked or if the system's security configuration is updated in the future.
Technical details
The vulnerability exists in `lemur/auth/service.py` where the JWT verifier extracts the `alg` header from an unverified token and passes it directly into the `algorithms` parameter of `pyjwt.decode()`. This is a classic JWT anti-pattern that allows an attacker to choose the validation algorithm. While PyJWT 2.x mitigates the `alg=none` attack by default, this flaw enables 'RS256 to HS256' algorithm confusion attacks if the deployment migrates to asymmetric signing. Additionally, it blinds audit logs by allowing attackers to spoof the algorithm recorded in telemetry. An attacker with knowledge of the `LEMUR_TOKEN_SECRET` (via a separate disclosure) can forge administrative tokens. The issue is addressed in version 1.9.2 by pinning the accepted algorithms in the server configuration.
Affected products
- Netflix Lemur < 1.9.2
Timeline
- 2026-06-10: disclosed: Initial disclosure on GitHub
- 2026-06-25: patched: Version 1.9.2 released