CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-27836

Unauthenticated Account Creation in phpMyFAQ WebAuthn Interface

Amit Schendel
Amit Schendel
Senior Security Researcher

Feb 28, 2026·4 min read·30 visits

Executive Summary (TL;DR)

Unauthenticated attackers can bypass registration restrictions and create active accounts via the WebAuthn API endpoint in phpMyFAQ versions < 4.0.18.

A critical authorization bypass vulnerability exists in the WebAuthn implementation of phpMyFAQ prior to version 4.0.18. The flaw allows unauthenticated attackers to create active user accounts even when public registration is explicitly disabled in the system configuration. This occurs due to missing configuration checks and CSRF validation in the `/api/webauthn/prepare` endpoint.

Vulnerability Overview

phpMyFAQ, a widely used open-source FAQ content management system, contains a logic flaw in its WebAuthn authentication flow. The vulnerability, identified as CVE-2026-27836, resides in the WebAuthnController class responsible for handling WebAuthn registration and authentication requests.

Normally, user registration is governed by global configuration settings (security.enableRegistration) and requires specific authorization checks. However, the prepare method in the API endpoint /api/webauthn/prepare failed to consult these configuration settings. Furthermore, it lacked Cross-Site Request Forgery (CSRF) protection, creating a direct path for unauthenticated actors to interact with the user creation logic.

The consequence is a complete bypass of the application's registration gates. An attacker can create valid, active user accounts regardless of administrative intent to close registration, potentially expanding the attack surface for further exploitation.

Root Cause Analysis

The root cause of this vulnerability is CWE-862: Missing Authorization. Specifically, the prepare method in src/phpMyFAQ/Controller/Frontend/WebAuthnController.php did not enforce the application's security policy before processing input.

In the vulnerable implementation, the controller directly processed JSON payloads containing a username field. Upon receiving this request, the application would:

  1. Skip Configuration Checks: It did not verify if security.enableWebAuthnSupport or security.enableRegistration were set to true.
  2. Skip CSRF Validation: It did not validate the anti-CSRF token usually required for state-changing operations.
  3. Improper State Initialization: It invoked $this->user->createUser($username) and immediately followed it with $this->user->setStatus('active'). This explicitly set the new user's status to active, bypassing any manual approval workflows or email verification steps that might otherwise apply.

This sequence meant that the mere presence of the code path was sufficient to allow account creation, irrespective of the system's runtime configuration.

Code Analysis

The patch provided in commit f2ab673f0668753cd0f7c7c8bc7fd2304dcf5cb1 introduces strict guards at the beginning of the prepare method. Below is a comparative analysis of the logic flow.

Vulnerable Logic

Prior to the fix, the method accepted the request and processed the user creation immediately:

public function prepare(Request $request): JsonResponse
{
    // ... (Payload decoding)
    $username = $data->username;
    // DIRECT CREATION WITHOUT CHECKS
    if (!$this->user->getUserByLogin($username, false)) {
        $this->user->createUser($username);
        $this->user->setStatus('active'); // Account is immediately usable
        // ...
    }
}

Patched Logic

The fix introduces three critical layers of defense: configuration verification, CSRF validation, and safe default status.

public function prepare(Request $request): JsonResponse
{
    // 1. Configuration Gates
    if (!$this->configuration->get('security.enableWebAuthnSupport')) {
        return $this->json(['error' => 'WebAuthn support is disabled.'], Response::HTTP_FORBIDDEN);
    }
    if (!$this->configuration->get('security.enableRegistration')) {
        return $this->json(['error' => 'Registration is disabled.'], Response::HTTP_FORBIDDEN);
    }
 
    // ... (Payload decoding)
 
    // 2. CSRF Validation
    $csrfToken = Filter::filterVar($data->csrf, FILTER_SANITIZE_SPECIAL_CHARS);
    if (!Token::getInstance()->verifyToken('webauthn-prepare', $csrfToken)) {
        return $this->json(['error' => Translation::get('ad_msg_noauth')], Response::HTTP_UNAUTHORIZED);
    }
 
    // 3. Safe Default Status
    if (!$this->user->getUserByLogin($username, false)) {
        $this->user->createUser($username);
        $this->user->setStatus('blocked'); // Account created but disabled by default
    }
}

Exploitation

Exploitation of CVE-2026-27836 is trivial and requires no authentication or special tooling. An attacker simply needs to send a crafted HTTP POST request to the target server. This can be performed via curl, Burp Suite, or any HTTP client.

Prerequisites:

  • Network access to the phpMyFAQ instance.
  • The phpMyFAQ version must be < 4.0.18.

Attack Vector:

POST /api/webauthn/prepare HTTP/1.1
Host: target-phpmyfaq.com
Content-Type: application/json
 
{
    "username": "malicious_user"
}

Outcome: If successful, the server responds with a 200 OK status (or similar success indicator related to WebAuthn challenge generation). A new user with the login malicious_user is created in the database with active status. The attacker has successfully bypassed the "Registration Disabled" setting.

Impact Assessment

The impact of this vulnerability is classified as High (CVSS 7.5) due to the complete compromise of the integrity of the user registration system.

  • Authorization Bypass: The primary impact is the ability to ignore administrative controls. Organizations often disable public registration for internal knowledge bases; this vulnerability negates that control.
  • User Enumeration: The response logic differs depending on whether a user already exists, allowing attackers to valid usernames.
  • Database Exhaustion (DoS): Because the endpoint requires no CAPTCHA or rate limiting in the vulnerable path, an attacker can script a loop to create thousands of junk accounts. This fills the database and potentially degrades performance for legitimate users.
  • Increased Attack Surface: While the created accounts do not immediately grant administrator privileges, they provide a valid footprint within the system. If other vulnerabilities exist that require a valid user context (even a low-privileged one), this bug serves as the entry point.

Official Patches

phpMyFAQOfficial GitHub Commit Fix
phpMyFAQRelease Notes for 4.0.18

Fix Analysis (1)

Technical Appendix

CVSS Score
7.5/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
EPSS Probability
0.04%

Affected Systems

phpMyFAQ < 4.0.18

Affected Versions Detail

Product
Affected Versions
Fixed Version
phpMyFAQ
phpMyFAQ
< 4.0.184.0.18
AttributeDetail
CWE IDCWE-862
CVSS v3.17.5 (High)
Attack VectorNetwork
Privileges RequiredNone
Exploit MaturityPoC Available
VendorphpMyFAQ

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
T1190Exploit Public-Facing Application
Initial Access
CWE-862
Missing Authorization

Vulnerability Timeline

Fix committed to main branch
2026-02-22
Public Disclosure / Advisory Published
2026-02-27

References & Sources

  • [1]GitHub Security Advisory GHSA-w22q-m2fm-x9f4
  • [2]NVD - CVE-2026-27836

More Reports

•18 minutes ago•GHSA-G75F-G53V-794X
4.3

GHSA-G75F-G53V-794X: CPU Exhaustion via Unbounded Email Regular Expression Scanning in Bleach

An uncontrolled resource consumption vulnerability exists in the Python package Bleach when parsing text to linkify email addresses. When `parse_email=True` is enabled, the regular expression engine is forced into a quadratic-time complexity scan on specially crafted payloads lacking an '@' symbol. This causes immediate CPU exhaustion and blocks application server worker processes.

Amit Schendel
Amit Schendel
0 views•6 min read
•43 minutes ago•GHSA-GR75-JV2W-4656
4.7

GHSA-GR75-JV2W-4656: Path Traversal and Sandbox Escape in LangChain File-Search Middleware and Loaders

A path traversal and sandbox escape vulnerability in LangChain and LangChain-Anthropic Python packages allows unauthenticated local attackers to access files outside the restricted directory via crafted input, symbolic links, or prefix bypasses.

Alon Barad
Alon Barad
1 views•8 min read
•about 1 hour ago•GHSA-M557-WRGG-6RP4
5.8

GHSA-m557-wrgg-6rp4: Server-Side Request Forgery via Authority Information Access (AIA) Chasing in phpseclib

The PHP Secure Communications Library (phpseclib) contains a Server-Side Request Forgery (SSRF) vulnerability due to an insecure default implementation of Authority Information Access (AIA) certificate chasing. This flaw allows remote, unauthenticated attackers to coerce applications validating user-supplied X.509 certificates into generating arbitrary outbound HTTP requests to internal networks or local interfaces.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 2 hours ago•CVE-2026-45491
6.2

CVE-2026-45491: Directory Traversal via Improper Link Resolution in .NET System.Formats.Tar

A directory traversal vulnerability exists in the Microsoft .NET System.Formats.Tar library during archive extraction. When extracting a TAR archive using the TarFile.ExtractToDirectory API, the extraction engine improperly resolves symbolic links prior to file creation, allowing local unauthorized attackers to write or overwrite arbitrary files outside the target directory. This can lead to local tampering, privilege escalation, or arbitrary code execution.

Amit Schendel
Amit Schendel
7 views•6 min read
•about 2 hours ago•GHSA-GJ48-438W-JH9V
6.1

GHSA-GJ48-438W-JH9V: Client-Side HTML Sanitization Bypass in Bleach

A client-side HTML sanitization bypass vulnerability exists in the Bleach library where the formaction attribute is not recognized as a URI. This allows attackers to inject javascript: URIs when formaction is on the allowed list, resulting in Cross-Site Scripting (XSS).

Alon Barad
Alon Barad
5 views•6 min read
•about 3 hours ago•CVE-2026-53722
5.4

CVE-2026-53722: Reflected DOM-based Cross-Site Scripting (XSS) in Nuxt <NuxtLink>

A reflected DOM-based Cross-Site Scripting (XSS) vulnerability was identified in Nuxt's core <NuxtLink> component. Prior to the patched versions, the component failed to validate or sanitize the target URI schemes before directly rendering them into the 'href' attribute of native HTML anchor elements. An attacker who controls the input bound to the 'to' or 'href' properties can inject executable URI schemes, such as 'javascript:' or 'data:', leading to arbitrary script execution in the context of the user's browser session.

Amit Schendel
Amit Schendel
4 views•6 min read