Miggo Logo

CVE-2025-59943: phpMyFAQ duplicate email registration allows multiple accounts with the same email

8.1

CVSS Score
3.1

Basic Information

EPSS Score
-
Published
10/3/2025
Updated
10/3/2025
KEV Status
No
Technology
TechnologyPHP

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
thorsten/phpmyfaqcomposer>= 4.0.7, < 4.0.134.0.13

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability allows multiple user accounts to be created with the same email address due to a lack of uniqueness enforcement during registration. The root cause is the absence of a check to verify if an email address is already present in the system before creating a new user.

The analysis of the patch commit 44cd20f86eb041f39d1c30a9beefad1cc61dc0ec reveals the exact locations of the flaw. The developers added email validation logic in two key functions:

  1. phpMyFAQ\Helper\RegistrationHelper::createUser: This is the high-level function that orchestrates the user registration process. The patch adds a block of code to call a new emailExists() method on the UserData object. If the email exists, the registration is halted. This function is the most direct entry point for the vulnerability described in the proof-of-concept.

  2. phpMyFAQ\User::createUser: This is a more fundamental user creation function. It was also patched to handle cases where the username (login) itself is an email address. It now checks if the provided login is an email and, if so, verifies its uniqueness in the userdata table.

By identifying these two functions, we can conclude that any runtime profile capturing a user registration event that triggers this vulnerability would show phpMyFAQ\Helper\RegistrationHelper::createUser in the stack trace, which in turn calls phpMyFAQ\User::createUser. Both were processing potentially malicious input (a duplicate email) without proper validation.

Vulnerable functions

phpMyFAQ\Helper\RegistrationHelper::createUser
phpmyfaq/src/phpMyFAQ/Helper/RegistrationHelper.php
This function is the primary entry point for user registration. Before the patch, it directly called `$user->createUser()` without checking if the provided email address was already in use. This allowed an attacker to create multiple accounts with the same email address. The patch introduces a check using `emailExists()` to ensure the email is unique before proceeding with user creation.
phpMyFAQ\User::createUser
phpmyfaq/src/phpMyFAQ/User.php
This is a lower-level function for creating a user. It was vulnerable because it only checked for the uniqueness of the login name, not the email. If the login name itself was an email address, it didn't check if that email was already registered in the `userdata` table. The patch adds a condition to check for email uniqueness if the login string is a valid email format.

WAF Protection Rules

WAF Rule

### Summ*ry p*pMy**Q *o*s not *n*or** uniqu*n*ss o* *m*il ***r*ss*s *urin* us*r r**istr*tion. T*is *llows multipl* *istin*t ***ounts to ** *r**t** wit* t** s*m* *m*il. ****us* *m*il is o*t*n us** *s *n i**nti*i*r *or p*sswor* r*s*ts, noti*i**tions, *

Reasoning

T** vuln*r**ility *llows multipl* us*r ***ounts to ** *r**t** wit* t** s*m* *m*il ***r*ss *u* to * l**k o* uniqu*n*ss *n*or**m*nt *urin* r**istr*tion. T** root **us* is t** **s*n** o* * ****k to v*ri*y i* *n *m*il ***r*ss is *lr***y pr*s*nt in t** sy