🛡️ CVE-2026-49205 — phpmyfaq
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
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Affected Packages
| Software | From version | Fixed in |
|---|---|---|
| phpmyfaq/phpmyfaq | — | 4.1.4 |
| thorsten/phpmyfaq | — | 4.1.4 |
| unknown | — | — |
References
Similar Threats
- High CVE-2026-34728
- Medium CVE-2026-32629
- Medium CVE-2026-24420
- Medium CVE-2026-24421
- Medium CVE-2026-24422
More CVE 2026 advisories
Browse all of CVE 2026 in the advisory index.
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.