mediumCVSS 6.5Vulnerability

GHSA-hpgw-ww76-c68r

## Summary `AbstractAdministrationController::userHasPermission()` catches the `ForbiddenException` thrown when a user lacks a specific permission, sends a "forbidden" HTML page via `$response->send()`, but does not terminate execution. The calling controller method continues to execute, fetches protected data, renders the full template, and returns it as a Response. The final `$response->send()` in `admin/index.php` outputs the protected page content after the forbidden page, leaking all permission-protected admin data to any authenticated admin user regardless of their actual permissions. ## Details The parent class `AbstractController::userHasPermission()` (`phpmyfaq/src/phpMyFAQ/Controller/AbstractController.php:317-327`) correctly enforces authorization by throwing a `ForbiddenException` when the user lacks the required permission. This exception would normally propagate to Symfony's HttpKernel exception handler, which would return an error response and prevent the controller from continuing. However, `AbstractAdministrationController` overrides this method at line 390-399: ```php #[\Override] protected function userHasPermission(PermissionType $permissionType): void { try { parent::userHasPermission($permissionType); } catch (ForbiddenException $exception) { $response = $this->getForbiddenPage($exception->getMessage()); $response->send(); // Outputs HTML but does NOT terminate execution } catch (Exception $exception) { $this->configuration->getLogger()->error($exception->getMessage()); // Only logs, no response, no termination } } ``` The critical flaw: after `$response->send()` at line 396, there is no `exit()`, `die()`, `return`, or re-throw. PHP execution continues normally into the calling controller method. For example, in `AdminLogController::index()` (`phpmyfaq/src/phpMyFAQ/Controller/Administration/AdminLogController.php:45-83`): ```php public function index(Request $request): Response {

Properties

ghsa_id
GHSA-hpgw-ww76-c68r
severity
medium
summary
phpMyFAQ has an Authorization Bypass in All Admin Pages Due to Non-Terminating Permission Check
cvss_score
6.5
cve_id
GHSA-hpgw-ww76-c68r
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
is_ghsa_only
true
ghsa_published
2026-05-06T20:11:52Z
source_url
https://github.com/advisories/GHSA-hpgw-ww76-c68r
ghsa_updated
2026-05-06T20:11:54Z

Related Entities (6)

AFFECTS (2)

[Software]composer/thorsten/phpMyFAQ
[Software]composer/phpMyFAQ/phpMyFAQ

VULNERABLE_TO (2)

[Software]composer/thorsten/phpMyFAQ
[Software]composer/phpMyFAQ/phpMyFAQ

HAS_WEAKNESS (1)

[Weakness]Incorrect Authorization

REPORTED_BY (1)

[Source]GitHub Advisory Database

Explore deeper with Ninja Signal's threat intelligence graph

GHSA-hpgw-ww76-c68r (CVSS 6.5) — Ninja Signal Threat Intelligence | Ninja Signal