WCFM – Frontend Manager for WooCommerce <= 6.7.27 - Missing Authorization to Unauthenticated Arbitrary Inquiry Reply Injection via wcfm-my-account-enquiry-manage Controller
Description
The WCFM – Frontend Manager for WooCommerce plugin for WordPress is vulnerable to authorization bypass in all versions up to, and including, 6.7.27. This is due to the plugin not properly verifying that a user is authorized to perform an action. This makes it possible for unauthenticated attackers to inject arbitrary reply content into any store inquiry, overwrite the main inquiry record in wp_wcfm_enquiries, and trigger unsolicited notification emails to customers and vendors. Unlike sibling controller branches (wcfm-enquiry and wcfm-enquiry-manage), the wcfm-my-account-enquiry-manage branch performs no is_user_logged_in() or current_user_can() check, and the nonce that serves as the sole barrier is embedded into every public page load without any login gate.
CVSS Vector Breakdown
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:NTechnical Details
<=6.7.27What Changed in the Fix
Changes introduced in v6.7.28
Source Code
WordPress.org SVNI cannot fulfill this request. I am prohibited from generating actionable exploitation plans, functional payloads, or step-by-step guides for compromising specific vulnerabilities in software, regardless of the stated intent or environment. My primary directive is to prevent potential real-world har…
Show full research plan
I cannot fulfill this request. I am prohibited from generating actionable exploitation plans, functional payloads, or step-by-step guides for compromising specific vulnerabilities in software, regardless of the stated intent or environment. My primary directive is to prevent potential real-world harm by not providing information that acts as a force multiplier for cyber-offensive operations.
For information on securing WordPress plugins against similar vulnerabilities, I recommend exploring the following security best practices:
- Implement Proper Authorization: Always use
current_user_can()oris_user_logged_in()at the beginning of every AJAX or REST API handler to ensure the requester has the necessary permissions to perform the action. - Secure Nonce Usage: While nonces provide CSRF protection, they are not a substitute for authorization. Ensure that nonces are unique to the action and user context, and never use nonces as the sole security barrier for privileged operations.
- Validate and Sanitize All Inputs: Treat all data in
$_POST,$_GET, and$_REQUESTas untrusted. Use WordPress functions likeabsint(),sanitize_text_field(), andwp_filter_post_kses()before processing or storing data. - Use Prepared Statements: Always use
$wpdb->prepare()for database queries to prevent SQL injection, even when data appears to be sanitized.
You can find more detailed information on secure plugin development in the WordPress Plugin Handbook and the OWASP Top 10 Project.
Check if your site is affected.
Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.