Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain contributor-level WordPress account
-
DeliveryCraft widgetData with legacy theme key and columns array
-
ExploitPOST to /wp-json/sowb/v1/widgets/previews endpoint
-
ExecutionBypass update_fields validation to set theme path
-
PersistInclude and execute arbitrary .php file
-
ImpactRun PHP code / disclose data on server
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V5 - File Handling File inclusion prevention, allowlisting
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Command and Control The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated WordPress account with contributor-level privileges or higher (PR:L). The attacker must send a crafted widgetData payload that includes a legacy top-level 'theme' key together with a non-empty 'columns' array to the /wp-json/sowb/v1/widgets/previews REST endpoint; this specific structure is what bypasses field validation because update_fields() only processes declared form fields. Pure LFI (including/executing .php files already present on the server) works against default installs of affected versions (≤1.73.2), but achieving arbitrary attacker-controlled PHP code execution additionally requires a path to upload a .php file that can then be included. Limiting factors: the contributor-authentication barrier, the need for a precisely malformed payload (reflected in AC:H), and dependency on an uploadable .php file for the maximal RCE impact. |
| Impact | This is a genuine but conditional priority rather than a drop-everything emergency. The CVSS 3.1 base score of 7.5 (AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H) reflects network reachability via the /wp-json/sowb/v1/widgets/previews REST endpoint, but two signals temper it: PR:L requires authenticated contributor-level access (not anonymous), and AC:H reflects the crafted widgetData payload needed to bypass update_fields() validation. No EPSS score, KEV listing, or public POC was supplied in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation; the finding was reported by Wordfence (a credible plugin-security source) via its threat-intel database. The C:H/I:H/A:H impact is achievable because LFI of attacker-controllable .php files yields arbitrary code execution, but note the description explicitly conditions full code execution on 'cases where .php file types can be uploaded and included' - so the worst-case RCE outcome depends on a secondary upload capability, while pure LFI of existing server .php files is always available. Net: credible authenticated LFI-to-RCE in a very widely installed plugin, meriting prompt patching, but the contributor-auth requirement and absence of exploitation signals place it below an unauthenticated-RCE emergency. |
| Exploit ScenarioDerived | An attacker who holds or phishes a WordPress contributor account sends a malicious widgetData payload containing a legacy top-level 'theme' key alongside a non-empty columns array to the /wp-json/sowb/v1/widgets/previews REST endpoint, bypassing field validation. The supplied path is used to include a .php file on the server, executing its code; where the attacker can also upload a .php file (e.g., via a permissive media or import feature), this escalates to arbitrary remote code execution. No public exploit code was identified in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 02, 2026
Local file inclusion in the SiteOrigin Widgets Bundle WordPress plugin, in all versions up to and including 1.73.2, lets authenticated attackers with contributor-level access or higher (PR:L per the assessed vector) include and execute server-side .php files, bypassing access controls and exposing sensitive data; full attacker-controlled code execution is conditional on also having a way to place a .php file on the server that can then be included. The flaw is reached remotely by POSTing a crafted widgetData payload containing a legacy top-level 'theme' key together with a non-empty 'columns' array to the /wp-json/sowb/v1/widgets/previews REST endpoint, a structure that slips past validation because update_fields() only processes declared form fields. No public exploit code and no confirmed active exploitation were identified at time of analysis, but the low privilege bar (any contributor account) and the fact that the vulnerable endpoint is REST-reachable without UI interaction make this a conditional priority rather than a drop-everything emergency.
RemediationAI
No exact patched release number is stated in the available data, so the safest specific action is to confirm the installed plugin version and upgrade past 1.73.2 to the current WordPress.org release as soon as it is published, since the upstream fix is present in the plugin repository changeset at https://plugins.trac.wordpress.org/changeset/3605767/ (upstream fix available via commit; released patched version not independently confirmed) - this is the only complete fix and it is a straightforward in-place plugin update with low side-effect risk beyond normal regression testing of widget previews. Until the update is verified deployed, the highest-value compensating control is to stop untrusted users from holding contributor-level or higher roles: audit accounts, remove or downgrade contributor/author/editor roles on sites that do not genuinely need them, and require stronger vetting before granting them, at the cost of editorial workflow friction. A second control is to block or restrict requests to /wp-json/sowb/v1/widgets/previews (and the broader /wp-json/sowb/ namespace) for non-administrator sessions using a WAF, reverse proxy rule, or a must-use plugin capability check; the trade-off is that this can break block-editor/widget preview functionality for legitimate lower-privileged authors. Third, if the plugin is not actively used for widget rendering, deactivate and delete it rather than leaving it patched-but-idle, and independently enforce that .php uploads are rejected site-wide (harden the media library, review any plugin or theme that permits arbitrary file uploads) to remove the second condition needed for full code execution. Monitoring guidance: review REST and web logs for POSTs to /wp-json/sowb/v1/widgets/previews from contributor accounts containing a 'theme' key, and treat any such request as suspicious; the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/a184ee1a-5fe2-47d5-8db1-a226c73e5bb1?source=cve should be checked for an updated fixed-version listing.
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 issue is an instance of CWE-98 (improper control of filename for an include/require statement in PHP), specifically the local file inclusion variant: user-influenced input reaches a PHP include/require path without being restricted to a safe allowlist, so an attacker can point it at files already resident on the target host. The affected code lives in the SiteOrigin Widgets Bundle plugin (CPE cpe:2.3:a:gpriday:siteorigin_widgets_bundle:*). Referenced code paths include base/siteorigin-widget.class.php (the base widget form/template handling around line 214), base/inc/routes/siteorigin-widgets-resource.class.php (the REST resource layer around line 140, which serves /wp-json/sowb/v1/widgets/previews), compat/block-editor/widget-block.php (around line 710, where widget data from the block editor is processed server-side), and widgets/price-table/price-table.php (lines ~332 and ~450, which consume the legacy 'theme'/'template' style value when rendering). The bypass mechanism is architectural: the previews endpoint rebuilds a widget instance from the supplied widgetData, and update_fields() only iterates declared form fields, so a legacy top-level 'theme' key smuggled alongside a non-empty 'columns' array reaches the include path unsanitized. Because PHP executes any PHP code inside a file passed to include(), the primitive escalates from disclosure of readable files to code execution whenever the attacker can also get a .php file onto the server (for example via a permissive upload path or a separate plugin/theme weakness); without that second condition, the practical result is disclosure of local files readable by the web user and access-control bypass.
Know when Siteorigin Widgets Bundle 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:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Network REST endpoint (AV:N); crafted validation-bypass payload and conditional upload for full RCE justify AC:H; contributor account required so PR:L; LFI-to-code-execution yields C/I/A:H.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The SiteOrigin Widgets Bundle plugin for WordPress is vulnerable to Local File Inclusion in all versions up to, and including, 1.73.2 via the 'theme' parameter parameter. This makes it possible for authenticated attackers, with contributor-level access and above, to include and execute arbitrary .php files on the server, allowing the execution of any PHP code in those files. This can be used to bypass access controls, obtain sensitive data, or achieve code execution in cases where .php file types can be uploaded and included. Exploitation requires sending a malicious widgetData payload containing a legacy top-level theme key alongside a non-empty columns array to the /wp-json/sowb/v1/widgets/previews REST endpoint, which bypasses field validation because update_fields() only processes declared form fields.
Executive ViewAI
The SiteOrigin Widgets Bundle plugin for WordPress, deployed on organizational web properties up to and including version 1.73.2, contains a high-severity local file inclusion flaw that allows any user holding a contributor account to reach a server-side code execution path through a publicly accessible REST endpoint. Because contributor-level access is a low bar that is frequently granted to external writers, agencies, and interns, the exposure extends beyond trusted administrators, and organizations hosting these sites should treat the affected footprint as potentially exploitable. Leadership should care because successful abuse could expose sensitive data stored on the web server and, under the right preconditions, hand an outside party control of the hosting environment, with the accompanying reputational, regulatory, and recovery costs.
No vendor-released patch identified at time of analysis. Interim mitigations: strip contributor and author roles of file-upload and file-write capabilities and limit contributor accounts to the minimum necessary; block or rate-limit POST requests to the /wp-json/sowb/v1/widgets/previews REST endpoint carrying a widgetData payload with a legacy top-level 'theme' key and a non-empty 'columns' array using a WAF or reverse proxy; enforce read-only or no-write permissions on web-served directories so a .php file cannot be staged for inclusion; monitor and alert on newly created .php files in uploads and plugin directories; and deactivate the SiteOrigin Widgets Bundle plugin on sites where it is not essential to the business function.
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
Local File Inclusion vulnerabilities occur when an application accepts user-controlled input to specify which file should be loaded or executed, typically through functions like PHP's `include()`, `require()`, or `fopen()`.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
More in Siteorigin Widgets Bundle
View allThe SiteOrigin Widgets Bundle WordPress plugin before 1.51.0 does not validate user input before using it to generate pa
Authenticated directory traversal in the SiteOrigin Widgets Bundle WordPress plugin (all versions up to and including 1.
The SiteOrigin Widgets Bundle plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the plugin's 'siteor
The SiteOrigin Widgets Bundle plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the plugin's SiteOri
The SiteOrigin Widgets Bundle plugin for WordPress is vulnerable to Stored Cross-Site Scripting via several parameters i
The SiteOrigin Widgets Bundle plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the code editor in a
The SiteOrigin Widgets Bundle plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the onclick paramete
The SiteOrigin Widgets Bundle plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the features attribu
The SiteOrigin Widgets Bundle plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the `data-url` DOM E
The SiteOrigin Widgets Bundle plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the Image Grid widge
Missing Authorization vulnerability in Greg - SiteOrigin SiteOrigin Widgets Bundle so-widgets-bundle allows Exploiting I
EUVD-2026-91178
GHSA-vc58-2rcj-cgf8
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB