Apr 11, 2026·6 min read·21 visits
An IDOR vulnerability in DNN Platform's messaging API allows attackers to bypass authorization checks and force targeted users to accept friend requests. This exposes restricted profile data and facilitates social engineering attacks. Administrators must upgrade to version 10.2.2 to apply the necessary authorization patch.
DNN Platform (formerly DotNetNuke) versions 6.0.0 through prior to 10.2.2 contain an Improper Authorization and Insecure Direct Object Reference (IDOR) vulnerability. The flaw exists within the internal API endpoint responsible for processing friend request acceptances, allowing an attacker to force a target user to accept a friend request without interaction or consent.
DNN Platform includes a social feature that allows users to establish mutual connections via friend requests. This functionality is governed by a state machine where requests must be explicitly accepted by the intended recipient. The vulnerability, tracked as GHSA-FPJ4-9QHX-5M6M, breaks this authorization model by permitting the initiating user to unilaterally force the acceptance of their own friend request.
The flaw is classified as Improper Authorization (CWE-285) and Insecure Direct Object Reference (CWE-639). It occurs within the API endpoints responsible for managing internal messaging and social interactions. Because the application logic relies solely on the provided request identifier without validating the caller's identity against the intended recipient, attackers can bypass the consent mechanism entirely.
This authorization failure affects DNN Platform versions 6.0.0 through versions prior to 10.2.2. The vulnerability exposes users to privacy violations by granting unauthorized access to restricted profile information. It also provides a vector for targeted social engineering attacks by establishing forced trust relationships on the platform.
The vulnerability resides in the API endpoint responsible for processing friend request acceptances, located under the DesktopModules/InternalServices/API/MessagingService/ directory path. When a user initiates a friend request, the system generates a unique identifier, such as a notificationId or friendshipId, to track the state of the connection attempt. The intended workflow requires the recipient to authenticate and submit this identifier to transition the request state to accepted.
The root cause is a missing contextual authorization check during this state transition. The API endpoint verifies that the supplied request identifier is valid and corresponds to an existing pending request. However, it fails to verify that the session initiating the acceptance action belongs to the user designated as the recipient of the friend request.
This reliance on the identifier alone creates a standard Insecure Direct Object Reference (IDOR) condition. Any authenticated user who possesses a valid request identifier can invoke the state change. Because the attacker initiates the request, they inherently possess the required identifier, allowing them to exploit the missing authorization constraint.
Prior to version 10.2.2, the MessagingServiceController processed acceptance requests based entirely on the provided identifier payload. The controller retrieved the friendship record from the database using the ID but did not perform a subsequent validation against the current execution context. The application implicitly trusted that only the legitimate recipient would submit the ID to the acceptance endpoint.
The patch implemented in version 10.2.2 introduces a strict ownership validation check within the processing logic. Before committing the state change to the database, the controller now compares the UserID of the recipient associated with the friendship record against the UserID of the currently authenticated user. If these values do not match, the application rejects the request.
This validation ensures that the authorization boundary is enforced at the controller layer before state mutations occur.
// Vulnerable conceptual logic prior to 10.2.2
var request = MessagingRepository.GetFriendRequest(payload.FriendshipId);
if (request != null) {
MessagingRepository.AcceptFriendRequest(request);
}
// Patched conceptual logic in 10.2.2
var request = MessagingRepository.GetFriendRequest(payload.FriendshipId);
if (request != null && request.RecipientID == CurrentUser.UserID) {
MessagingRepository.AcceptFriendRequest(request);
} else {
throw new UnauthorizedAccessException();
}Exploitation requires the attacker to possess an active, authenticated account on the target DNN Platform instance. The attacker begins by identifying a target user and initiating a standard friend request through the platform's user interface. This action generates the necessary state record within the application database.
Upon sending the request, the attacker monitors their local HTTP traffic to capture the API response or intercepts the outgoing request payload. This allows the attacker to extract the unique notificationId or friendshipId assigned to the newly created friend request. This identifier is the only parameter required for the subsequent exploitation step.
The attacker constructs a POST request directed at the AcceptFriendRequest API endpoint, appending the captured identifier in the payload. Because the server processes the request without verifying the recipient, the database updates the friendship status to accepted, forcefully establishing the connection without the target's interaction.
The primary consequence of this vulnerability is the compromise of user privacy controls. DNN Platform allows users to restrict the visibility of profile information, activity feeds, and uploaded media exclusively to confirmed friends. By forcing a connection, an attacker bypasses these privacy controls and gains persistent read access to restricted data.
Beyond data exposure, the forced relationship facilitates targeted social engineering and phishing campaigns. The platform UI presents the attacker as a trusted connection, which can be leveraged to distribute malicious links or extract sensitive information from the target. The implicit trust associated with a confirmed friendship significantly increases the likelihood of a successful secondary attack.
The vulnerability also enables attackers to perform metadata harvesting across the platform. By systematically forcing connections across a user base, an attacker can reconstruct internal social graphs and organizational hierarchies. This reconnaissance data provides utility for planning wider compromise strategies against the organization hosting the platform.
The vendor has addressed this vulnerability in DNN Platform version 10.2.2. This release functions as a security-focused hotfix designed to provide immediate remediation for organizations unable to perform major version upgrades. Administrators must deploy this update to securely enforce authorization boundaries within the messaging and social components.
Organizations utilizing legacy versions ranging from 6.0.0 up to the 10.2.x branch are strongly advised to prioritize this patch. The update applies a fundamental logic change to the MessagingServiceController and does not require extensive configuration modifications or schema changes. Applying the update permanently eliminates the IDOR condition.
In environments where immediate patching is strictly prohibited by change management policies, defensive monitoring can provide temporary visibility. Security teams should configure Web Application Firewalls (WAF) to log and alert on POST requests to the AcceptFriendRequest endpoint that originate from the same IP address or session that recently initiated a friend request. While this does not prevent the exploit, it provides an audit trail of forced connections.
| Product | Affected Versions | Fixed Version |
|---|---|---|
DNN Platform DNN Software | >= 6.0.0, < 10.2.2 | 10.2.2 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-285, CWE-639 |
| Attack Vector | Network |
| Authentication | Required (Low Privilege) |
| Severity | Moderate |
| Exploit Status | Proof of Concept Known |
| CISA KEV | Not Listed |
The system fails to check if the user is authorized to access the object requested via a user-supplied ID.
A critical stored Cross-Site Scripting (XSS) vulnerability was identified in Froxlor server administration software panel before version 2.3.8. Authenticated customers with DNS editor privileges can inject malicious JavaScript into DNS TXT records. Because the application processes these values via a raw formatting callback without context-aware HTML entity encoding, the payload executes in the security context of administrative users who view the affected domain's DNS zones.
An authenticated administrator with privileges to manage admin accounts (such as change_serversettings) can execute arbitrary SQL commands via a second-order SQL injection vulnerability. The flaw resides in Froxlor's administrative API endpoints, specifically during the handling of IP address mapping parameters which are stored as serialized arrays and later interpolated without sanitization into active database queries. This vulnerability allows high-privileged administrative attackers to compromise the database. By injecting a payload into administrative profile metadata, an attacker can extract sensitive credentials, manipulate backend settings, or potentially disrupt database integrity. The vulnerability affects all versions of Froxlor prior to 2.3.8.
CVE-2026-54543 is a DNS Resource Record (RR) Injection vulnerability in Froxlor, an open-source server administration control panel. Prior to version 2.3.8, the DomainZones.add API command failed to perform strict sanitization and validation on the user-controlled record (label) and type parameters before serializing them into BIND-compatible zone files. An authenticated customer with DNS zone management permissions can inject control characters, breaking out of the original record context to define unauthorized resource records within managed zones.
CVE-2026-42533 is a critical security vulnerability discovered in NGINX Open Source, NGINX Plus, NGINX Ingress Controller, and related products, referred to as the 'Two-Pass Capture-Clobbering' bug. The flaw is situated within NGINX's internal evaluation engine when handling complex variables, exposing a heap-based buffer overflow and information leak when a configuration chains regular expression-based map directives with numbered capture groups. An unauthenticated remote attacker can exploit this weakness by transmitting crafted HTTP requests to trigger remote code execution or defeat ASLR.
Froxlor prior to version 2.3.8 contains a high-severity architectural flaw where the standalone lib/ajax.php entry point bypasses the centralized request validation in lib/init.php. Unauthenticated remote attackers can leverage Cross-Site Request Forgery (CSRF) to induce authenticated administrators to submit forged requests that modify API key whitelists and expiration dates, potentially yielding persistent, out-of-band administrative control.
An insecure data retrieval flaw in the Froxlor server administration panel API allows authenticated remote attackers to retrieve unredacted bcrypt password hashes and Base32-encoded Time-Based One-Time Password (TOTP) seeds. Affected endpoints include several 'get' and 'listing' handlers for customers, administrators, and FTP accounts. Utilizing these leaked parameters, attackers can crack the password hashes offline and concurrently generate valid second-factor authentication codes to completely bypass access controls.