CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-92161

CVE-2026-92161: Unauthenticated Account Takeover in FriendsOfFlarum OAuth Extension

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 25, 2026·6 min read·3 visits

Executive Summary (TL;DR)

Unauthenticated remote account takeover via unverified identity provider email trust violation (CVE-2026-92161).

A critical logical vulnerability in the FriendsOfFlarum OAuth (fof/oauth) extension allows unauthenticated remote attackers to perform complete account takeover, including administrative profiles. This vulnerability is caused by a failure to verify the email verification status returned by third-party identity providers such as Discord before asserting that the email is trusted and matching it to existing local accounts.

Vulnerability Overview

The FriendsOfFlarum OAuth (fof/oauth) extension enables third-party identity provider authentication for Flarum forums. Under typical integration settings, the extension manages user login and registration flows via standard OAuth 2.0 protocols. When a user authenticates via an external provider such as Discord, GitLab, Google, or LinkedIn, the extension resolves the user's registered email address and returns it to the Flarum core application.

The core vulnerability, tracked as CVE-2026-92161, represents an identity provider trust violation under CWE-345. Prior to the patched versions, the extension's Discord integration and several other provider classes blindly trusted the returned email address without validating whether the identity provider had actually verified the user's ownership of that address. Consequently, an attacker can exploit this lack of verification to perform unauthorized account takeover of any local account on a target forum that matches the victim's email address.

This trust boundary breakdown bypasses standard registration verification procedures, converting what should be a suggested email address registration flow into an active session authorization. The flaw operates at the application logic layer and does not require complex cryptographic attacks or network-level interceptions.

Root Cause Analysis

The root cause lies in the architectural trust assumptions made when interacting with upstream Identity Providers (IdPs). Within Flarum Core, two methods exist for passing resolved emails from an authentication extension: provideTrustedEmail($email) and suggestEmail($email). Calling provideTrustedEmail($email) asserts that the identity provider has authenticated the user and validated the email address, prompting Flarum Core to auto-link the incoming session to any matching local account.

Conversely, calling suggestEmail($email) only auto-populates the registration form and requires the user to perform standard verification steps before the account is active or linked. Prior to the implementation of the patch, fof/oauth invoked provideTrustedEmail($email) unconditionally for multiple providers, including Discord, GitLab, Google, and LinkedIn.

In the case of Discord, the service permits users to register accounts with arbitrary email addresses and bypass email verification completely if they verify a mobile phone number instead. In such instances, Discord's API response for /users/@me returns the unverified email address alongside a boolean parameter 'verified' set to false. Because the vulnerable versions of fof/oauth failed to inspect this 'verified' flag, they passed the unverified email to Flarum Core via provideTrustedEmail($email), leading to unauthorized session association.

Comparative Code Analysis

The vulnerability is resolved by implementing conditional validation based on the verification attributes returned in the identity provider payload. Below is a comparative analysis of the changes introduced in the patch for the primary affected providers.

In src/Providers/Discord.php, the previous implementation immediately trusted any retrieved email address. The patched code extracts the payload and verifies the value of the 'verified' key.

// Before Patch: Unconditional trust
$registration
    ->provideTrustedEmail($email)
    ->suggestUsername($user->getUsername() ?: '')
    ->setPayload($user->toArray());
 
// After Patch: Verification check
$payload = $user->toArray();
if ($payload['verified'] ?? false) {
    $registration->provideTrustedEmail($email);
} else {
    $registration->suggestEmail($email);
}
$registration
    ->suggestUsername($user->getUsername() ?: '')
    ->setPayload($payload);

Similar modifications were implemented across other providers. For GitLab (src/Providers/GitLab.php), the code now checks for the presence of the 'confirmed_at' field in the payload. If the field is not empty, the email is marked as trusted; otherwise, the email is treated as suggested. For Google (src/Providers/Google.php), the isEmailTrustworthy() helper method on the user resource owner object is evaluated. For LinkedIn (src/Providers/LinkedIn.php), the 'email_verified' attribute is verified prior to calling provideTrustedEmail().

Exploitation Methodology

To execute an exploit against an affected Flarum instance, an attacker must first determine the email address associated with the target victim's account. This reconnaissance step may utilize publicly available information on the forum or forum metadata. Additionally, the target forum must have the fof/oauth extension enabled with Discord or another affected provider configured as an active authentication method.

The attacker then registers a new Discord account using the victim's exact email address. When prompted for verification, the attacker bypasses email validation by linking a mobile phone number to the Discord account. This satisfies Discord's verification requirements for active accounts while leaving the registered email address in an unverified status.

Finally, the attacker visits the target Flarum forum and initiates the "Login with Discord" flow. When redirected to Discord, the attacker authorizes the application. Discord issues an OAuth token and transmits the payload containing the unverified email and verified: false to the Flarum site. The vulnerable extension processes the payload, fails to validate the verified flag, and passes the email to Flarum Core as a trusted address, completing the passwordless login and account takeover.

Impact Assessment

Successful exploitation of CVE-2026-92161 results in complete, unauthenticated account takeover. An attacker can compromise administrative profiles, gaining full access to sensitive user data, system configuration panels, and restricted forum sections. Because the exploit occurs at the authentication layer, it bypasses any local password requirements, multi-factor authentication (MFA) mechanisms configured on the Flarum instance, and rate-limiting protections.

The vulnerability receives a CVSS v3.1 base score of 9.8, reflecting its critical severity. The attack complexity is low, requiring no specialized privileges or user interaction from the victim. The impact on confidentiality, integrity, and availability is rated high, as the attacker gains full control over the compromised account and can modify system state or lock legitimate users out.

No active exploitation in the wild or weaponized proof-of-concept scripts have been reported. However, the simplicity of the exploitation steps and the widespread use of Discord integration on community forums make rapid patch adoption essential.

Remediation and Mitigation

Remediation of CVE-2026-92161 requires updating the fof/oauth Composer package to the designated secure versions. For environments running on Flarum 1.x, administrators must upgrade the package to version 1.7.4. For environments utilizing the Flarum 2.x beta branch, the package must be upgraded to version 2.0.0-beta.4.

If immediate package updates are not feasible due to deployment freezes or compatibility testing constraints, administrators must disable the affected OAuth providers (Discord, GitLab, Google, and LinkedIn) in the extension configuration panel. This action removes the vulnerable authentication pathways and forces users to authenticate via secure, verified mechanisms.

System administrators should also audit login logs for occurrences of new OAuth linkages that map to high-privilege administrative accounts. Security teams must ensure that any custom OAuth providers developed internally follow the same validation patterns implemented in the patched files, verifying the email authenticity before delegating trust.

Technical Appendix

CVSS Score
9.8/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Affected Systems

FriendsOfFlarum OAuth Extension (fof/oauth)
AttributeDetail
CWE IDCWE-345
Attack VectorNetwork (AV:N)
CVSS Score9.8
EPSS Score0.00
ImpactCritical (Confidentiality, Integrity, Availability)
Exploit StatusNone (PoC concepts documented)
CISA KEV StatusNot Listed
CWE-345
Insufficient Verification of Data Authenticity

The product does not verify, or incorrectly verifies, the authenticity of data, allowing attackers to introduce untrusted data that is treated as trusted.

Vulnerability Timeline

Security patches committed to repository
2026-08-10
Vulnerability publicly disclosed and CVE assigned
2026-09-25

References & Sources

  • [1]GitHub Security Advisory GHSA-g7vj-c29h-3h5m
  • [2]Official CVE.org Record for CVE-2026-92161

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•37 minutes ago•CVE-2026-57440
7.5

CVE-2026-57440: Stored Cross-Site Scripting (XSS) in MediaWiki EmbedVideo Extension

CVE-2026-57440 is a high-severity stored Cross-Site Scripting (XSS) vulnerability affecting the EmbedVideo extension for MediaWiki. When the extension is configured with consent requirements disabled ($wgEmbedVideoRequireConsent = false), video URLs and service IDs are parsed and inserted directly into the 'src' attribute of a generated iframe element without sanitization or context-aware escaping. This allows an attacker with editing privileges to inject arbitrary JavaScript and execute malicious commands in the context of other users' sessions.

Alon Barad
Alon Barad
2 views•7 min read
•about 3 hours ago•CVE-2026-61784
6.1

CVE-2026-61784: HTML Attribute Injection and Sanitizer Bypass in node-xhtml-purifier

A critical sanitizer bypass vulnerability exists in the xhtml-purifier Node.js library prior to version 0.4.3. Due to a lack of HTML entity encoding during the attribute re-serialization phase, unauthenticated remote attackers can break out of double-quoted attribute contexts to inject arbitrary script handlers, resulting in Cross-Site Scripting.

Alon Barad
Alon Barad
3 views•7 min read
•about 4 hours ago•CVE-2026-61741
9.3

CVE-2026-61741: XML External Entity (XXE) Injection in http4s-scala-xml

CVE-2026-61741 is a critical XML External Entity (XXE) injection vulnerability in the http4s-scala-xml library. The vulnerability allows remote, unauthenticated attackers to perform arbitrary local file disclosure, execute server-side request forgery (SSRF) attacks, or cause denial of service via recursive entity expansion. The vulnerability stems from the use of an unconfigured SAXParserFactory, which enables external entity resolution by default.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 5 hours ago•CVE-2026-61742
9.3

CVE-2026-61742: DNS Rebinding to Unauthenticated SQL Execution in DBHub

A critical DNS rebinding vulnerability in DBHub (associated with GHSA-fm8p-53ww-hf6w) allows unauthenticated remote attackers to execute arbitrary SQL queries against local and internal databases. By exploiting a relative origin validation check within the HTTP transport middleware, an attacker can bypass same-origin protections via DNS rebinding. This allows malicious external websites to send JSON-RPC commands to the local DBHub service to read, write, and exfiltrate database contents. The issue affects all versions of DBHub prior to 0.22.5.

Alon Barad
Alon Barad
5 views•7 min read
•about 6 hours ago•CVE-2026-61788
7.4

CVE-2026-61788: Read-Only Bypass in DBHub Database Model Context Protocol Server

CVE-2026-61788 identifies a critical vulnerability in DBHub, an open-source database Model Context Protocol (MCP) server designed to manage and interact with database engines including PostgreSQL, MySQL, SQL Server, Oracle, MariaDB, and SQLite. Prior to version 0.22.6, DBHub fails to securely enforce its declared 'readonly' execution mode. Unauthenticated remote attackers can bypass keyword-based filters and transaction controls to execute arbitrary write operations, manipulate database sequences, read or write files on the host operating system, and potentially execute arbitrary system commands.

Amit Schendel
Amit Schendel
6 views•8 min read
•about 7 hours ago•CVE-2026-56742
5.9

CVE-2026-56742: Missing ReferenceGrant Authorization Check in Cilium Gateway API Request Mirroring

Cilium, a cloud-native networking and security solution for Kubernetes, contains a security bypass vulnerability in its translation engine for Gateway API resources. When parsing HTTPRoute and GRPCRoute configurations, the Cilium Operator fails to apply ReferenceGrant authorization checks to RequestMirror filters. This flaw allows a user with restricted namespace-level permissions to mirror and route traffic to services across namespace boundaries without authorization, leading to cross-namespace data leaks.

Amit Schendel
Amit Schendel
6 views•6 min read