CVE-2026-27836: Thorsten/phpmyfaq PhpMyFAQ Allows Unauthenticated Account Creation Vulnerability

HIGH
Advisory Identifier: GHSA-w22q-m2fm-x9f4
CVSS 7.5
CWE-862
Published
Advisory Summary

CVE-2026-27836 is a HIGH (CVSS 7.5) phpmyfaq allows unauthenticated account creation vulnerability (CWE-862: Missing Authorization) affecting Thorsten/phpmyfaq libraries in the Packagist ecosystem. The issue involves phpmyfaq allows unauthenticated account creation via webauthn prepare endpoint. Remediation is available by upgrading affected packages to version 4.0.18.

CVE-2026-27836 at a Glance

CVE Identifier CVE-2026-27836
GHSA Identifier GHSA-w22q-m2fm-x9f4
Severity HIGH
CVSS v3.1 Base Score 7.5
CWE Classification CWE-862: Missing Authorization
Affected Product Thorsten/phpmyfaq
Package Ecosystem Packagist
Published Date
Last Updated

Security Impact

CVSS: 7.5

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N).

Attack Vector Network (AV:N)
Attack Complexity Low (AC:L)
Privileges Required None (PR:N)
User Interaction None (UI:N)
Scope Unchanged (S:U)
Confidentiality None (C:N)
Integrity High (I:H)
Availability None (A:N)

How to Fix CVE-2026-27836

To remediate this vulnerability, upgrade all affected Thorsten/phpmyfaq dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

thorsten/phpmyfaq fixed: 4.0.18
Upgrade thorsten/phpmyfaq to 4.0.18
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for thorsten/phpmyfaq

How to Check if You Are Affected

To determine whether your application is affected by CVE-2026-27836, inspect your project dependencies for Thorsten/phpmyfaq:

inspect dependencies for thorsten/phpmyfaq

Analyze the terminal output to locate any version of Thorsten/phpmyfaq in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 4.0.18), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-862: Missing Authorization, where the product does not perform an authorization check when an actor attempts to access a resource or perform an action. In Thorsten/phpmyfaq, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Summary The WebAuthn prepare endpoint (`/api/webauthn/prepare`) creates new active user accounts without any authentication, CSRF protection, CAPTCHA, or configuration checks. This allows unauthenticated attackers to create unlimited user accounts even when registration is disabled. ### Details **File:** `phpmyfaq/src/phpMyFAQ/Controller/Frontend/Api/WebAuthnController.php`, lines 63-79 ```php #[Route(path: 'webauthn/prepare', name: 'api.private.webauthn.prepare', methods: ['POST'])] public function prepare(Request $request): JsonResponse { $data = json_decode($request->getContent(), ...); $username = Filter::filterVar($data->username, FILTER_SANITIZE_SPECIAL_CHARS); if (!$this->user->getUserByLogin($username, raiseError: false)) { try { $this->user->createUser($username); $this->user->setStatus(status: 'active'); $this->user->setAuthSource(AuthenticationSourceType::AUTH_WEB_AUTHN->value); $this->user->setUserData([ 'display_name' => $username, 'email' => $username, ]); ``` The endpoint: 1. Accepts any POST request with a JSON `username` field 2. If the username doesn't exist, creates a new **active** user account 3. Does NOT check if WebAuthn support is enabled (`security.enableWebAuthnSupport`) 4. Does NOT check if registration is enabled (`security.enableRegistration`) 5. Does NOT verify CSRF tokens 6. Does NOT require captcha validation 7. Has no rate limiting ### PoC ```bash # Create an account - no auth needed curl -X POST https://TARGET/api/webauthn/prepare \ -H 'Content-Type: application/json' \ -d '{"username":"attacker_account"}' # Mass account creation for i in $(seq 1 1000); do curl -s -X POST https://TARGET/api/webauthn/prepare \ -H 'Content-Type: application/json' \ -d "{\"username\":\"spam_user_$i"}" & done ``` ### Impact - **Registration bypass:** Accounts created even when self-registration is disabled - **Username squatting:** Reserve usernames before legitimate users - **Database exhaustion:** Create millions of fake active accounts (DoS) - **User enumeration:** Different responses for existing vs new usernames - **Security control bypass:** WebAuthn config check is bypassed entirely All phpMyFAQ installations with the WebAuthn controller routed (default) are affected, regardless of configuration settings.

CVE-2026-27836 Affected Thorsten/phpmyfaq Versions

1 component(s)
Fixed Versions:
4.0.18
Product / Package Ecosystem Affected Versions Fixed Version
thorsten/phpmyfaq
Packagist
< 4.0.18
4.0.18

References

Frequently Asked Questions

What is CVE-2026-27836?
CVE-2026-27836 is a security vulnerability in Thorsten/phpmyfaq involving phpMyFAQ Allows Unauthenticated Account Creation via WebAuthn Prepare Endpoint under CWE-862: Missing Authorization.
Which Thorsten/phpmyfaq versions are affected?
Affected versions include releases prior to 4.0.18 across affected packages: thorsten/phpmyfaq.
What version fixes CVE-2026-27836?
Upgrading to 4.0.18 (or the latest patched release for your respective branch) resolves the vulnerability.
Is thorsten/phpmyfaq affected?
Yes, thorsten/phpmyfaq is affected in releases prior to 4.0.18. Upgrade your dependency to 4.0.18 or later.
What is the CVSS score of CVE-2026-27836?
CVE-2026-27836 has a CVSS v3.1 base score of 7.5 (HIGH) with vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N.
What CWE is associated with CVE-2026-27836?
CVE-2026-27836 is classified under CWE-862: Missing Authorization (The product does not perform an authorization check when an actor attempts to access a resource or perform an action.).
How can I check Packagist dependencies for CVE-2026-27836?
Run the dependency tree command: 'inspect dependencies for thorsten/phpmyfaq'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-w22q-m2fm-x9f4",
  "modified" : "2026-02-27T22:20:47Z",
  "published" : "2026-02-27T21:01:58Z",
  "aliases" : [ "CVE-2026-27836" ],
  "summary" : "phpMyFAQ Allows Unauthenticated Account Creation via WebAuthn Prepare Endpoint",
  "details" : "### Summary\n\nThe WebAuthn prepare endpoint (`/api/webauthn/prepare`) creates new active user accounts without any authentication, CSRF protection, CAPTCHA, or configuration checks. This allows unauthenticated attackers to create unlimited user accounts even when registration is disabled.\n\n### Details\n\n**File:** `phpmyfaq/src/phpMyFAQ/Controller/Frontend/Api/WebAuthnController.php`, lines 63-79\n\n```php\n#[Route(path: 'webauthn/prepare', name: 'api.private.webauthn.prepare', methods: ['POST'])]\npublic function prepare(Request $request): JsonResponse\n{\n    $data = json_decode($request->getContent(), ...);\n    $username = Filter::filterVar($data->username, FILTER_SANITIZE_SPECIAL_CHARS);\n\n    if (!$this->user->getUserByLogin($username, raiseError: false)) {\n        try {\n            $this->user->createUser($username);\n            $this->user->setStatus(status: 'active');\n            $this->user->setAuthSource(AuthenticationSourceType::AUTH_WEB_AUTHN->value);\n            $this->user->setUserData([\n                'display_name' => $username,\n                'email' => $username,\n            ]);\n```\n\nThe endpoint:\n1. Accepts any POST request with a JSON `username` field\n2. If the username doesn't exist, creates a new **active** user account\n3. Does NOT check if WebAuthn support is enabled (`security.enableWebAuthnSupport`)\n4. Does NOT check if registration is enabled (`security.enableRegistration`)\n5. Does NOT verify CSRF tokens\n6. Does NOT require captcha validation\n7. Has no rate limiting\n\n### PoC\n\n```bash\n# Create an account - no auth needed\ncurl -X POST https://TARGET/api/webauthn/prepare \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"username\":\"attacker_account\"}'\n\n# Mass account creation\nfor i in $(seq 1 1000); do\n  curl -s -X POST https://TARGET/api/webauthn/prepare \\\n    -H 'Content-Type: application/json' \\\n    -d \"{\\\"username\\\":\\\"spam_user_$i\"}\" &\ndone\n```\n\n### Impact\n\n- **Registration bypass:** Accounts created even when self-registration is disabled\n- **Username squatting:** Reserve usernames before legitimate users\n- **Database exhaustion:** Create millions of fake active accounts (DoS)\n- **User enumeration:** Different responses for existing vs new usernames\n- **Security control bypass:** WebAuthn config check is bypassed entirely\n\nAll phpMyFAQ installations with the WebAuthn controller routed (default) are affected, regardless of configuration settings.",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Packagist",
      "name" : "thorsten/phpmyfaq"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "4.0.18"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/thorsten/phpMyFAQ/security/advisories/GHSA-w22q-m2fm-x9f4"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-27836"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/thorsten/phpMyFAQ/commit/f2ab673f0668753cd0f7c7c8bc7fd2304dcf5cb1"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/thorsten/phpMyFAQ"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-862" ],
    "severity" : "HIGH",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-02-27T21:01:58Z",
    "nvd_published_at" : "2026-02-27T20:21:40Z"
  }
}