CVE-2026-65523
Executive Summary
CVE-2026-65523 is an Insecure Direct Object References (IDOR) vulnerability affecting the Formidable Forms Signature Online Contract Automation plugin for WordPress, in all versions up to and including 2.0.1. The vulnerability allows unauthenticated attackers to reference internal objects (such as contract records, signatures, or associated metadata) directly by their identifiers, bypassing authorization checks to retrieve sensitive information. With a CVSS score of 7.5 (High), the vulnerability exposes confidentiality of data without requiring authentication or user interaction. Any WordPress site running the affected plugin version is susceptible if the plugin exposes object identifiers in predictable or enumerable formats.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
CWE-639 (Insecure Direct Object References) occurs when an application exposes a direct reference to an internal implementation object — such as a file, directory, database record, or key — without a proper access control check. In the context of this WordPress plugin, the flaw resides in how the plugin handles requests for contract or signature-related resources.
The NVD description confirms the vulnerability is exploitable by unauthenticated actors ("Unauthenticated Insecure Direct Object References"). This implies the plugin registers certain REST API routes or admin-ajax handlers that accept object IDs directly from user input (e.g., via HTTP GET or POST parameters) and return the corresponding resource without verifying that the requester is authorized to access it.
For a typical IDOR in WordPress plugins of this nature, the attack surface includes:
- REST API endpoints (registered via
register_rest_route) that fetch contract records by ID. - Admin-ajax actions (hooked via
wp_ajax_nopriv_*) that retrieve signature documents or contract metadata. - Direct file download handlers that take a file ID or path parameter.
The plugin's contract automation feature relies on storing structured data (contract templates, filled forms, e-signature records) in the WordPress database, typically as custom post types or custom database tables. The IDOR allows an attacker to iterate through numeric or sequential IDs to retrieve any contract's contents, which may include personally identifiable information (PII) such as names, email addresses, government IDs, and legally binding electronic signatures.
The CVSS vector highlights the key characteristics:
- Attack Vector: Network (AV:N) — remotely exploitable.
- Attack Complexity: Low (AC:L) — no special conditions required.
- Privileges Required: None (PR:N) — fully unauthenticated.
- User Interaction: None (UI:N) — no victim action needed.
- Scope: Unchanged (S:U) — the compromise stays within the vulnerable component.
- Confidentiality Impact: High (C:H) — complete data exposure.
- Integrity Impact: None (I:N) — no data modification possible.
- Availability Impact: None (A:N) — no denial of service.
Exploitation Scenarios
Scenario: Mass Harvesting of E-Signature Contracts
Reconnaissance/Identification: The attacker first identifies a WordPress site running the Formidable Forms plugin with the Signature Online Contract Automation add-on. This can be achieved through:
- Banner grabbing on the login page or readme files (
/wp-content/plugins/directory listing if enabled). - Using Shodan dorks like
http.component:"WordPress" http.html:"formidable"to locate candidate targets. - Checking the plugin version via the
readme.txtfile (if web server allows access) or by fingerprinting JavaScript/CSS asset versions.
- Banner grabbing on the login page or readme files (
Trigger/Weaponization: The attacker crafts HTTP requests with sequential or predictable object identifiers. For example, if the plugin exposes a REST endpoint like
/wp-json/formidable/v2/contracts/{id}, the attacker sends a GET request:GET /wp-json/formidable/v2/contracts/1 HTTP/1.1 Host: victim-site.comWithout any authentication cookie or nonce. The plugin's authorization check (which should verify the current user's role or ownership of the contract) is missing or improperly implemented, allowing the request to proceed.
Execution: The attacker systematically iterates through IDs (e.g.,
/contracts/2,/contracts/3, ... up to/contracts/10000). A simple scripted loop (usingcurlor Python'srequestslibrary) automates this enumeration. Each successful response returns the contract record in JSON/XML format, containing the signatory's personal information, contract terms, and signature image/data.Post-Exploitation Impact: The attacker aggregates the harvested data into a database for:
- Identity theft: Using collected PII (names, addresses, ID numbers) for fraudulent activities.
- Extortion: Threatening to leak legally binding signed contracts unless a ransom is paid.
- Secondary attacks: Using the collected data for targeted phishing campaigns against the contract signatories.
- Data resale: Selling the dataset on illicit marketplaces.
The attack is entirely passive from the target's perspective — it generates standard HTTP requests that may blend in with normal traffic, making detection challenging without proper logging and anomaly monitoring.
Impact Assessment
The CVSS base score of 7.5 (High) is driven primarily by the High confidentiality impact (C:H) — the vulnerability grants complete read access to sensitive contract data without any authentication. The attack requires no privileges, no user interaction, and has low complexity, making it trivially exploitable at scale.
Business Impact:
- Data Breach: Exposure of client contracts, which may contain legally protected information (attorney-client privileged material, trade secrets, financial terms).
- Regulatory Non-Compliance: If the plugin handles data subject to GDPR, HIPAA, or PCI-DSS, an unauthenticated breach constitutes a reportable incident with potential fines.
- Reputational Damage: Loss of customer trust when signed contracts and personal data are leaked.
- Legal Liability: The organization may face civil lawsuits from affected signatories.
Affected Systems: All WordPress installations running the Formidable Forms Signature Online Contract Automation plugin version 2.0.1 or earlier. This includes sites where the plugin is active, even if the contract feature is not heavily used — as long as the plugin's code is loaded and registers its endpoints.
Blast Radius: The vulnerability enables mass data enumeration — an attacker can extract every contract record in the database, not just a single one. If the web server logs are insufficient or application-level logging is absent, the attack may go unnoticed for extended periods.
Detection Guidance
Sigma Rule
title: Unauthenticated IDOR Enumeration in Formidable Forms Contract Automation
id: 7c34b6e2-9a15-4f88-b9c0-33b0d7d9a2f1
status: experimental
description: Detects sequential HTTP requests to contract-related endpoints without authentication, indicating potential IDOR exploitation.
logsource:
category: webserver
product: apache
service: access_log
detection:
selection:
cs-uri-extension:
- '.php'
- ''
selection_contract:
cs-uri-query|contains:
- 'contract'
- 'signature'
selection_method:
cs-method: 'GET'
filter_authenticated:
cs-uri-query|contains:
- 'wpnonce'
- '_wp_nonce'
condition: selection and selection_contract and selection_method and not filter_authenticated
timeframe: 5m
level: high
falsepositives:
- Legitimate web crawlers fetching public pages
- Admin users accessing contracts in bulk via GUI
fields:
- clientip
- cs-uri-query
YARA Rule
rule Detect_Formidable_Contracts_IDOR_Exploits
{
meta:
author = "Valters IT Security"
description = "Detects HTTP requests targeting WordPress contract endpoints with sequential IDs without authentication"
reference = "CVE-2026-65523"
date = "2026-06-01"
score = 75
strings:
$contract = "/contracts/" ascii wide
$formidable = "formidable" ascii wide
$signature = "/signature" ascii wide
$rest_api = "wp-json" ascii wide
$admin_ajax = "admin-ajax.php" ascii wide
$seq1 = "contracts/1" ascii
$seq2 = "contracts/2" ascii
$seq3 = "contracts/3" ascii
condition:
(uint16(0) == 0x0d0a or uint16(0) == 0x0a0d) and
(($contract or $signature) or ($formidable and $rest_api)) and
any of them and
(filesize < 4KB)
}
Suricata IDS Rule
alert http any any -> $HOME_NET any (msg:"CVE-2026-65523 - Unauthenticated IDOR Enumeration in Formidable Forms Contract Automation"; flow:to_server,established; content:"GET"; http_method; content:"/contracts/"; http_uri; nocase; pcre:"/\/contracts\/\d+/i"; content:"wp-json"; http_uri; nocase; threshold:type both, track by_src, count 20, seconds 60; classtype:attempted-recon; sid:210065523; rev:1;)
Note: This rule triggers on multiple sequential contract ID requests from a single source, reducing false positives from legitimate single requests.
Elastic Detection
sequence by source.ip with maxspan=5m
[network where event.outcome == "success" and
destination.port == 443 and
url.path like "*contract*" and
url.path like "*wp-json*"]
[network where event.outcome == "success" and
destination.port == 443 and
url.path like "*contract*" and
url.path like "*wp-json*"]
[network where event.outcome == "success" and
destination.port == 443 and
url.path like "*contract*" and
url.path like "*wp-json*"]
The EQL rule looks for three or more successful requests from the same source IP to contract-related paths within a 5-minute window — a pattern consistent with IDOR enumeration.
Splunk SPL Query
index=web sourcetype=access_combined
| eval is_contract = if(url_path LIKE "%contract%" AND url_path LIKE "%wp-json%", 1, 0)
| where is_contract = 1
| bucket _time span=5m
| stats count as request_count by _time, src_ip, url_path
| where request_count > 20
| sort - request_count
| table _time, src_ip, url_path, request_count
| rename src_ip as "Source IP", url_path as "Requested URL", request_count as "Request Count"
This query searches web access logs for sources that made more than 20 contract-related REST API requests within 5 minutes — strong evidence of automated enumeration.
Wazuh OSSEC Rule
<group name="web, attack, sql_injection,">
<rule id="524862" level="12">
<decoded_as>json</decoded_as>
<field name="url" type="pcre2">\/wp-json\/.*\/contracts\/\d+</field>
<description>CVE-2026-65523 - Possible unauthenticated IDOR access to Formidable Forms contracts</description>
<group>cve-2026-65523,idor,wp-plugin,</group>
<mitre>
<id>T1190</id>
</mitre>
<options>no_full_log</options>
<frequency>10</frequency>
<timeframe>300</timeframe>
<same_field>srcip</same_field>
<regex>contracts/\d+</regex>
<match>srcip</match>
</rule>
</group>
The Wazuh rule triggers when the same source IP makes 10 or more requests matching the contract ID pattern within 300 seconds (5 minutes).
Mitigation & Patch Guidance
Patch Confidence: 2/4 (CLAIMED — single source claims patch (not independently confirmed))
Immediate Mitigations (before patching):
- Disable the plugin: If the Signature Online Contract Automation add-on is not critical to daily operations, deactivate it via WordPress admin (
Plugins → Installed Plugins → Deactivate) to immediately eliminate the attack surface. - Web Application Firewall (WAF) rules: Add a virtual patch blocking unauthenticated requests to paths containing
contractorsignatureparameter names with numeric values, especially to/wp-json/endpoints. - Server-level access control: Use
.htaccess(Apache) ornginxconfiguration to require HTTP Basic Authentication for any URL pattern matchingwp-json/*contract*— this adds an authentication layer until the plugin is fixed.
- Disable the plugin: If the Signature Online Contract Automation add-on is not critical to daily operations, deactivate it via WordPress admin (
Patch/Upgrade Steps:
- Update the plugin to version 2.0.2 or later, which is claimed to fix the IDOR. In WordPress admin:
Plugins → Installed Plugins → check for updates, or download the latest version from the official WordPress plugin repository or vendor site. - Verify the patch: After upgrade, test the previously vulnerable endpoints by attempting unauthenticated access to a known contract ID. If the request returns 401/403 or is redirected to login, the patch is effective.
- Monitor plugin changelog: Since Patch Confidence is 2/4 (single source claim), independently verify the fix by reviewing the plugin's changelog or diffing the updated code for authorization checks.
- Update the plugin to version 2.0.2 or later, which is claimed to fix the IDOR. In WordPress admin:
Long-Term Hardening:
- Apply the principle of least privilege: Configure all WordPress plugins to expose REST API endpoints only to authenticated users unless absolutely necessary. This can be done via filters like
rest_authentication_errors. - Implement a web application firewall (Wordfence, Cloudflare WAF, ModSecurity) with rules that detect and block IDOR patterns (e.g., sequential numeric IDs in URLs).
- Regular security audits: Use tools like WPScan to identify vulnerable plugins in your WordPress environment before attackers do.
- Enable detailed logging: Configure WordPress to log REST API requests (via plugins like "WP REST API Log") and retain web server access logs for at least 90 days to support forensic investigations.
- Segment sensitive data: If the contract automation feature stores highly sensitive data, consider moving it to a separate, isolated service with its own access control layer.
- Apply the principle of least privilege: Configure all WordPress plugins to expose REST API endpoints only to authenticated users unless absolutely necessary. This can be done via filters like
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-65523
- Patchstack Advisory: https://patchstack.com/database/vulnerability/formidable-forms-signature-online-contract-automation (vendor CNA advisory detailing the IDOR and affected versions)
- CWE-639 Reference: https://cwe.mitre.org/data/definitions/639.html (Insecure Direct Object References)
Threat Actor Activity: As of the writing of this report, there is no evidence of active exploitation in the wild for CVE-2026-65523. The vulnerability is not listed in CISA's Known Exploited Vulnerabilities (KEV) catalog. No public proof-of-concept code or Nuclei templates exist, and no threat actor campaigns have been publicly attributed to this CVE. However, given the high value of contract data (legal documents, PII, e-signatures), it is plausible that exploit attempts will emerge quickly now that the CVE is public. SOC teams should prioritize patching and implement the detection rules above proactively.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.