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)

Reply via email to