phpBB's OAuth login-link door swings open if you write 'apache' on it
phpBB's ucp.php?mode=login_link endpoint accepts an attacker-controlled auth_provider parameter. Switching that value to apache routes the login flow through the Apache auth provider, whose login() only checks that PHP_AUTH_USER matches the posted username and that PHP_AUTH_PW is non-empty — it never validates the password against phpBB's stored hash. A single unauthenticated POST with a Basic auth header for admin:anything returns a valid session cookie for that account. Affects phpBB 3.3.0 through 3.3.16 and the 4.0.0-a2 alpha; fixed in 3.3.17 on 2026-06-06.
Vendor CRITICAL 9.8 is *understated if anything*. The bug is pre-auth, no user interaction, works on default auth_method=db installs (i.e., every install), and hands attackers admin sessions on a platform that runs millions of public forums. Public PoC hit GitHub within days of the Aikido writeup on July 4. This is a straight-line RCE precursor via admin panel template abuse.
5 steps from start to impact.
Enumerate a target username
viewprofile. admin is the default and remains common. Tools: Burp Suite intruder, curl, phpbb-scanner scripts.- Target phpBB instance reachable over HTTP(S)
- At least one active user with elevated privileges
- Forums that disable memberlist and rename admin slow enumeration but rarely stop it
Fire the OAuth-provider swap POST
POST /ucp.php?mode=login_link&auth_provider=apache&login_link_x=1 with an Authorization: Basic base64(admin:x) header and body login_username=admin&login_password=x&login=Login. phpBB's dispatcher routes to phpbb\auth\provider\apache::login(), which trusts the Basic header. Weaponized in Diznev/CVE-2026-48611-EXPLOIT.- phpBB ≤ 3.3.16 or 4.0.0-a2 with default
auth_method=db - No WAF rule blocking
auth_provider=apache
- Reverse proxies that strip
Authorization: Basicbefore PHP-FPM (rare on typical shared hosting) - Fail2ban tuned to phpBB login flooding (won't fire on one request)
auth_provider=apache query string — trivial to grep once you know to look.Ride the returned session as admin
Set-Cookie: phpbb3_*_sid=... bound to the targeted account. Attacker replays the cookie against /adm/index.php and enters the ACP without a second challenge (session_admin reauth is bypassed because the attacker knows the fake password they just used).- Target account has ACP access
- Board admins who set
force_server_varsand require re-auth for ACP with a *different* password will slow but not block — the attacker still owns the frontend session
Pivot to RCE via ACP template/extension abuse
- Writable webroot / cache directory
- No hardening like read-only filesystem or immutable extensions dir
- Read-only container images
- open_basedir + disable_functions restricting exec
ext/ or styles/; file integrity monitoring on webroot.Persist and exfiltrate
phpbb_users (password hashes, emails, IPs), abuses stored PMs, seeds SEO spam, or backdoors the forum for watering-hole attacks against the community.- Database credentials in
config.phpreadable by the web user (always true)
- DLP on egress
- Outbound firewall restricting the web tier
The supporting signals.
| In-the-wild exploitation | Public technical writeup dropped 2026-07-04 (Aikido) alongside Pentest-Tools PTT-2026-004 disclosure. Opportunistic scanning expected within 24-72 hours of that drop; no confirmed mass exploitation yet as of this assessment date. |
|---|---|
| Public PoC | Full weaponized exploit at Diznev/CVE-2026-48611-EXPLOIT on GitHub. Aikido and Pentest-Tools both publish copy-pasteable curl commands. |
| EPSS | 0.00662 (fresh CVE, model hasn't caught up — expect rapid climb given the one-shot public PoC) |
| CISA KEV | Not listed as of 2026-07-04. Candidate for imminent addition given trivial exploitability. |
| CVSS vector | CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — network, no auth, no interaction, full CIA. Vector is accurate. |
| Affected versions | phpBB 3.3.0 through 3.3.16, plus 4.0.0-a2 alpha. Default auth_method=db config — meaning every out-of-the-box install. |
| Fixed versions | phpBB 3.3.17 released 2026-06-06. No distro backports needed — phpBB is deployed as an application, not a package. Debian/RPM phpBB packages will lag; upgrade the app directly. |
| Exposure population | phpBB powers a large fraction of self-hosted forums. Shodan/BuiltWith historically show 300k+ public phpBB installs. Nearly all internet-exposed. Not a niche vector. |
| Disclosure | Reported to HackerOne 2026-06-02, patched 2026-06-06, CVE reserved and disclosed 2026-06-12, tech details published 2026-07-04. |
| Reporter | Aikido Security AI pentesting research team; PTT-2026-004 coordinated by Pentest-Tools.com. |
noisgate verdict.
Verdict stays CRITICAL because this is a pre-auth, single-request admin-account takeover against the default configuration of a mass-deployed internet-facing application with a public PoC live. The single decisive factor is exploitation with zero prerequisites — no auth, no user interaction, no unusual config — against ~300k publicly discoverable targets.
Why this verdict
- Zero-prerequisite chain: unauthenticated, network-reachable, no user interaction, works on default
auth_method=db. Every friction knob a defender might hope for (auth required? no. specific config? no. unusual endpoint? no.) is absent. - Public weaponized PoC: Diznev/CVE-2026-48611-EXPLOIT reduces skill barrier to
curl. Combined with the 2026-07-04 Aikido writeup, opportunistic mass scanning is a matter of hours, not weeks. - Role multiplier: phpBB in the low-value role (dead community forum) still leaks PII and password hashes. In the typical role (customer support forum tied to SSO email addresses) the chain lets attackers pivot into credential stuffing and reset-flow abuse against the parent org's identity provider. In the high-value role (community forum for a software vendor with the same admin email/password as the vendor's Git/AWS estate), ACP → PHP RCE → outbound C2 lands on a public-facing server that often shares infrastructure or trust with corporate assets. Blast radius floor: domain-adjacent web compromise + user credential trove.
- Blast radius on ACP compromise: post-auth phpBB ACP has multiple documented RCE paths (extension upload, style file writes). Chained, this is unauth RCE on the webserver hosting the forum.
Why not higher?
There is no severity above CRITICAL. Score is capped at 9.6 rather than 10.0 because impact is bounded to the phpBB host and its user data — no direct hypervisor, identity-provider, or supply-chain fanout unless the operator has co-mingled trust. Not KEV-listed yet, so we don't invoke the 'patch in hours' override formally, but treat it that way.
Why not lower?
Downgrading to HIGH would require meaningful friction — authentication, configuration prerequisites, narrow version range, or low exposure. None apply: it's pre-auth, default-config, every 3.3.x through 3.3.16, and hundreds of thousands of public targets. A public one-shot PoC against default installs is the textbook CRITICAL.
What to do — in priority order.
- Upgrade to phpBB 3.3.17 immediately — Only complete fix. The upgrade is in-place, low-risk, and ships from phpbb.com. Do this within 3 days per the noisgate mitigation SLA for CRITICAL — same window doubles as remediation for this class of app.
- Add a WAF/reverse-proxy block for
auth_provider=on/ucp.php— If you can't upgrade instantly, block any request whose query string or body containsauth_provider=apache(and, defensively, any non-oauthvalue) againstmode=login_link. Deploy on Cloudflare, ModSecurity, nginxif ($args ~* 'auth_provider=apache'), or your CDN edge. In place within hours. - Force ACP re-authentication with a strong distinct password — Set
force_server_vars/require different admin password for ACP so a fraudulently issued frontend session cannot immediately walk into/adm/. Doesn't stop account takeover but blunts the RCE pivot. - Rotate admin credentials and invalidate all sessions post-upgrade — Truncate
phpbb_sessionsand force password reset on all users with elevated roles. Assume any exposed instance running vulnerable code between 2026-06-06 and patch date was already probed. - Grep web logs for indicators of past exploitation — Search access logs for
mode=login_linkcombined withauth_provider=apacheor any non-emptyAuthorization: Basicheader to/ucp.php. Any hit = investigate as compromise.
- MFA on phpBB accounts — the bug bypasses the login flow entirely, so TOTP/WebAuthn plugins are never invoked.
- Strong admin passwords — password is never checked. Complexity is irrelevant.
- IP allowlisting the ACP only — the initial session is minted via
/ucp.php, not/adm/. The attacker holds a valid frontend admin session even if/adm/is IP-restricted, and can still read PMs, moderate, and prep further pivots. - Fail2ban on failed logins — this is a single successful login, not a bruteforce pattern.
- Disabling the OAuth extension — the vulnerable code path lives in the core auth-provider dispatcher, not the OAuth ext. Uninstalling OAuth does nothing.
Crowdsourced verification payload.
Run from any host that can reach the target forum over HTTP(S). No credentials required. Example: ./check_phpbb.sh https://forum.example.com. Outputs VULNERABLE / PATCHED / UNKNOWN based on version fingerprinting plus a safe non-destructive probe of the vulnerable endpoint.
#!/usr/bin/env bash
# noisgate check: CVE-2026-48611 phpBB OAuth auth bypass
# Usage: ./check_phpbb.sh https://forum.example.com
set -u
TARGET="${1:-}"
if [ -z "$TARGET" ]; then
echo "usage: $0 <https://forum.host>" >&2; exit 2
fi
TARGET="${TARGET%/}"
UA="noisgate-cve-2026-48611/1.0"
# 1) Version fingerprint from the footer/meta generator
HTML=$(curl -sk -A "$UA" --max-time 10 "$TARGET/" || true)
VER=$(printf '%s' "$HTML" | grep -oiE 'phpBB[^<]*3\.[0-9]+\.[0-9]+' | head -n1 | grep -oE '3\.[0-9]+\.[0-9]+')
vuln_by_version=0
if [ -n "$VER" ]; then
# vulnerable: 3.3.0 .. 3.3.16 inclusive; fixed: 3.3.17+
IFS=. read -r MA MI PA <<< "$VER"
if [ "$MA" -eq 3 ] && [ "$MI" -eq 3 ] && [ "$PA" -le 16 ]; then
vuln_by_version=1
fi
fi
# 2) Non-destructive endpoint probe: request login_link with bogus provider,
# look for the app-level response indicating the dispatcher accepted it.
# We do NOT send Basic auth for a real user; we use a random string.
PROBE=$(curl -sk -A "$UA" -o /dev/null -w '%{http_code}' --max-time 10 \
-X POST "$TARGET/ucp.php?mode=login_link&auth_provider=apache&login_link_probe=1" || echo 000)
if [ "$vuln_by_version" -eq 1 ]; then
echo "VULNERABLE version=$VER probe_http=$PROBE"; exit 1
fi
if [ -n "$VER" ]; then
echo "PATCHED version=$VER probe_http=$PROBE"; exit 0
fi
echo "UNKNOWN version=unfingerprinted probe_http=$PROBE (footer stripped or 4.0.0-a2 — inspect manually)"; exit 3
If you remember one thing.
auth_provider=apache on /ucp.php?mode=login_link within 3 days; per the noisgate remediation SLA for CRITICAL, complete the 3.3.17 upgrade fleet-wide within 90 days, but with a public PoC live since 2026-07-04 you should be done in 7. After patching, invalidate all sessions, rotate admin creds, and hunt access logs for the indicator strings auth_provider=apache and unexpected Authorization: Basic on /ucp.php going back to June 6.Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.