Skip to main content

phpMyFAQ EUVDEUVD-2025-32505

| CVE-2025-59943 CRITICAL
Improper Access Control (CWE-284)
2025-10-03 security-advisories@github.com GHSA-9wj2-4hcm-r74j
9.8
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Access open registration form
  2. Exploit
    Register duplicate account with victim's email
  3. Execution
    Trigger email-based password reset
  4. Impact
    Exploit email-ID ambiguity to seize account

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Access control enforcement
MITRE ATT&CK

1 technique across 1 tactic: Defense Evasion

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that user self-registration is enabled on the phpMyFAQ instance (so an attacker can create accounts at all) and that the installation's business logic - specifically password reset, notifications, or administrative actions - uses the email address as an account identifier rather than the unique user_id. Escalation to account takeover or privilege escalation additionally requires that a privileged/admin account already exists under the email the attacker targets, as stated by the advisory ('in certain configurations, may lead to...'). The vulnerable function is createUser in RegistrationHelper.php / User.php, which prior to 4.0.13 performed no emailExists() check. Limiting factors: no account takeover occurs in deployments that key flows off the unique user ID, no privileged victim account under the target email means impact is limited to accountability loss and spam/duplicate pollution, and registration must be open to anonymous users.

Impact

The signals in this case conflict sharply and the headline CVSS 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) overstates real-world risk. The description itself qualifies the severe outcomes - privilege escalation and account takeover occur only 'in certain configurations' where email is the sole identifier for password-reset or administrative flows, which contradicts the AC:L/no-conditions assumption baked into the 9.8 score. EPSS is just 0.05% (16th percentile), indicating very low probability of exploitation at scale, and the vulnerability is NOT in CISA KEV, so there is no confirmed active exploitation. A public PoC does exist (GHSA-9wj2-4hcm-r74j), but it merely demonstrates creating two accounts with the same email and both appearing in the admin user list - not a working account-takeover exploit. The underlying weakness (CWE-284, improper enforcement of email uniqueness at registration) is a business-logic/accountability flaw; its escalation to C:H/I:H/A:H depends on deployment-specific conditions (email-only password reset AND an existing privileged account sharing the target email) that the advisory explicitly frames as conditional. Net: this is a legitimate hardening fix worth patching, but the combination of low EPSS, no KEV listing, a non-weaponized PoC, and conditional impact makes it a moderate real-world priority rather than a critical emergency - the 9.8 should be treated with skepticism and the C/I/A:H impacts verified against the actual deployment before prioritizing.

Exploit ScenarioDerived

On a phpMyFAQ instance with open self-service registration, an attacker registers a new account using the same email address as an existing (ideally privileged) user; because uniqueness is not enforced, both accounts coexist. If the site's password-reset or notification logic keys off the email rather than the unique user ID, the attacker can leverage this ambiguity to intercept reset flows or impersonate the victim. A public PoC exists but only proves duplicate-account creation, not a turnkey takeover.

Act Now Prioritize within 24-48h. Why: CRITICAL severity + public POC available.
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv2 – Oct 08, 2026

Duplicate-email registration handling in phpMyFAQ 4.0.7 through 4.0.13 (and 4.0-nightly-2025-10-03 and earlier) lets unauthenticated remote attackers create multiple distinct accounts sharing the same email address because the createUser logic in RegistrationHelper.php and User.php performed no uniqueness check prior to 4.0.13. The practical consequence is account ambiguity rather than immediate compromise: data-integrity loss, colliding password-reset flows, and spam/duplicate pollution, with privilege escalation or account takeover possible only in specific configurations where a privileged account already exists under the targeted email and downstream flows key off the email instead of the unique user ID. A public proof-of-concept and the upstream fix commit are available, EPSS is negligible (0.05%, 16th percentile), and there is no indication of confirmed active exploitation (no CISA KEV), although the NVD headline CVSS of 9.8 substantially overstates real-world risk relative to our assessment of AV:N/AC:H/PR:N/UI:N/C:L/I:L/A:N.

Earlier versions of this analysis (1)
v1 Mar 13, 2026 - 19:29 CVSS 8.1

RemediationAI

Vendor-released patch: upgrade to phpMyFAQ 4.0.13, which introduces the UserData::emailExists() uniqueness check invoked from both RegistrationHelper::createUser() and User::createUser() and rejects duplicate registrations with ERROR_USER_EMAIL_NOT_UNIQUE; the fix is contained in commit 44cd20f86eb041f39d1c30a9beefad1cc61dc0ec (https://github.com/thorsten/phpMyFAQ/commit/44cd20f86eb041f39d1c30a9beefad1cc61dc0ec) and documented in GHSA-9wj2-4hcm-r74j. Because the impact depends on configuration, the most effective compensating control on unpatched instances is to disable open self-registration (or restrict it via the domain whitelist security.domainWhiteListForRegistrations), accepting the trade-off that this blocks legitimate new-account sign-ups and any workflow that relies on self-service registration; additionally, review password-reset, notification, and administrative flows to ensure accounts are resolved by the unique user_id rather than by email, since that change removes the ambiguity that enables account takeover or privilege escalation and the only cost is a code change to those lookup paths. Administrators should also audit the user list in the admin panel (/?action=user&user_action=listallusers) for existing duplicate-email accounts created before patching, merge or remove them, and force password resets where a duplicated address was associated with a privileged account; if self-registration cannot be disabled, adding CAPTCHA/rate limiting only reduces mass-registration spam and does not remediate the underlying uniqueness gap. No vendor-released workaround short of upgrading eliminates the root cause.

Affected VersionsENISA

phpMyFAQ 4.0.7, < 4.0.13

Affected Packages

composer thorsten/phpmyfaq fix: 4.0.13
euvd phpmyfaq_4_0_7 fix: 4.0.13

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in composer, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The flaw is classified as CWE-284 (Improper Access Control) and is best understood as an account-management business-logic defect rather than a memory-safety or injection bug. phpMyFAQ's registration path funnels through RegistrationHelper::createUser(), which delegates to User::createUser() and stores profile attributes - including the email - in the faquserdata table. Prior to the fix, neither path validated that the submitted email was already associated with an existing record, so the relational invariant 'one email, one account' was never enforced at the application layer. The patch commit 44cd20f86eb041f39d1c30a9beefad1cc61dc0ec adds a UserData::emailExists(string $email) helper that runs SELECT user_id FROM faquserdata WHERE email = '<escaped value>' and returns true when rows are present; RegistrationHelper::createUser() now short-circuits with User::ERROR_USER_EMAIL_NOT_UNIQUE ('The email address already exists.'), and User::createUser() throws the same exception when the login value itself passes filter_var($string, FILTER_VALIDATE_EMAIL). The same commit also corrected null/whitespace handling for the security.domainWhiteListForRegistrations option in RegistrationHelper::isDomainAllowed(). The core risk comes from the pattern of treating email as an account identifier in password-reset, notification, and administrative flows: where those flows resolve an account by email rather than by the unique user_id, a duplicated address creates ambiguity that can be abused. Deployments that resolve accounts strictly by user_id are not affected beyond account duplication and audit-trail noise.

Know when Phpmyfaq gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

NVD PRIMARY 9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 4.8 MEDIUM

Network-reachable self-registration gives AV:N/PR:N, but takeover depends on non-default email-as-identifier config and a colliding privileged account (AC:H); direct impact is accountability/integrity loss (I:L, C:L), no availability effect.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

6
Severity Changed
Oct 08, 2026 - 22:22 NVD
HIGH CRITICAL
CVSS changed
Oct 08, 2026 - 22:22 NVD
8.1 (HIGH) 9.8 (CRITICAL)
PoC Detected
Oct 10, 2025 - 16:35 vuln.today
Public exploit code
Patch released
Oct 10, 2025 - 16:35 nvd
Patch available
CVE Published
Oct 03, 2025 - 21:15 nvd
CRITICAL 9.8
CVE Published
Oct 03, 2025 - 21:15 nvd
HIGH 8.1

DescriptionNVD

phpMyFAQ is an open source FAQ web application. Versions 4.0-nightly-2025-10-03 and below do not enforce uniqueness of email addresses during user registration. This allows multiple distinct accounts to be created with the same email. Because email is often used as an identifier for password resets, notifications, and administrative actions, this flaw can cause account ambiguity and, in certain configurations, may lead to privilege escalation or account takeover. This issue is fixed in version 4.0.13.

Executive ViewAI

Why It Matters

Organizations using phpMyFAQ face notable risk from CVE-2025-59943, a improper access control vulnerability rated CVSS 8.1. Successful exploitation could significantly impact the confidentiality, integrity, or availability of affected systems. Proof-of-concept code is publicly available, increasing the risk of exploitation. A patch is available and should be applied as part of regular vulnerability management.

Business Impact: High
Compensating Controls

Apply vendor patch. If immediate patching is not feasible: (1) Restrict access to affected endpoints; (2) Implement additional authorization checks; (3) Enable audit logging.

Threat Intelligence Overview

EPSS Score
0.1%
Top 84% exploitable
Prevalence
Low
self-hosted open-source FAQ app, niche non-enterprise footprint
Exploit
POC
Public exploit code exists
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC Yes
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity + public POC available
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

69
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +49
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.

CVE-2023-5865 CRITICAL POC
9.8 Oct 31

Insufficient Session Expiration in GitHub repository thorsten/phpmyfaq prior to 3.2.2. Rated critical severity (CVSS 9.8

CVE-2023-1886 CRITICAL POC
9.8 Apr 05

Authentication Bypass by Capture-replay in GitHub repository thorsten/phpmyfaq prior to 3.1.12. Rated critical severity

CVE-2023-1753 CRITICAL POC
9.8 Mar 31

Weak Password Requirements in GitHub repository thorsten/phpmyfaq prior to 3.1.12. Rated critical severity (CVSS 9.8), t

CVE-2022-3754 CRITICAL POC
9.8 Oct 29

Weak Password Requirements in GitHub repository thorsten/phpmyfaq prior to 3.1.8. Rated critical severity (CVSS 9.8), th

CVE-2026-46364 CRITICAL POC
9.3 May 15

Unauthenticated SQL injection in phpMyFAQ before 4.1.2 allows remote attackers to extract credentials, admin tokens, and

CVE-2017-15730 HIGH POC
8.8 Oct 22

In phpMyFAQ before 2.9.9, there is Cross-Site Request Forgery (CSRF) in admin/stat.ratings.php. Rated high severity (CVS

CVE-2017-15808 HIGH POC
8.8 Oct 23

In phpMyFaq before 2.9.9, there is CSRF in admin/ajax.config.php. Rated high severity (CVSS 8.8), this vulnerability is

CVE-2017-15735 HIGH POC
8.8 Oct 22

In phpMyFAQ before 2.9.9, there is Cross-Site Request Forgery (CSRF) for modifying a glossary. Rated high severity (CVSS

CVE-2017-15734 HIGH POC
8.8 Oct 22

In phpMyFAQ before 2.9.9, there is Cross-Site Request Forgery (CSRF) in admin/stat.main.php. Rated high severity (CVSS 8

CVE-2024-28107 HIGH POC
8.8 Mar 25

phpMyFAQ is an open source FAQ web application for PHP 8.1+ and MySQL, PostgreSQL and other databases. Rated high severi

CVE-2024-27299 HIGH POC
8.8 Mar 25

phpMyFAQ is an open source FAQ web application for PHP 8.1+ and MySQL, PostgreSQL and other databases. Rated high severi

CVE-2023-1762 HIGH POC
8.8 Mar 31

Improper Privilege Management in GitHub repository thorsten/phpmyfaq prior to 3.1.12. Rated high severity (CVSS 8.8), th

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy