CVE-2026-4297 Overview
CVE-2026-4297 is an authorization flaw in the Welcome Software Publishing (newscred-publishing) plugin for WordPress, affecting all versions up to and including 0.0.31. The plugin exposes an XML-RPC method nc.setOption that maps to the internal nc_setOption() function. While the function validates user credentials through $wp_xmlrpc_server->login(), it omits any capability check such as current_user_can('manage_options'). Authenticated attackers with Subscriber-level access can therefore update arbitrary WordPress options. The flaw is tracked under CWE-862: Missing Authorization.
Critical Impact
Subscriber-level accounts can change the default_role option to administrator and register a new admin account, resulting in full site takeover.
Affected Products
- Welcome Software Publishing plugin for WordPress (slug: newscred-publishing)
- All versions <= 0.0.31
- WordPress sites with XML-RPC enabled and the plugin installed
Discovery Timeline
- 2026-06-24 - CVE-2026-4297 published to NVD
- 2026-06-25 - Last updated in NVD database
Technical Details for CVE-2026-4297
Vulnerability Analysis
The Welcome Software Publishing plugin registers a custom XML-RPC method, nc.setOption, intended to let administrators configure plugin behavior remotely. The handler, nc_setOption(), accepts an option name and value pair from the request payload and writes them directly to the WordPress options table using update_option(). The handler conflates authentication with authorization. It checks that a username and password are valid through $wp_xmlrpc_server->login(), but it never verifies that the authenticated user holds the manage_options capability. Any WordPress role, including the lowest-privileged Subscriber, satisfies the login check and can therefore invoke the method to rewrite any option in wp_options.
Root Cause
The root cause is missing authorization on a privileged XML-RPC endpoint [CWE-862]. The plugin developer assumed that valid credentials implied administrative intent. WordPress role and capability checks must be enforced explicitly at every privileged entry point. Without a call to current_user_can() or an equivalent capability gate, the nc_setOption() function trusts the caller regardless of role.
Attack Vector
An attacker first obtains or registers a Subscriber-level account on a target site, which is trivial on sites permitting open registration. The attacker then sends an XML-RPC POST request to /xmlrpc.php invoking the nc.setOption method. The payload sets default_role to administrator. Next, the attacker calls the WordPress registration endpoint to create a new user, which is automatically assigned the administrator role. The attacker logs in with the new admin account and can install plugins, modify content, or stage further payloads such as web shells.
The vulnerability is described in detail in the Wordfence Vulnerability Report and the affected logic can be reviewed in the plugin source on WordPress.org.
Detection Methods for CVE-2026-4297
Indicators of Compromise
- POST requests to /xmlrpc.php containing the string nc.setOption in the request body
- Unexpected modifications to the default_role value in the wp_options table, especially changes to administrator
- Newly registered users automatically receiving the administrator role shortly after XML-RPC traffic from an unfamiliar IP
- Outbound XML-RPC methodCall payloads referencing option names such as default_role, siteurl, home, or users_can_register
Detection Strategies
- Inspect web server access logs for POST requests to xmlrpc.php followed by user registration events from the same source IP
- Monitor the wp_options table for changes to high-impact keys including default_role, siteurl, users_can_register, and active_plugins
- Alert on creation of administrator accounts outside of normal change windows or from non-administrator sessions
- Correlate Subscriber logins with subsequent XML-RPC activity targeting plugin-defined methods
Monitoring Recommendations
- Enable WordPress audit logging for option updates and role assignments
- Forward web server, PHP, and WordPress logs to a centralized analytics platform for retention and correlation
- Baseline normal XML-RPC usage and alert on new RPC method names appearing in traffic
- Track plugin inventory across all WordPress hosts to identify exposure to vulnerable plugin versions
How to Mitigate CVE-2026-4297
Immediate Actions Required
- Deactivate and remove the Welcome Software Publishing plugin if a patched version is not yet available
- Disable XML-RPC on sites that do not require it by blocking /xmlrpc.php at the web server or WAF layer
- Audit wp_users and wp_usermeta for unauthorized administrator accounts and remove them
- Verify the default_role option is set to subscriber and users_can_register reflects the intended configuration
- Rotate credentials and force password resets for all administrator accounts
Patch Information
At the time of NVD publication, all versions of the plugin up to and including 0.0.31 are vulnerable. Site owners should monitor the WordPress plugin repository for an updated release that adds a current_user_can('manage_options') check inside nc_setOption(). Until a fix is published, removing the plugin is the recommended path.
Workarounds
- Block requests to /xmlrpc.php at the WAF, reverse proxy, or .htaccess level when XML-RPC is unused
- Restrict XML-RPC access to known administrator IP addresses via network ACLs
- Disable user self-registration by unchecking Anyone can register in WordPress general settings to remove the Subscriber-account prerequisite
- Deploy a WordPress security plugin rule to drop XML-RPC payloads containing the method name nc.setOption
# Apache: deny all access to xmlrpc.php
<Files "xmlrpc.php">
Require all denied
</Files>
# Nginx: return 403 for xmlrpc.php
location = /xmlrpc.php {
deny all;
return 403;
}
# WP-CLI: verify default_role is not tampered
wp option get default_role
wp option update default_role subscriber
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

