← Back to Feed CACHED · 2026-07-04 12:43:18 · CACHE_KEY CVE-2026-48612
CVE-2026-48612 · CWE-352 · Disclosed 2026-06-12

Improper state verification in the OAuth implementation could

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A forgotten `state` parameter and a missing form key let an attacker glue their Google login onto your admin's forum account

phpBB's OAuth linker never forwarded the state value to the underlying OAuth2 library, so the callback couldn't verify that the flow it was completing was one the victim actually initiated. Layered on top of that, the auth-link endpoint didn't check phpBB's form_key CSRF token, meaning a plain GET carrying an attacker-supplied code= would silently bind the attacker's Google/Facebook/Bitly identity to whoever loaded the URL. Affects phpBB 3.3.0 through 3.3.16; fixed in 3.3.17 (released 6 June 2026). Only relevant if an administrator explicitly enabled an OAuth provider in the ACP — stock installs never register the OAuth service, so they're not on the attack surface.

The vendor HIGH (8.0) rating is fair for the specific site profile it applies to: a forum with OAuth turned on, a logged-in victim, and someone willing to click a crafted image or link. But that's a narrow slice of the phpBB installed base, phpBB itself is a bulletin-board (not identity infrastructure), and the blast radius stops at forum-level accounts. Practitioner reality lands this as MEDIUM — worth patching promptly but not a fire drill.

"phpBB OAuth CSRF chain. Real risk, but only if you enabled OAuth — and default installs didn't. Forum-tier blast radius, not fleet."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Attacker starts an OAuth flow against their own provider account

Using a browser and the target phpBB's /ucp.php?mode=login_link&link=1&oauth_service=google endpoint (or an intercepted callback), the attacker walks through Google/Facebook/Bitly login with their own credentials and captures the returned code= value before it is consumed. Tools: Burp Suite proxy or a scripted requests session to intercept the redirect.
Conditions required:
  • Target phpBB has OAuth configured (Google, Facebook, or Bitly)
  • Attacker has a valid account with the same OAuth provider
Where this breaks in practice:
  • Default phpBB installs do not enable OAuth — administrator opt-in required
  • OAuth authorization codes are short-lived (typically 60 seconds for Google), narrowing the delivery window
Detection/coverage: No CVE-specific scanner signature — Tenable/Qualys phpBB plugins flag versions, not OAuth config state.
STEP 02

Attacker crafts a link to the vulnerable auth-link endpoint

Because auth-link never checks the phpBB form_key, a bare GET with the intercepted code and oauth_service parameters is sufficient. The URL can be embedded as an [img] BBCode tag inside a forum post, a private message, or a phishing email — no interaction beyond page load is required from the victim.
Conditions required:
  • Attacker can post BBCode / send PMs / deliver a URL to the victim
Where this breaks in practice:
  • BBCode [img] may be disabled on hardened boards
  • SameSite=Lax on session cookies blocks the request unless it's a top-level navigation — modern browsers default to Lax
Detection/coverage: WAFs won't flag it; the URL looks like a legitimate OAuth callback.
STEP 03

Victim, already logged into phpBB, loads the URL

The victim's authenticated session hits auth-link. phpBB accepts the request, calls into the OAuth library without the state parameter, and skips its own CSRF check. The attacker's OAuth identity is now bound to the victim's phpBB user_id in phpbb_oauth_accounts.
Conditions required:
  • Victim is currently logged into phpBB
  • Victim's browser sends session cookies to the phpBB origin
Where this breaks in practice:
  • Victim must be actively logged in at the moment of click
  • SameSite=Lax means a cross-site [img] won't send cookies — attack works best when hosted on-forum
Detection/coverage: Application logs will show an auth-link action from the victim's IP — retro-hunt after disclosure.
STEP 04

Attacker logs into victim's account via OAuth

The attacker now visits the phpBB login page, clicks 'Log in with Google', authenticates as themselves at the provider, and phpBB's OAuth resolver maps that identity to the victim's user_id. The attacker is now signed in as the victim — including any moderator or administrator privileges.
Conditions required:
  • OAuth login remains enabled
  • Binding row remains in phpbb_oauth_accounts
Where this breaks in practice:
  • phpBB 2FA (if enabled on the victim account via an extension) still applies for standard login but may be bypassed on OAuth login depending on extension
Detection/coverage: Anomalous login source / device fingerprint via any forum audit extension.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone observed as of July 2026. No KEV listing, no public exploitation reports on GreyNoise or Shadowserver.
Public proof-of-conceptFull technical write-up by Pentest-Tools.com research team (PTT-2026-005) — includes exploitation steps but no packaged exploit.
EPSS0.0012 (~0.12% — bottom quartile of exploitation likelihood).
KEV statusNot listed.
CVSS vectorNVD: CVSS:3.0/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H = 8.0. Pentest-Tools alt: AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:L = 8.3. Both HIGH; UI:R (victim click) and PR:L/config gating are the levers.
Affected versionsphpBB 3.3.0 – 3.3.16 with OAuth enabled (Google, Facebook, or Bitly provider).
Fixed versionphpBB 3.3.17 (released 2026-06-06). Adds state propagation, form-key check on auth-link, and a cleanup task for stale OAuth bindings.
Exposure populationphpBB powers a large slice of self-hosted forums, but OAuth is opt-in and not the default. Shodan search http.html:"phpBB" returns ~120k hosts; the OAuth-enabled subset is a minority.
DisclosurePublished 2026-06-12 via HackerOne; patch preceded disclosure by 6 days.
ReporterPentest-Tools.com research team (chained with sibling CVE-2026-48611).
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.8/10)

The decisive factor is narrow addressable surface: exploitation requires an OAuth provider to be explicitly configured (non-default), a currently-logged-in victim, and a click on attacker content — three compounding gates on a bulletin-board application whose blast radius stops at forum accounts. phpBB is not an identity provider, hypervisor, or edge appliance, so no role-multiplier floor pushes this above HIGH.

HIGH Technical accuracy of the chain
HIGH Patch availability and version boundaries
MEDIUM Real-world exploitation likelihood — depends on OAuth-enabled deployment share

Why this verdict

  • Configuration gate: default phpBB installations do not enable OAuth. Only administrators who deliberately wired up Google/Facebook/Bitly SSO are exposed — a minority of the ~120k Shodan-visible phpBB instances.
  • User-interaction requirement: the chain terminates only when a *currently-logged-in* victim loads the crafted URL. SameSite=Lax cookie defaults in modern Chromium/Firefox block cross-site [img]-tag delivery, forcing the attacker to host the link on the target forum itself.
  • Short-lived OAuth code: provider authorization codes expire in ~60 seconds, requiring the attacker to coordinate code capture and victim click in real time.
  • Role multiplier — bulletin board (typical role): chain succeeds; blast radius = one forum account per victim, potentially escalating to forum admin if the admin is the victim. No pivot to OS, network, or federated identity.
  • Role multiplier — high-value roles: phpBB is canonically a discussion forum. It is not an IdP, PAM, hypervisor, CA, backup, or edge appliance. There is no realistic deployment role where this chain ends in fleet compromise, so no CRITICAL floor applies.
  • No active exploitation: EPSS 0.0012, not on KEV, no honeypot hits, no packaged Metasploit/exploit-db module as of July 2026.

Why not higher?

Vendor HIGH (8.0) assumes the OAuth-enabled configuration and a UI:R win. Under real deployment friction — opt-in provider, live-session victim, SameSite constraints, 60-second code TTL, no observed exploitation — HIGH overstates urgency. Nothing in the chain reaches host, network, or federated identity impact.

Why not lower?

It's a straightforward, well-documented account-takeover chain with a public write-up naming the exact endpoint and parameters. On forums where OAuth is enabled and an administrator is the victim, the outcome is forum-admin compromise — not backlog-hygiene territory. LOW would understate that.

05 · Compensating Control

What to do — in priority order.

  1. Disable OAuth authentication in the ACP until 3.3.17 is deployed — ACP → Authentication → set method back to db. This removes the entire attack surface immediately. Do this within the noisgate MEDIUM window — no formal mitigation SLA, but 24-48 hours is trivial and eliminates risk pending the patch.
  2. Upgrade to phpBB 3.3.17 or later — The fix adds state propagation to the OAuth callback, a form_key check on auth-link, and a scheduled cleanup task to purge orphaned bindings. Full upgrade within the noisgate remediation SLA of 365 days — but for public-facing OAuth-enabled forums, aim for 30 days.
  3. Audit phpbb_oauth_accounts for suspicious bindings created before the patch — Run SELECT user_id, provider, oauth_provider_id, COUNT(*) FROM phpbb_oauth_accounts GROUP BY user_id HAVING COUNT(*) > 1; and review recently-created rows. Any binding attributable to an unexpected external identity should be revoked and the user notified to rotate credentials.
  4. Force password reset and OAuth unlink for admin/moderator accounts on OAuth-enabled boards — Privileged accounts are the highest-value targets. If OAuth was enabled between 3.3.0 and 3.3.17, treat admin OAuth bindings as suspect and re-enroll after upgrade.
What doesn't work
  • WAF signatures — the exploit URL is indistinguishable from a legitimate OAuth callback; there is no anomalous payload.
  • MFA on the phpBB local password — the attacker logs in via OAuth, bypassing the local password flow entirely.
  • Rate limiting — a single request per victim delivers the takeover; there is nothing to throttle.
  • CAPTCHA on registration — the vulnerability is on auth-link, not registration.
06 · Verification

Crowdsourced verification payload.

Run this from an auditor workstation with curl available. Point it at the target forum's base URL — e.g. ./check_phpbb.sh https://forum.example.com. No authentication required; it only reads the public version banner and looks for the OAuth login option on the login page.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# noisgate: CVE-2026-48612 phpBB OAuth CSRF check
# Usage: ./check_phpbb.sh <base_url>
# Exit: 0 = PATCHED / not applicable, 1 = VULNERABLE, 2 = UNKNOWN

set -u
BASE="${1:-}"
if [[ -z "$BASE" ]]; then
  echo "Usage: $0 <phpbb_base_url>" >&2
  exit 2
fi

UA='noisgate-phpbb-check/1.0'
TMP=$(mktemp)
trap 'rm -f "$TMP"' EXIT

# 1. Grab a page likely to include the phpBB generator meta tag
if ! curl -sSL -A "$UA" --max-time 15 "$BASE/" -o "$TMP"; then
  echo "UNKNOWN: could not fetch $BASE" >&2
  exit 2
fi

# 2. Extract phpBB version
VER=$(grep -oE 'phpBB[[:space:]]*[0-9]+\.[0-9]+\.[0-9]+' "$TMP" | head -n1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
if [[ -z "$VER" ]]; then
  # Try the styles fingerprint
  VER=$(grep -oE 'assets/javascript/[a-z]+\.js\?assets_version=[0-9]+' "$TMP" | head -n1)
  if [[ -z "$VER" ]]; then
    echo "UNKNOWN: phpBB version not disclosed in HTML" >&2
    exit 2
  fi
  echo "UNKNOWN: version banner suppressed; manual check required" >&2
  exit 2
fi

echo "Detected phpBB version: $VER"

# 3. semver compare vs 3.3.17
IFS=. read -r MAJ MIN PATCH <<< "$VER"
vuln=0
if (( MAJ < 3 )); then vuln=0
elif (( MAJ == 3 && MIN < 3 )); then vuln=0  # pre-3.3.x line not in advisory
elif (( MAJ == 3 && MIN == 3 && PATCH < 17 )); then vuln=1
fi

# 4. Check whether OAuth login option is exposed on the login page
OAUTH=0
if curl -sSL -A "$UA" --max-time 15 "$BASE/ucp.php?mode=login" | grep -qiE 'oauth|google|facebook|bitly'; then
  OAUTH=1
fi

if (( vuln == 1 && OAUTH == 1 )); then
  echo "VULNERABLE: phpBB $VER with OAuth exposed. Upgrade to 3.3.17."
  exit 1
elif (( vuln == 1 && OAUTH == 0 )); then
  echo "PATCHED (effectively): phpBB $VER < 3.3.17 but no OAuth provider surfaced on login. Still upgrade."
  exit 0
else
  echo "PATCHED: phpBB $VER >= 3.3.17."
  exit 0
fi
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: (1) enumerate every phpBB instance you own — corporate forums, community sites, legacy support boards — and identify which have OAuth enabled in the ACP. (2) For any OAuth-enabled board on 3.3.0–3.3.16, disable OAuth in the ACP today as a compensating control (there is no noisgate mitigation SLA at MEDIUM, but this takes 60 seconds and eliminates risk). (3) Schedule the upgrade to phpBB 3.3.17 within the noisgate remediation SLA of 365 days for MEDIUM — realistically inside 30 days for public-facing forums. (4) After upgrade, audit phpbb_oauth_accounts for pre-patch bindings on admin/moderator users and re-enroll. No fire drill; no KEV; no active exploitation — this is scheduled maintenance, not incident response.

Sources

  1. NVD — CVE-2026-48612
  2. Pentest-Tools.com research write-up (chain analysis)
  3. phpBB community advisory / 3.3.17 release
  4. Vulnerability-Lookup CIRCL record
  5. THREATINT CVE record
  6. TheHackerWire vulnerability summary
  7. PortSwigger — OAuth state parameter guidance
  8. CWE-352 — Cross-Site Request Forgery
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.