Pending

User tests: Successful: Unsuccessful:

avatar XananasX7
XananasX7
31 May 2026

Pull Request resolves #

  • I read the Generative AI policy and my contribution is either not created with the help of AI or is compatible with the policy and GNU/GPL 2 or later.

Summary of Changes

This PR adds allowed_classes allowlists to all six unserialize() calls in the Joomla WebAuthn plugins (plg_system_webauthn and plg_multifactorauth_webauthn).

Without allowed_classes, PHP's unserialize() will instantiate any autoloaded class if an attacker can control the session value. The WebAuthn session keys (session.webauthn.pkRequests, session.webauthn.pkRegistration) store Base64-encoded serialized PublicKeyCredential*Options objects — an attacker who can write to the session backend (e.g., via session fixation or a compromised session store) can trigger PHP Object Injection.

Fix: Restrict deserialization to only the expected webauthn-lib classes.

Testing Instructions

  1. Apply the patch.
  2. Confirm normal WebAuthn authentication and registration still works end-to-end.
  3. Optionally: craft a serialized object payload for the session key and confirm it is rejected with a PHP warning (returns false).

Actual result BEFORE applying this Pull Request

unserialize() in WebAuthn plugin session handling has no allowed_classes restriction — any autoloaded PHP class can be instantiated from a controlled session value.

Expected result AFTER applying this Pull Request

unserialize() is restricted to only the specific WebAuthn library classes that legitimately appear in these session values.

Link to documentations

  • No documentation changes for guide.joomla.org needed
  • No documentation changes for manual.joomla.org needed
avatar XananasX7 XananasX7 - open - 31 May 2026
avatar XananasX7 XananasX7 - change - 31 May 2026
Status New Pending
avatar joomla-cms-bot joomla-cms-bot - change - 31 May 2026
Category Front End Plugins
avatar brianteeman
brianteeman - comment - 31 May 2026

There was a reason that you were given a template to complete when you submitted this PR. Please update your pr with the required information. You can find the template here https://github.com/joomla/joomla-cms/blob/5.4-dev/.github/PULL_REQUEST_TEMPLATE.md

In addition please read https://github.com/joomla/joomla-cms/security

avatar XananasX7 XananasX7 - change - 31 May 2026
The description was changed
avatar XananasX7 XananasX7 - edited - 31 May 2026
avatar XananasX7
XananasX7 - comment - 31 May 2026

Sorry @brianteeman — I've now updated the PR body with the full template (summary, testing instructions, before/after results, and documentation checkboxes). Thanks for the reminder!

Add a Comment

Login with GitHub to post a comment