🛡️ CVE-2026-49205 — phpmyfaq

🟡 CVSS 6.5 — Medium ✅ No Known Exploit CWE-862 NVD
6.5
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

phpMyFAQ: Missing userHasPermission() in 4 API write endpoints (CVE-2026-24421 Incomplete Fix)

Missing Authorization in API CategoryController — CVE-2026-24421 fixed BackupController by adding userHasPermission(PermissionType::BACKUP). The same fix was NOT applied to 4 other write endpoints in the public API. All 4 only call hasValidToken() (shared API key) but never call userHasPermission(), allowing any API token holder to perform admin operations regardless of their user permissions.

Summary

CVE-2026-24421 fixed BackupController by adding: $this->userHasPermission(PermissionType::BACKUP);

The same fix was NOT applied to 4 other write endpoints in the public API. All 4 only call $this->hasValidToken() — which checks a shared API key header, NOT the individual user's role permissions.

Affected Endpoints

1. src/phpMyFAQ/Controller/Api/CategoryController.php → create() POST /api/v4.0/category

Missing: userHasPermission(PermissionType::CATEGORY_ADD)

Any API token holder can create categories regardless of user role.

2. src/phpMyFAQ/Controller/Api/FaqController.php → create() POST /api/v4.0/faq

Missing: userHasPermission(PermissionType::FAQ_ADD)

Any API token holder can create FAQ entries regardless of user role.

3. src/phpMyFAQ/Controller/Api/FaqController.php → update() PUT /api/v4.0/faq

Missing: userHasPermission(PermissionType::FAQ_EDIT)

Any API token holder can update any FAQ entry regardless of user role.

4. src/phpMyFAQ/Controller/Api/QuestionController.php → create() POST /api/v4.0/question

Missing: permission check

Any API token holder can create questions regardless of user role.

Root Cause

All 4 methods only call:

$this->hasValidToken(); ← shared API key, not per-user

The fixed BackupController correctly calls:

$this->userHasPermission(PermissionType::BACKUP);

PermissionType::CATEGORY_ADD, FAQ_ADD, FAQ_EDIT all exist in src/phpMyFAQ/Enums/PermissionType.php — they just are not being used.

Fix

Add userHasPermission() before the logic in each method:

// CategoryController.create()

$this->userHasPermission(PermissionType::CATEGORY_ADD);

// FaqController.create()

$this->userHasPermission(PermissionType::FAQ_ADD);

// FaqController.update()

$this->userHasPermission(PermissionType::FAQ_EDIT);

Reporter

CONTACT

Santhoshini Ganta

Github:@santhoshinipayload

Email: [email protected]

LinkedIn: http://linkedin.com/in/santhoshini-g-1440621ba

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is low, an attacker needs low-level privileges on the target. No user interaction is required. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality high, integrity none, availability none.

Weakness class

CVE-2026-49205 is classified as CWE-862: Missing Authorization. No authorisation check is performed before carrying out a restricted action.

Affected software

CVE-2026-49205 is recorded against 3 packages.

  • phpmyfaq/phpmyfaq (fixed in 4.1.4)
  • thorsten/phpmyfaq (fixed in 4.1.4)
  • unknown

Timeline and source

Published on 23 June 2026. No public exploit is currently recorded for this entry. Record sourced from NVD.

References

github.com (Web)
nvd.nist.gov (Advisory)
github.com (Web)
github.com (Package)

Details

Severity Medium
CVSS Score 6.5
CVSS Vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
CWE CWE-862
Public Exploit ✅ No
Source NVD
Published 2026-06-23
Updated 2026-08-12
Modified 2026-06-23
Fix URL N/A

Affected Packages

Software From version Fixed in
phpmyfaq/phpmyfaq 4.1.4
thorsten/phpmyfaq 4.1.4
unknown

Similar Threats

Vulnerability Monitoring

Track new vulnerabilities in phpmyfaq

CVE-2026-49205 is rated CVSS 6.5 Medium. BotEraser monitors your WordPress installation and notifies you when software you use appears in our vulnerability database.

Set Up Free Alerts →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.