Skip to content

Conversation

@jeffreyparker
Copy link
Contributor

Description

firebase/php-jwt 7.0 enforces a minimum key length of 64 on JWTs using HMAC512, but Duo uses a length of 40. The recommended solution is to pad out the key to the required size. (We had this same situation in duo_universal_csharp duosecurity/duo_universal_csharp#23 ) . This allows the client to support both php-jwt 6.X and 7.X.

Motivation and Context

Support for newer versions of dependencies. (Note that this issue was labelled as a CVE in firebase/php-jwt, but is not an actual vulnerability firebase/php-jwt#605 )

How Has This Been Tested?

Tested locally both with firebase/php-jwt 6.X and 7.X.

Types of Changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Thank you to @ishanvyas22 for bringing this issue to our attention!

php-jwt v7 enforces strict HMAC key length validation (64 bytes for HS512).
This pads the 40-byte client secret to 64 bytes with null bytes, which
produces identical HMAC output since HMAC internally pads to block size.

Fixes CVE-2025-45769 compatibility while maintaining support for php-jwt v6.
@jeffreyparker jeffreyparker merged commit b0d5e83 into main Jan 23, 2026
5 checks passed
@jeffreyparker jeffreyparker deleted the update_jwt_7_2 branch January 23, 2026 19:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants