Skip to main content

WP Directory Kit CVE-2026-96653

| EUVDEUVD-2026-96283 MEDIUM
SQL Injection (CWE-89)
2026-10-10 Wordfence GHSA-m2v9-gpjj-2h93
6.5
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Register subscriber account
  2. Delivery
    Store malicious display_name in profile
  3. Exploit
    Trigger cached user editor re-read
  4. Execution
    Blind time-based SQLi executes
  5. Impact
    Infer database contents via timing

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Persistence

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires (1) an authenticated account with subscriber-level access or above - practically, the site must permit user registration or the attacker must otherwise obtain a low-privilege account; and (2) the WP Directory Kit plugin installed and active at version 1.5.9 or earlier. The specific trigger is editing the user profile's 'display_name' field with a single-quote-based payload, which is stored verbatim by WordPress and only fires later when WdkCachedUserEditor::update_listings_user_editor() re-reads the cached value into the SQL query (second-order). Limiting factors: this is blind/time-based, so extraction is slow and generates measurable request volume; no code execution, data modification, or denial of service results (C:H/I:N/A:N); and sites that disable open registration or restrict profile editing significantly raise the bar.

Impact

This is a genuine but moderate-priority vulnerability, not a drop-everything emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N, base 6.5) is internally consistent with the description: network-reachable, low-complexity, requiring low privileges (PR:L corresponds to the stated subscriber-level authenticated access), with high confidentiality impact (database extraction) and no integrity or availability impact. The authentication requirement (PR:L) is the single biggest risk-limiter - an attacker must be able to register or already hold a subscriber account, so sites that disable open registration materially reduce exposure. No EPSS score, KEV listing, or POC was provided in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation; exploitation probability signals are simply absent rather than conflicting. The second-order, time-based blind nature means data exfiltration is slow and noisy (character-by-character inference), which further reduces practical mass-exploitation appeal compared to in-band SQLi. Net: a real, patch-worthy confidentiality flaw on affected sites that allow subscriber registration, but the low-privilege gate, blind time-based extraction mechanics, and absence of any exploitation/POC signal place it below critical internet-facing unauthenticated issues in triage order.

Exploit ScenarioDerived

An attacker registers a subscriber account on a WordPress site running WP Directory Kit <=1.5.9, then edits their own profile to store a display_name containing SQL injection syntax (e.g., a single quote plus a time-based payload). When WdkCachedUserEditor::update_listings_user_editor() later re-reads that stored display_name and concatenates it into a query, the payload executes, letting the attacker infer sensitive database contents (user credentials, secrets) via response-timing oracles. No public exploit code was identified at time of analysis; exploitation requires only subscriber-level authentication and no victim interaction.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 10, 2026

Time-based blind SQL injection in the WP Directory Kit plugin for WordPress (all versions up to and including 1.5.9) allows authenticated attackers holding subscriber-level access or above to append extra SQL into an existing query and read sensitive information from the site database. The issue is second-order: a subscriber stores a display_name value containing a single quote, which WordPress preserves verbatim, and the payload only fires later when WdkCachedUserEditor::update_listings_user_editor() re-reads that cached value into the SQL sink without escaping or prepared-statement parameterization. Rated CVSS 6.5 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N), the impact is confidentiality-only and blind, so exfiltration is slow and generates measurable request volume; no public exploit code has been identified at time of analysis and there is no confirmed active exploitation (CISA KEV).

RemediationAI

No vendor-released fixed version is identified in the available intelligence, so the primary action is to track the WP Directory Kit plugin page and the Wordfence advisory (https://www.wordfence.com/threat-intel/vulnerabilities/id/87aa7d7e-f6f4-42c1-9b15-2fcab6750cd3?source=cve) and apply the patched release as soon as it is published; until then the most reliable fix is to deactivate and remove the plugin, accepting the loss of directory functionality. If removal is not possible, close the practical entry point by disabling open user registration and stopping subscribers from editing their display_name (for example by unsetting the display_name field on profile update or restricting profile.php to higher roles), which prevents the tainted value from ever being stored - the trade-off is that legitimate self-service profile editing is lost and any pre-existing poisoned display_name values should be cleared and reviewed. A WAF or WordPress security plugin can apply a virtual patch with SQL-injection signatures, including detection of time-based constructs such as SLEEP, BENCHMARK, and stacked conditional expressions, but this is signature-dependent and bypassable via encoding, so treat it as defense in depth rather than a fix. Because the injection is blind and time-based, monitor web and database logs for abnormally long or uniform response times at the profile-update and listing-editor endpoints and alert on repeated timing anomalies, and ensure the WordPress database user holds only the minimum privileges needed so extracted data cannot be leveraged further. Note that none of these mitigations repair the underlying query construction in vendor/Winter_MVC/core/database.php or extensions/wdk-cached-user-editor.php; only an upstream code fix that properly parameterizes the query does that.

Affected VersionsENISA

WP Directory Kit 0 ≤1.5.9

Affected Packages

euvd wp_directory_kit no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause class is CWE-89, SQL Injection, realized here as a classic second-order (stored) injection in the Winter MVC data layer that WP Directory Kit bundles. WordPress stores the user's display_name essentially verbatim, so an attacker-supplied single quote survives persisting to the database and is not present at the time of the initial request. On a later code path, WdkCachedUserEditor::update_listings_user_editor() (see extensions/wdk-cached-user-editor.php around lines 21 and 52) retrieves that cached value and concatenates it into a query assembled in vendor/Winter_MVC/core/database.php near line 553, where insufficient escaping on the user-supplied parameter and lack of sufficient query preparation allow the injected fragment to alter the intended SQL statement. Because no query results are reflected to the attacker, extraction must be performed blind using time-based inference (conditional delays), which is reliable but slow and leaves a distinctive timing signature. The CPE cpe:2.3:a:wpdirectorykit:wp_directory_kit:*:*:*:*:*:*:*:* records all versions of the plugin as affected with no fixed version enumerated in the supplied intelligence. Exploitation has no integrity or availability component (I:N/A:N): the attacker reads data only, cannot modify or destroy records, and cannot achieve code execution or denial of service through this vector.

Know when Wp Directory Kit gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Wordfence) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 6.5 MEDIUM

Subscriber account needed so PR:L; stored payload fires reliably on a routine code path so AC:L; data read only, hence C:H with I:N/A:N.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

DescriptionCVE.org

The WP Directory Kit plugin for WordPress is vulnerable to time-based SQL Injection via 'display_name' Profile Field (Second-Order) in all versions up to, and including, 1.5.9 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for authenticated attackers, with subscriber-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database. This is a second-order injection: a Subscriber stores a display_name containing a single quote via their own profile, which WordPress preserves verbatim; the payload is then triggered when WdkCachedUserEditor::update_listings_user_editor() re-reads that stored value and passes it unsanitized to the SQL sink.

Threat Intelligence Overview

EPSS Score
0.2%
Top 85% exploitable
Prevalence
Low
niche third-party WordPress directory plugin, limited install footprint
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

CVE-2024-3217 HIGH
8.8 Apr 05

The WP Directory Kit plugin for WordPress is vulnerable to SQL Injection via the 'attribute_value' and 'attribute_id' pa

CVE-2026-18474 HIGH POC
8.6 Aug 12

Unauthenticated SQL injection in WP Directory Kit WordPress plugin (all versions before 1.5.6) allows remote attackers t

CVE-2026-18230 HIGH POC
8.1 Aug 12

SQL injection in WP Directory Kit WordPress plugin (all versions before 1.5.6) allows any authenticated user - including

CVE-2025-13390 CRITICAL POC
10.0 Dec 03

The WP Directory Kit plugin for WordPress is vulnerable to authentication bypass in all versions up to, and including, 1

CVE-2023-2278 CRITICAL POC
9.8 Jun 13

The WP Directory Kit plugin for WordPress is vulnerable to Local File Inclusion in versions up to, and including, 1.1.9

CVE-2026-16589 HIGH POC
7.7 Aug 08

SQL injection via an unsecured AJAX endpoint in WP Directory Kit (WordPress plugin) before 1.5.5 allows any authenticate

CVE-2026-16594 HIGH POC
7.5 Aug 08

WP Directory Kit versions before 1.5.5 expose the plugin's full settings - including sensitive API keys and third-party

CVE-2026-18653 HIGH POC
7.2 Aug 16

SQL injection in WP Directory Kit WordPress plugin before 1.5.7 is exploitable by authenticated administrators, with mat

CVE-2026-16591 HIGH POC
7.2 Sep 26

Stored cross-site scripting in the WP Directory Kit WordPress plugin before version 1.5.8 lets an authenticated user who

CVE-2026-16593 MEDIUM POC
6.8 Sep 15

SQL injection in the WP Directory Kit WordPress plugin (versions through 1.5.7) lets authenticated users with page-build

CVE-2026-16590 MEDIUM POC
6.5 Aug 08

Unauthorized data exposure in the WP Directory Kit WordPress plugin (all versions before 1.5.5) allows any authenticated

CVE-2026-16595 MEDIUM POC
6.5 Aug 08

WP Directory Kit WordPress plugin before version 1.5.5 exposes sensitive site data to any authenticated user due to miss

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy