CVE-2025-68951

mediumpriority · track · 24EPSS 0.003 · 20 %ileEUUS
grimoire priorityP3 · Track
Exploitable?
—
no known exploitation
Likely / severe?
0.28% (20th) EPSS
CVSS 6.1 · medium
Is it mine?
4 products
Check your exposure
Who says so?
4 sources
cnnvd · enisa_euvd · nvd · osv

EPSS · scored 2026-10-28

phpMyFAQ is an open source FAQ web application. Versions 4.0.14 and 4.0.15 have a stored cross-site scripting (XSS) vulnerability that allows an attacker to execute arbitrary JavaScript in an administrator’s browser by registering a user whose display name contains HTML entities. When an administrator views the admin user list, the payload is decoded server-side and rendered without escaping, resulting in script execution in the admin context. Version 4.0.16 contains a patch for the issue.

01

cvss

Technical severity, 0–10. One row per scoring source.

6.1
010

base score 0–10 · higher = more severe · hover a vector to decode

v3.16.1mediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:Nprimary · NVD / NIST USexploitability 2.8 · impact 2.7
v3.15.4mediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:Nsecondary · ENISA EU
v3.15.4mediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:Nsecondary · security-advisories@github.comexploitability 2.8 · impact 2.5
v3.15.4mediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:Nsecondary · OSV
v3.15.6mediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N/E:Usecondary · CVSS-BT (t0sche)
02

ssvc

A stakeholder decision — act, attend, or track — from exploitation and impact.

Exploitation: poc · Automatable: no · Technical Impact: partialcoordinatorcisa_ssvcUS
03

weaknesses

The CWE weakness classes this flaw belongs to.

04

affected products (4)

Products and version ranges known to be affected.

05

advisories (1)

Vendor and ecosystem advisories describing this.

  • GHSA-jv8r-hv7q-p6vcphpMyFAQ has Stored XSS in user list via admin-managed display_name2025-12-29ghsa · osvUS

    ### Summary A stored cross-site scripting (XSS) vulnerability allows an attacker to execute arbitrary JavaScript in an administrator’s browser by registering a user whose **display name** contains HTML entities (e.g., `&lt;img ...&gt;`). When an administrator views the admin user list, the payload is decoded server-side and rendered without escaping, resulting in script execution in the admin context. ### Details Root cause is the following chain: - **User-controlled input stored**: attacker-provided `display_name` (real name) is stored in DB (often as HTML entities, e.g., `&lt;img ...&gt;`). - **Decode on read**: `phpmyfaq/src/phpMyFAQ/User/UserData.php` decodes `display_name` using `html_entity_decode(...)` (“for backward compatibility”). - **Unsafe sink**: admin user list renders the decoded value unescaped using Twig `|raw`: - `phpmyfaq/assets/templates/admin/user/users.twig` (users table uses `{{ user.display_name|raw }}`) As a result, an entity-encoded payload becomes active HTML/JS when rendered in the admin user list. Note: This report is about the `display_name` field + entity-decoding path. It is distinct from previously published issues focused on the `email` field. ### PoC (minimal reproduction) **Preconditions / configuration** - Registration enabled (`security.enableRegistration = true`). - Attacker does not need admin privileges. - Admin must view the admin user list page. **Steps** 1. As an unauthenticated user, open the registration page and create a new account. 2. Set the **display name / real name** field to the following entity-encoded payload: - `&lt;img src=x onerror=alert(1)&gt;` 3. Complete registration. 4. As an administrator, open the admin user list (example): - `http://127.0.0.1:8080/admin/user/list` 5. Observe JavaScript execution in the admin’s browser (e.g., `alert(1)` triggers) and the payload is rendered as an actual `<img>` element. ### Impact Stored XSS in the admin context can enable: - admin session compromise (depending on cookie flags), - CSRF token exfiltration and privileged admin actions, - UI redress/phishing within the admin panel. ### Evidence (what I observed) - Stored DB value (entities): `&lt;img src=x onerror=alert(1)&gt;` - Rendered HTML in admin user list: `<img src="x" onerror="alert(1)">` ### Affected versions **Confirmed by code inspection** - 4.0.14 - 4.0.15 - Both contain `html_entity_decode` for `display_name` in `UserData.php` and `{{ user.display_name|raw }}` in `users.twig`. **Confirmed by live reproduction** - 4.1.0-RC (tested on current source checkout) ### Environment (tested) - Host OS: macOS 15.6.1 (24G90) - Web container OS: Debian GNU/Linux 12 (bookworm) - PHP: 8.4.5RC1 - DB: MariaDB 11.6.2 - phpMyFAQ source commit (tested): bca1c4192c2ad61a3595b4289d9551a51e0e9848 ### Contact / Credit - Contact: jeongwoolee340@gmail.com

06

also known as (3)

Other names and identifiers for this entity.

07

sources

Which sources assert this record, and when.

published 2025-12-29modified 2026-06-17
08

references (11)

External citations — patches, advisories, analysis.

scry

Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.

Free scan