Malwlab
  • Home
  • Podcast Archive
  • Methodology
  • About
Sign in Subscribe
security

phpMyFAQ ships 28 security fixes, then publishes the receipts

A coordinated 28-CVE disclosure in the self-hosted FAQ application phpMyFAQ is dominated by a critical WebAuthn authentication bypass. The patch shipped 14 days before the public advisories landed, which changes how you should read the disclosure.

Glenn Fryklund

Glenn Fryklund

18 Oct 2026 — 3 min read
Share
A USB hardware security key (a WebAuthn passkey) plugged into a server port, its LED glowing red
A USB hardware security key (a WebAuthn passkey) plugged into a server port, its LED glowing red, rendered with AI.

On 2026-10-17, 28 GitHub Security Advisories and 28 NVD CVE records appeared for phpMyFAQ, the open-source FAQ web application that many people run on their own servers. The batch covers the stable 3.2.x, 4.0.x, and 4.1.x release lines plus the unreleased 4.2.0-alpha/beta line. The headline flaw is CVE-2026-111911 (GHSA-768h-xwv2-fwp3), scored 9.8 CRITICAL.

The WebAuthn registration endpoints in phpMyFAQ 4.0.0 through before 4.1.9 attach credentials to any account without checking authentication or validating the challenge. An attacker stages a victim's username, submits a forged fmt=none attestation to register a passkey, and then logs in, bypassing both the password and TOTP. That is full account takeover.

The fix shipped 14 days before the advisories went public. Release 4.1.9, dated 2026-10-03, lists "fixed security vulnerabilities" in its changelog. The 28 GHSAs and NVD records were published 2026-10-17, two weeks later. The vendor fixed the flaws, shipped the patch, then published the advisory batch. If you self-host phpMyFAQ and you are on 4.1.9 or later, you are already patched. The 2026-10-17 disclosure is the public record of what was fixed, not a new vulnerability that just appeared.

The rest of the batch is a mix of authentication bypasses, authorization gaps, and injection flaws. CVE-2026-111895 covers an authentication bypass in the Microsoft Entra ID login flow, where users are linked by the mutable preferred_username claim and AuthEntraId::create() ignores the duplicate-login exception while continuing with the existing local account. CVE-2026-109573 is a SQL injection in PdoMysql::escape(), which escapes single quotes inconsistently, in versions before 4.1.9. The batch also includes a password-change flow that skips the current-password check (CVE-2026-111884), a missing authorization on the deleteUser() API (CVE-2026-111909), a Keycloak user authentication bypass (CVE-2026-111898), broken object-level authorization (CVE-2026-111908), CSRF on POST /admin/api/update-* endpoints (CVE-2026-111907), account enumeration (CVE-2026-111887), stored XSS in the SvgSanitizer (CVE-2026-111896, CVE-2026-111903), uncontrolled resource consumption on the unauthenticated user/password/update endpoint (CVE-2026-111901), and multiple privilege-escalation flaws in UserController and GroupController (CVE-2026-111890, CVE-2026-111891, CVE-2026-111893).

One entry needs a caveat. CVE-2026-108851, missing authorization in the experimental MCP server faq_search tool, is described in NVD as affecting versions "through 4.1.10." As of 2026-10-18, no 4.1.x release after 4.1.10 (dated 2026-10-09) is visible in the vendor changelog, so its fixed status is unconfirmed. The 4.2.0-beta.2 changelog notes the experimental MCP server was migrated to mcp/sdk, which may resolve it, but that is a beta release, not a stable-line fix.

The 4.2.0-beta.2 line (released 2026-10-09) added hardened multi-tenancy support, an improved audit and activity log with security event tracking, and the MCP server migration. Several GHSAs in the batch target the 4.2.0-alpha/beta line specifically. Those are pre-release hardening items, not stable-line defects.

Most of the 28 GHSAs carry no vendor CVSS score in the GitHub API response. Only the headline 9.8 and a handful of others (8.3, 8.1, 7.5, 7.1) have scores. The NVD records in the batch carry no assigned CVSS metrics yet. There is no KEV entry and no confirmed in-the-wild exploitation for any CVE in this batch as of 2026-10-18.

phpMyFAQ has published a public security advisory for every fixed vulnerability since 2004 and ships a CycloneDX SBOM with releases since 4.1.7. The 4.1.x line has active support through 2027-03-12, and every stable release receives security fixes for at least 12 months.

If you run phpMyFAQ, check your version. If you are on 4.0.0 through 4.1.8, update to 4.1.9 or later. If you are on 3.2.x, the affected boundary starts at 3.2.0, so check the vendor changelog for the corresponding fix release.

Source links (named)

  • GHSA-768h-xwv2-fwp3: https://github.com/thorsten/phpMyFAQ/security/advisories/GHSA-768h-xwv2-fwp3
  • NVD CVE-2026-111911: https://nvd.nist.gov/vuln/detail/CVE-2026-111911
  • NVD REST keyword search (phpMyFAQ): https://services.nvd.nist.gov/rest/json/cves/2.0?keywordSearch=phpMyFAQ
  • phpMyFAQ vendor changelog: https://www.phpmyfaq.de/changelog/
  • phpMyFAQ vendor security page: https://www.phpmyfaq.de/security/
  • GitHub Security Advisories API (published 2026-10-17): https://api.github.com/advisories?published=2026-10-17

This article was drafted with AI/LLM assistance and reviewed by a human before publication. All factual claims were checked against the public sources cited above. The feature image was generated with AI. See How we use AI for the full workflow.

Topics:
  • security
  • vulnerability-disclosure
  • phpMyFAQ
  • WebAuthn
  • account-takeover
  • open-source

Read more

Next.js ships two unauthenticated RCEs in one release

Next.js ships two unauthenticated RCEs in one release

Vercel's 2026-10-14 security releases (v16.4.1 and v15.5.28) fix three vulnerabilities: two critical unauthenticated remote code execution bugs and one high-severity denial of service. One of the RCEs has no workaround.

By Glenn Fryklund 24 Oct 2026
PHP2Shell: Two Unauthenticated RCEs in PHP Core, Reachable Before Your Code Runs

PHP2Shell: Two Unauthenticated RCEs in PHP Core, Reachable Before Your Code Runs

The PHP project shipped fixes for two CVSS 9.8 core vulnerabilities that let an unauthenticated request execute code before any application code runs. If you run self-hosted PHP, update now. The partial mitigations are stopgaps.

By Glenn Fryklund 22 Oct 2026
Plex Media Server: Four Flaws Chain Into Unauthenticated Code Execution

Plex Media Server: Four Flaws Chain Into Unauthenticated Code Execution

Four separate vulnerabilities in Plex Media Server, chained together, let an unauthenticated remote attacker run code with the server process privileges. Plex says the flaws are being actively exploited; CISA added all four to KEV on October 20, 2026.

By Glenn Fryklund 22 Oct 2026
A self-hosted server on a desk with a laptop showing an open terminal prompt and no password field, rendered with AI.

A missing comma opens Mercury's terminal endpoint: two CRITICAL unauth RCEs

A single missing comma in a Python list silently disabled one rule of Mercury's endpoint blocklist, leaving /api/terminals open. Two CRITICAL unauthenticated remote-code-execution flaws let any reachable network client run code on the host with no credentials.

By Glenn Fryklund 20 Oct 2026

Malwlab

Deep dives into homelab infrastructure, cybersecurity findings, and threat intelligence analysis. Practical insights from self-hosted environments, security research, and real-world threat data.

Malwlab
  • Sign up
Powered by Ghost