dongmin cha created ZEPPELIN-6266: ------------------------------------- Summary: JWTs with no expiration time are incorrectly validated. Key: ZEPPELIN-6266 URL: https://issues.apache.org/jira/browse/ZEPPELIN-6266 Project: Zeppelin Issue Type: Bug Components: zeppelin-server Affects Versions: 0.12.0 Reporter: dongmin cha Assignee: dongmin cha
The {{KnoxJwtRealm.validateExpiration()}} method incorrectly accepts JWTs that have no {{exp}} (expiration time) claim. This is a significant security vulnerability, as a token without an expiration can be used indefinitely to maintain access. *Current Behavior:* * A JWT with a {{null}} expiration time is treated as valid. * This allows for tokens that never expire. *Expected Behavior:* * JWTs *must* contain an expiration time to be considered valid. * Tokens without an expiration time must be rejected. * A security warning should be logged when a token is rejected for this reason. *Root Cause:* The vulnerability is in {{KnoxJwtRealm.java}} on line 195. The condition {{if (expires == null || new Date().before(expires))}} incorrectly allows a {{null}} expiration to pass validation. *Proposed Solution:* # Explicitly check if the expiration time is {{{}null{}}}. # If it is {{{}null{}}}, log a security warning and immediately return {{{}false{}}}. # Only validate the expiration date if it is not {{{}null{}}}. -- This message was sent by Atlassian Jira (v8.20.10#820010)