Calm down. · Builders
Calm down: the phpMyAdmin 5.2.3 WebAuthn "0day" skips a check the official download doesn't skip
On Oct 27, an X post from @abraxas_null, with a GitHub repo of write-up and test lab behind it, announced a "phpMyAdmin 5.2.3 WebAuthn 2FA bypass," and by Oct 28 it had a quote post from Florian Roth (@cyb3rops) that just said "Oh boy." That's the kind of reaction that sends people sprinting for their database admin panel, so it's worth slowing down long enough to read the code and the download.
The code part holds up. In phpMyAdmin's fallback WebAuthn code, CustomServer, the function that checks your security key's login response (parseAndValidateAssertionResponse()) only makes structural checks: the credential ID, the request type, the challenge, the origin, the site hash and the "user present" flag. It never checks the signature against the stored public key, which is the part that proves a real security key was there. That's true at the 5.2.3 release tag and on the current development branches, and the code first appeared in 5.2.1.
But phpMyAdmin only falls back to CustomServer when a library called web-auth/webauthn-lib isn't installed. When it is, phpMyAdmin uses WebauthnLibServer, which hands the whole check to the library. And the official 5.2.3 downloads ship that library: both the English and the all-languages tarballs include it. The claim says it doesn't. The release script refuses to build a release without it, and the repo's own test lab has to run rm -rf vendor/web-auth to reproduce the bypass. The README even concedes the point: "If you actually installed web-auth/webauthn-lib, you are on WebauthnLibServer and not this bug."
So the gap is real, and it bites the installs that are missing a library the official download includes. Calm down.
Claimed vs. confirmed
| What the doom version says | What the sources say |
|---|---|
| phpMyAdmin 5.2.3 has a WebAuthn 2FA bypass | CustomServer really doesn't verify the signature, but 5.2.3 only uses CustomServer when web-auth/webauthn-lib is missing |
"The distributed tarball is built with composer install --no-dev," so it lacks the library |
The official phpMyAdmin-5.2.3-english.tar.xz and all-languages tarballs contain vendor/web-auth/webauthn-lib/src/Server.php (v3.3.12), its autoloader maps Webauthn\Server, and the release script aborts with "Webauthn-lib should be installed, detection failed !" if the library is missing |
| Install 5.2.3 and you're open | The claim's lab runs composer install --no-dev and then deletes vendor/web-auth, and its build fails if Webauthn\Server still exists |
| It's a 2FA bypass, so the password doesn't matter | The claim's own README says you "still need the MySQL password." 2FA is opt-in per user, and only users who enrolled WebAuthn are affected |
| It's a CVSS 8.1 0day | That score is the claim's own. As of Oct 28 there's no phpMyAdmin advisory (the newest PMASA is PMASA-2025-3), no CVE in an NVD search, no GitHub advisory, no acknowledging issue or PR, and no 5.2.4 release |
The library isn't in phpMyAdmin's required dependencies, though, and that's where the real exposure is. In composer.json at the 5.2.3 tag, web-auth/webauthn-lib sits under suggest and require-dev, not require, which the claim gets right. phpMyAdmin's setup docs tell people installing from git to run composer update --no-dev, and the 2FA docs tell git users which TOTP and U2F libraries to add but never mention webauthn-lib. So if you installed from a git checkout or with composer's --no-dev, you could plausibly be on CustomServer without knowing it. So, very likely, are some distro packages. Debian's own phpmyadmin packages (bookworm, trixie and sid) ship the CustomServer code but not webauthn-lib, and Debian doesn't package that library at all, so a Debian install with WebAuthn turned on very likely runs the unchecked code. That's from Debian's package file lists, not a test, and Ubuntu, Red Hat and SUSE weren't checked.
There's no fix yet for that path either. A pull request merged on Sept 29 (milestone 5.2.4) changed CustomServer to look up stored credentials and save the counter, but it didn't add a signature check.
The boring lesson
You're exposed only if all three of these are true:
- your phpMyAdmin is missing
web-auth/webauthn-lib, which very likely includes Debian's phpmyadmin package, as well as git checkouts and composer--no-devinstalls (and possibly other distro packages), but not the official release tarball, - a user has WebAuthn 2FA turned on, and
- the attacker already has that user's MySQL password.
That last one is the real gate. (Opinion) If the attacker already has the password, the problem started well before the security key, and the 2FA headline mostly tells you how much weight that second factor was quietly carrying.
What to do:
-
Check that the WebAuthn library is actually installed.
- Why: phpMyAdmin only uses the code without the signature check when
web-auth/webauthn-libis missing, so this one file tells you which side of the story you're on. - How: in your phpMyAdmin directory, check that
vendor/web-auth/webauthn-lib/src/Server.phpexists (for example,ls vendor/web-auth/webauthn-lib/src/Server.php) and thatvendor/composer/autoload_classmap.phpmapsWebauthn\Serverto it (grep -n "webauthn-lib/src/Server.php" vendor/composer/autoload_classmap.phpshould print a line). If both are there, you're on the library and not this bug. On Debian's package, expect it to be missing, since Debian doesn't package the library. If either is missing, check which users have WebAuthn turned on: look inphpmyadmin.pma__userconfigforconfig_datacontaining"backend":"WebAuthn". Those are the only accounts where this matters.
- Why: phpMyAdmin only uses the code without the signature check when
-
If the library is missing, install from the official release, or move WebAuthn users off it for now.
- Why: the official 5.2.3 tarball ships webauthn-lib v3.3.12 and uses the library's full check, and there's no phpMyAdmin patch for the fallback code as of Oct 28.
- How: install phpMyAdmin from the official 5.2.3 release tarball at phpmyadmin.net/downloads, then rerun the check above. Until you can, the interim options in the claim's own README are to install webauthn-lib or to move WebAuthn users to TOTP. On Debian's package neither is simple, since Debian packages neither library, so the official tarball is the practical route.
-
Don't put phpMyAdmin on the open internet.
- Why: the attacker has to reach your login page and get past the password step before any of this matters.
- How: restrict phpMyAdmin to a VPN or an IP allowlist.
-
Use strong, unique MySQL passwords, and rotate them if you think one leaked.
- Why: per the claim itself, the attacker "still need[s] the MySQL password," so the password is the real gate.
- How: give every account its own long, unique password. If you suspect one has been exposed, rotate it, and while you're in there, turn on
$cfg['AuthLog']and$cfg['AuthLogSuccess']so phpMyAdmin logs login attempts to syslog or a file. It logs password failures; from our read of the 5.2.3 code, a failed 2FA attempt isn't logged there, so a pile of successful password logins with no session after them is worth a look in your web server logs.
Want the next one?
One email, weekly-ish. The week's briefs, how worried to be, and what to do about it. No doom.
Subscribe on Beehiiv ↗Free. Opens Beehiiv in a new tab. Unsubscribe whenever, I won't be offended.Sources
- abraxas/PMA-5.2.3-WebAuthn-2FA: the claim repo (README, lab Dockerfile and init.sql)
- @abraxas_null on X: the claim post (Oct 27, 2026)
- @cyb3rops (Florian Roth) on X: "Oh boy" quote post (Oct 28, 2026)
- phpMyAdmin: downloads
- phpMyAdmin: RELEASE_5_2_3 on GitHub
- phpMyAdmin 5.2.3: WebAuthn.php, server selection (L62-65)
- phpMyAdmin 5.2.3: CustomServer.php, parseAndValidateAssertionResponse (L76-110)
- phpMyAdmin 5.2.3: WebauthnLibServer.php (L118-151)
- phpMyAdmin QA_5_2: CustomServer.php
- phpMyAdmin master: src/WebAuthn/CustomServer.php
- phpMyAdmin 5.2.3: composer.json
- phpMyAdmin 5.2.3: composer.lock
- phpMyAdmin 5.2.3: scripts/create-release.sh
- phpMyAdmin PR #20499: Fix WebAuthn\CustomServer credential save (merged Sept 29, 2026)
- phpMyAdmin: security announcements (PMASA)
- NVD API keyword search: "phpMyAdmin WebAuthn"
- GitHub advisories affecting phpmyadmin/phpmyadmin
- phpMyAdmin docs: Two-factor authentication (5.2)
- phpMyAdmin 5.2.3: doc/setup.rst
- phpMyAdmin 5.2.3: doc/config.rst (AuthLog)
- Debian security tracker: phpmyadmin
- Debian phpmyadmin packaging: debian/control
- Debian packages: phpmyadmin file list, bookworm
- Debian packages: phpmyadmin file list, trixie
- Debian packages: phpmyadmin file list, sid
- phpMyAdmin 5.2.3: AuthenticationPlugin.php (login failure logging)