WPSyncSheets For Contact Form 7 <= 1.8.0 - Unauthenticated PHP Object Injection to Remote Code Execution via Untrusted CF7 Submission Field via maybe_unserialize()
Strategic Overview
- Status
- Patched in 1.8.1
- Affected Version
<= 1.8.0- CVSS
- 7.5High
- Weakness type
- CWE-502 · Deserialization of Untrusted Data
- CVE
CVE-2026-104010
At a glance
CVE-2026-104010 is a high-severity Deserialization of Untrusted Data vulnerability in the WPSyncSheets For Contact Form 7 WordPress plugin, affecting versions <= 1.8.0. It carries a CVSS score of 7.5 (reachable over the network; high confidentiality, integrity, availability impact). Exploitation requires no authentication. The issue is fixed in version 1.8.1; sites on affected versions should update now. Disclosed November 2026, reported by GivMeInJ.
Vulnerability Overview
The WPSyncSheets For Contact Form 7 – CF7 Google Sheets Connector & Save to Database plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1.8.0 via the 'any non-system CF7 field (e.g., your-message)' parameter parameter. This is due to insufficient sanitization of CF7 submission field values before database storage and the absence of an allowed_classes restriction on maybe_unserialize() during admin retrieval. This makes it possible for unauthenticated attackers to execute code on the server. Successful exploitation of the remote code execution gadget chain requires that a Google Sheets access token be configured in the plugin (its primary advertised feature), as this triggers autoloading of the bundled Monolog 2.10.0 library whose classes form the exploitable gadget chain; however, the underlying PHP Object Injection occurs regardless.
Technical Analysis
The vector marks this flaw as remotely reachable over the network, and no privileges on the target site. A successful exploit has high impact on confidentiality, integrity, availability — full site compromise territory.
CWE-502: Deserialization of Untrusted Data
WPSyncSheets For Contact Form 7 <= 1.8.0 carries this weakness at maybe_unserialize(), and reaching it takes no account at all. Deserialization of untrusted data means the application reconstructs objects from input a caller controls, letting the attacker choose which classes get instantiated and what their properties hold.
A workable chain turns deserialization into file writes, deletions or code execution, depending on what the loaded classes do in their magic methods. For WPSyncSheets For Contact Form 7 the fix is 1.8.1: builds <= 1.8.0 are affected, anything from 1.8.1 onward is not.
Remediation
Update to version 1.8.1, or a newer patched version
How does WordSec protect against this?
Requests carrying this pattern arrive without a session, so nothing upstream of the firewall gets a chance to reject them: WordSec's web application firewall inspects request payloads before WordPress loads them. Classes like this one can leave something behind, so the staged malware scanner is the second half: it looks for dropped files and modified code rather than for the request that created them. None of that substitutes for the fix: WPSyncSheets For Contact Form 7 1.8.1 closes this, and updating the plugin is the step that ends it.
- Firewall
- Scanner
- Login Security
External References
Vulnerability data © Defiant, Inc., provided under the Wordfence Intelligence T&C