Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister subscriber account
-
DeliveryStore malicious display_name in profile
-
ExploitTrigger cached user editor re-read
-
ExecutionBlind time-based SQLi executes
-
ImpactInfer 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
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.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
More in Wp Directory Kit
View allThe WP Directory Kit plugin for WordPress is vulnerable to SQL Injection via the 'attribute_value' and 'attribute_id' pa
Unauthenticated SQL injection in WP Directory Kit WordPress plugin (all versions before 1.5.6) allows remote attackers t
SQL injection in WP Directory Kit WordPress plugin (all versions before 1.5.6) allows any authenticated user - including
The WP Directory Kit plugin for WordPress is vulnerable to authentication bypass in all versions up to, and including, 1
The WP Directory Kit plugin for WordPress is vulnerable to Local File Inclusion in versions up to, and including, 1.1.9
SQL injection via an unsecured AJAX endpoint in WP Directory Kit (WordPress plugin) before 1.5.5 allows any authenticate
WP Directory Kit versions before 1.5.5 expose the plugin's full settings - including sensitive API keys and third-party
SQL injection in WP Directory Kit WordPress plugin before 1.5.7 is exploitable by authenticated administrators, with mat
Stored cross-site scripting in the WP Directory Kit WordPress plugin before version 1.5.8 lets an authenticated user who
SQL injection in the WP Directory Kit WordPress plugin (versions through 1.5.7) lets authenticated users with page-build
Unauthorized data exposure in the WP Directory Kit WordPress plugin (all versions before 1.5.5) allows any authenticated
WP Directory Kit WordPress plugin before version 1.5.5 exposes sensitive site data to any authenticated user due to miss
EUVD-2026-96283
GHSA-m2v9-gpjj-2h93
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB