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

CVE-2026-86583

CVE-2026-86583 Privilege Escalation in Import and export users and customers
📅 PUBLISHED: 2026-09-23 00:00 UTC 🔄 UPDATED: 2026-09-25 05:00 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the 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.33%
👁️
0.33% probability
8.3× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1078
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: USA License: Open Source
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 8.8
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: H Confidentiality High
I: H Integrity High
A: H Availability High
8.8
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-86583 is a privilege escalation vulnerability in the WordPress plugin "Import and export users and customers" affecting all versions up to and including 2.4.17. An authenticated attacker with Subscriber-level access or above can craft profile field values and rely on an escape-character mismatch between the plugin's CSV export and import routines to have their role parsed as Administrator during a site administrator-initiated export/re-import migration. Successful exploitation yields full administrative control of the WordPress site.

⚡ 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

Technical Analysis

The vulnerability is a desynchronization between the CSV serialization (export) and deserialization (import) logic within the same plugin. The exporter writes CSV cells using fputcsv() with a NUL byte (\0) specified as the escape character. The importer reads the same file using SplFileObject::fgetcsv() with only a single delimiter argument supplied, which causes PHP to apply its default backslash (\) escape character instead of the NUL byte used during export.

This escape-character mismatch produces divergent parsing behavior between the two operations. The export column layout is significant: display_name is placed immediately before the role column, and nickname is placed immediately after role. An attacker can store crafted values in the display_name and nickname profile fields, which WordPress core saves through the standard profile page without specialized privileges. When the crafted CSV is re-imported, the mismatched escape handling causes the parser to merge the display_name cell into the role field (field shifting/column merge), while the column count is rebalanced via the nickname cell. The net effect is that the attacker's own CSV row presents administrator as the parsed role value when it reaches the import_user function's add_role call.

This is classified as CWE-266 (Incorrect Privilege Assignment). The root cause is not a memory-safety or injection flaw but a logic/parsing inconsistency that permits controlled field-boundary manipulation through user-modifiable profile data. The mechanism is deterministic given the described escape mismatch and column adjacency, but requires precise attacker-controlled content in two specific profile fields.

Exploitation requires a site administrator to trigger the plugin's documented export/re-import migration workflow with both "Update existing users" and "Update roles for existing users" set to "yes." This introduces an administrator action dependency that shapes the attack chain — the attacker cannot complete escalation unilaterally.

CVSS v3.1 vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (8.8 High) reflects: network-reachable attack surface (AV:N), low attack complexity given the deterministic parsing behavior (AC:L), low privileges required (Subscriber-level, PR:L), no user interaction scored (UI:N per the vector), unchanged scope, and high confidentiality, integrity, and availability impact (full admin compromise). Note the operational requirement for an administrator to run the migration is a real-world constraint not fully represented in the UI:N subscore.

Exploitation Scenarios

No public PoC is available; the attack chain below is derived strictly from the NVD description of the flaw class and the plugin's documented export/re-import workflow. No specific function names, endpoints, or parameters beyond those in the description are asserted.

  1. Reconnaissance / target identification. The attacker identifies a WordPress site running the "Import and export users and customers" plugin at a version up to and including 2.4.17. Since exploitation requires an administrator to perform the plugin's export/re-import migration, a realistic precondition is that the target periodically performs this migration (for example, for user data synchronization or bulk role maintenance). This makes the attack a longer-horizon, low-noise operation rather than a single-shot exploit.

  2. Prerequisite access and payload staging. The attacker obtains any authenticated account at Subscriber level or above. Using the standard WordPress profile page, the attacker stores crafted values in the display_name and nickname profile fields. These fields are saved by WordPress core and are not privileged operations, so no additional access is required. The crafted values are designed so that, under the exporter's NUL-byte escape convention versus the importer's backslash escape convention, the display_name cell merges into the adjacent role column and the nickname cell rebalances the column count — resulting in the attacker's row presenting administrator as the parsed role.

  3. Parser desynchronization. When the administrator triggers the documented export and then re-imports the file, fputcsv() (export, NUL-byte escape) and SplFileObject::fgetcsv() (import, default backslash escape) disagree on how the crafted cells are delimited. This desynchronization shifts the parsed column contents so that the attacker's own row contains an administrator role value by the time the importer processes it through import_user's add_role invocation.

  4. Post-exploitation impact. Because the import is executed with both "Update existing users" and "Update roles for existing users" set to "yes," the parsed administrator role is applied to the attacker's existing account. The attacker then has full administrative privileges on the WordPress instance, enabling site takeover, installation of malicious plugins or themes, user and content manipulation, and potential server-side pivoting via plugin/theme upload. Because the escalation is achieved through a routine administrative migration, the change may be attributed to legitimate administrative activity.

Impact Assessment

A successful attack grants the attacker full WordPress Administrator privileges from a Subscriber-level starting point. This is a high-severity, high-integrity-impact outcome: the attacker can install arbitrary plugins/themes (frequently a pathway to remote code execution), exfiltrate user data, modify site content, create backdoor accounts, and weaponize the site as an infection or phishing distribution point. Confidentiality and integrity impact are rated High under the CVSS vector; availability impact is also High, since an administrator-level attacker can deface, disable, or destroy the site.

The blast radius is bounded by the single WordPress instance hosting the vulnerable plugin, but downstream consequences can extend to site visitors, other tenants on shared hosting, and any systems trusting the compromised site (SSO, federated logins, or content consumers). Multi-site WordPress installations may amplify impact across all sites sharing the compromised administrative account. No CISA KEV listing exists and no exploit code is publicly available, but the low privilege requirement (Subscriber) and deterministic parsing behavior make this attractive for targeted attacks — particularly against multimember sites (membership, community, LMS, e-commerce) where Subscriber accounts are trivially obtainable. The required administrator-triggered migration workflow is the primary limiting factor and should be treated as a detection opportunity.

Detection Guidance

Sigma Rule

title: WordPress Privilege Escalation via Import/Export Users and Customers Role Manipulation
id: 8f3a1c2e-4b7d-4e91-9a2c-7d6e5f0123ab
status: experimental
description: Detects administrator role assignment events following the plugin's export/re-import migration workflow, indicative of CVE-2026-86583.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-86583
author: Valters IT Threat Intelligence
date: 2026/01/01
logsource:
  product: wordpress
  service: audit
detection:
  selection_role:
    event_type: 'user_role_changed'
    new_role: 'administrator'
  selection_actor:
    actor_username|contains: ''
  timeframe: 10m
  condition: selection_role
falsepositives:
  - Legitimate administrative promotion of users during migration
level: high
tags:
  - attack.privilege_escalation
  - attack.t1078

YARA Rule

rule CVE_2026_86583_Import_Export_Role_Escalation
{
    meta:
        description = "Detects crafted profile values matching the Import/Export users and customers role-merge pattern (CVE-2026-86583)"
        author = "Valters IT Threat Intelligence"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-86583"
        date = "2026-01-01"

    strings:
        $role = "administrator"
        $display = "display_name"
        $nick = "nickname"
        $csv = ".csv"
        $addrole = "add_role"

    condition:
        filesize < 10MB and
        (uint32(0) == 0x5369676E or $csv) and
        $role and
        ($display or $nick) and
        #role >= 1
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-86583 WordPress Import/Export Users Privilege Escalation Attempt"; flow:to_server,established; http.method; content:"POST"; http.uri; content:"admin"; http.header; content:"Content-Type|3a 20|multipart/form-data"; content:"import-users-and-customers"; nocase; content:"administrator"; nocase; reference:cve,2026-86583; classtype:attempted-admin; sid:202686583; rev:1;)

Elastic Detection

sequence by user.name with maxspan=15m
  [ authentication where event.category == "authentication" and event.outcome == "success" ]
  [ iam where event.action == "user_role_changed" and user.target.roles : "administrator" ]

Splunk SPL Query

index=wordpress sourcetype=wp_audit (action="user_role_changed" OR action="set_role")
| search role="administrator"
| stats count min(_time) as first_seen max(_time) as last_seen by user actor_ip addressed_user
| where count > 0
| table first_seen last_seen user actor_ip addressed_user count
| sort - first_seen

Wazuh OSSEC Rule

<group name="wordpress,cve-2026-86583,">
  <rule id="200865" level="12">
    <if_sid>200000</if_sid>
    <decoded_as>json</decoded_as>
    <field name="action">user_role_changed</field>
    <field name="new_role">administrator</field>
    <description>CVE-2026-86583: Possible privilege escalation to administrator via Import/Export users migration</description>
    <mitre>
      <id>T1078</id>
    </mitre>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 2/4 (CLAIMED — single source claims patch, not independently confirmed). No vendor advisory or specific fixed version has been confirmed; affected versions are listed as all versions up to and including 2.4.17.

  1. Immediate mitigations.

    • Temporarily disable or remove the "Import and export users and customers" plugin until a confirmed fix is available. This eliminates the exploitable export/re-import code path entirely.
    • If the plugin must remain active, suspend any export/re-import migration runs. Because exploitation depends on an administrator triggering the documented export + re-import workflow with "Update existing users" and "Update roles for existing users" set to "yes," eliminating these operations removes the trigger.
    • Audit existing accounts for unexpected administrator role assignments, especially any user whose promotion correlates with a past migration run.
  2. Patch / upgrade steps.

    • Monitor the plugin vendor's channel and NVD for a confirmed fixed version. The current patch status rests on a single unverified source — do not assume any specific version resolves the issue without independent confirmation.
    • Once a fix is confirmed, update the plugin and re-verify the export/import round-trip behavior (escape-character handling between fputcsv() and SplFileObject::fgetcsv()).
    • After upgrading, re-audit administrative accounts and rotate credentials for any account of uncertain provenance.
  3. Long-term hardening.

    • Enforce least privilege: restrict Subscriber account provisioning on sites running this plugin, and monitor self-registration endpoints.
    • Treat export/re-import operations as sensitive administrative actions requiring change tickets, logging, and post-change role review.
    • Integrate WordPress role-change auditing into the SIEM and alert on any administrator grant that does not correspond to an approved change.
    • Maintain disciplined plugin lifecycle management — inventory, version tracking, and prompt patching — to reduce exposure to plugin-specific logic flaws of this class.

References

No public proof-of-concept, Nuclei template, or exploit code is currently available. CVE-2026-86583 is not listed in CISA KEV. No threat actor campaign or exploit-in-the-wild evidence has been identified.

👁️ 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.

product:"WordPress"
title:"WordPress"
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-86583/ · 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.