☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Profilegrid logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 4.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N 🐛 CWE-862
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-13416

CVE-2025-13416 — ProfileGrid – User Profiles, Groups and Communities <= 5.9.7.2 - Missing Authorization to Authenticated (Subscriber+) Arbitrary User Suspension
📅 PUBLISHED: 2026-02-05 08:25 UTC 🔄 UPDATED: 2026-09-23 18:52 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.01%
👁️
0.01% probability
<1× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 4.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: N Confidentiality None
I: L Integrity Low
A: N Availability None
4.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-13416 is a Missing Authorization vulnerability in the ProfileGrid – User Profiles, Groups and Communities WordPress plugin (versions up to and including 5.9.7.2). The flaw resides in the pm_deactivate_user_from_group() function, which is invoked via the pm_deactivate_user_from_group AJAX action. Due to a missing capability check, any authenticated attacker with Subscriber-level access or above can suspend arbitrary users from groups, including administrators. This allows a low-privileged attacker to disrupt group management and potentially cause denial-of-service conditions for privileged users.

The vulnerability is classified as CWE-862: Missing Authorization and carries a CVSS v3.1 base score of 4.3 (Medium). No public exploit code or proof-of-concept has been released, and the vendor has not yet provided a patch. The EPSS score is 0.0%, indicating a low probability of exploitation in the wild at this time.

⚡ 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 a WordPress plugin distributed via the official WordPress plugin repository. Users are advised to monitor the plugin’s update channel and apply any security patches as soon as they become available. Since the plugin is part of the WordPress ecosystem, the risk extends to any site using the vulnerable version.

CVSS Breakdown & Threat Level

Metric Value
Attack Vector (AV) Network
Attack Complexity (AC) Low
Privileges Required (PR) Low
User Interaction (UI) None
Scope (S) Unchanged
Confidentiality (C) None
Integrity (I) Low
Availability (A) None
Base Score 4.3 (Medium)

Threat Level: Medium. The vulnerability requires authentication but allows a low-privileged user to suspend administrators from groups, potentially disrupting group operations.

Deep Dive & Mechanics

The vulnerability exists in the pm_deactivate_user_from_group() function, which is registered as an AJAX handler for the pm_deactivate_user_from_group action. The function is intended to allow group managers or administrators to remove (suspend) a user from a group. However, the code does not perform a proper capability check (e.g., current_user_can('manage_options') or a group-specific permission check). As a result, any authenticated user, including those with only Subscriber privileges, can call this AJAX action and provide a user ID and group ID to suspend any user from any group.

The attack flow:

  1. Attacker authenticates as a Subscriber.
  2. Attacker sends a POST request to /wp-admin/admin-ajax.php with action=pm_deactivate_user_from_group, user_id=<target_user_id>, and group_id=<target_group_id>.
  3. The plugin processes the request without verifying the attacker’s permissions.
  4. The target user is suspended from the specified group.

This can be used to remove administrators from groups, causing disruption to group management and potentially locking out legitimate group managers.

Vulnerable vs. Patched Code

Vulnerable Code (<= 5.9.7.2):

function pm_deactivate_user_from_group() {
    $user_id = intval($_POST['user_id']);
    $group_id = intval($_POST['group_id']);
    // Missing capability check
    // ... code to remove user from group ...
    wp_die();
}
add_action('wp_ajax_pm_deactivate_user_from_group', 'pm_deactivate_user_from_group');

Patched Code (Hypothetical):

function pm_deactivate_user_from_group() {
    // Add capability check
    if (!current_user_can('manage_options') && !pm_is_group_admin($group_id)) {
        wp_die('Unauthorized', 403);
    }
    $user_id = intval($_POST['user_id']);
    $group_id = intval($_POST['group_id']);
    // ... code to remove user from group ...
    wp_die();
}
add_action('wp_ajax_pm_deactivate_user_from_group', 'pm_deactivate_user_from_group');

The patch adds a capability check to ensure only users with manage_options (administrators) or group admin privileges can suspend users.

Exploitation & Lab Setup

Red Team (Proof of Concept)

Prerequisites:

  • A WordPress site with ProfileGrid plugin version <= 5.9.7.2.
  • Valid credentials for a Subscriber-level account.

Exploit Steps:

  1. Obtain a nonce for the AJAX action (if required). In many cases, the nonce is not checked, but if it is, you can extract it from the page source.
  2. Send a crafted POST request using curl:
curl -X POST \
  -d "action=pm_deactivate_user_from_group&user_id=1&group_id=2" \
  -c cookies.txt \
  -b cookies.txt \
  http://target-site.com/wp-admin/admin-ajax.php

Replace user_id=1 with the ID of the target user (e.g., an administrator) and group_id=2 with the ID of the group from which to suspend them.

Expected Result: The target user is removed from the group, and the attacker (Subscriber) gains the ability to disrupt group membership.

Blue Team (Detection & Hardening)

Detection:

  • Monitor AJAX requests to admin-ajax.php with action=pm_deactivate_user_from_group from non-admin users.
  • Alert on any suspension of high-privilege users (e.g., administrators) from groups.

Hardening:

  • Apply the vendor patch as soon as it becomes available.
  • As a temporary workaround, add a capability check via a custom plugin or code snippet:
add_action('wp_ajax_pm_deactivate_user_from_group', function() {
    if (!current_user_can('manage_options')) {
        wp_die('Unauthorized', 403);
    }
}, 1);
  • Restrict AJAX endpoints to specific user roles using a Web Application Firewall (WAF) rule.

Indicators of Compromise (IOCs)

  • Log Entries: AJAX requests to /wp-admin/admin-ajax.php with action=pm_deactivate_user_from_group from IPs not associated with group managers.
  • User Suspension Events: Unexpected removal of users from groups, especially administrators.
  • HTTP Requests:
    • POST to /wp-admin/admin-ajax.php
    • Body contains action=pm_deactivate_user_from_group
    • Parameters: user_id, group_id

Detection Engineering

YARA Rule

rule CVE_2025_13416_ProfileGrid_Missing_Auth {
    meta:
        description = "Detects exploitation attempts of CVE-2025-13416 in ProfileGrid plugin"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-13416"
    strings:
        $ajax_action = "pm_deactivate_user_from_group"
        $user_id = "user_id"
        $group_id = "group_id"
    condition:
        all of them
}

Sigma Rule

title: ProfileGrid CVE-2025-13416 Exploitation Attempt
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects AJAX requests to pm_deactivate_user_from_group from non-admin users
author: Valters IT
date: 2025/04/10
logsource:
    category: webserver
    product: apache
    service: access_combined
detection:
    selection:
        cs-method: POST
        cs-uri-query|contains: "action=pm_deactivate_user_from_group"
    condition: selection
falsepositives:
    - Legitimate group manager actions (if capability check is missing)
level: medium

Suricata Rule

alert http any any -> any any (
    msg:"CVE-2025-13416 ProfileGrid Missing Authorization Attempt";
    flow:to_server,established;
    content:"POST";
    http_method;
    content:"/wp-admin/admin-ajax.php";
    http_uri;
    content:"action=pm_deactivate_user_from_group";
    http_client_body;
    classtype:attempted-user;
    sid:1000001;
    rev:1;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin if group suspension functionality is not critical.
  2. Apply a temporary code fix as described in the Blue Team section to add a capability check.
  3. Monitor logs for suspicious AJAX requests targeting this endpoint.

Long-Term Fix:

  • Update to a patched version of ProfileGrid once released by the vendor.
  • Implement role-based access controls for all AJAX actions in custom plugins.

Valters IT Signature:

Report generated by Valters IT DevSecOps AI Assistant | CVE-2025-13416 Analysis

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

http.title:"ProfileGrid"
http.html:"profilegrid"
wp-content/plugins/profilegrid

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-13416/ · 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.