CVE-2026-10699
Executive Summary
CVE-2026-10699 is a high-severity (CVSS 7.5) vulnerability in Progress MOVEit Transfer, specifically within the Custom Reports modules. The flaw is a Missing Release of Memory After Effective Lifetime (CWE-401), which can lead to a memory leak and eventual denial of service (DoS) on the affected server. An unauthenticated attacker can trigger this vulnerability remotely, causing the MOVEit Transfer service to consume excessive memory over time, leading to service degradation or complete unavailability. No public proof-of-concept (PoC) or exploit code has been released as of this analysis. The vendor has released patches for all affected versions.
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
Supply Chain & Package Security
This vulnerability is not related to an open-source package manager (NPM, PyPI, Go, Ruby). It affects a proprietary enterprise software product, Progress MOVEit Transfer. The risk is primarily to organizations that self-host this file transfer solution.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Base Score: 7.5 (High)
- Attack Vector: Network (AV:N) – Exploitable remotely.
- Attack Complexity: Low (AC:L) – No special conditions required.
- Privileges Required: None (PR:N) – No authentication needed.
- User Interaction: None (UI:N) – No user action required.
- Scope: Unchanged (S:U) – The vulnerability does not cross trust boundaries.
- Confidentiality Impact: None (C:N) – No data exposure.
- Integrity Impact: None (I:N) – No data modification.
- Availability Impact: High (A:H) – Complete denial of service is possible.
Threat Level: High. The low attack complexity and lack of required privileges make this a significant threat to unpatched MOVEit Transfer instances. While no public exploit exists, the vulnerability is easily weaponizable.
Deep Dive & Mechanics
The vulnerability resides in the Custom Reports module of MOVEit Transfer. This module allows users to generate custom reports on file transfer activity. The flaw is a classic memory leak (CWE-401: Missing Release of Memory After Effective Lifetime).
Root Cause: When a specially crafted request is sent to the Custom Reports endpoint, the application allocates memory to process the request but fails to properly free that memory after the operation completes. Over successive requests, the allocated memory accumulates, exhausting the available system memory.
Attack Vector: An unauthenticated attacker can send a series of HTTP requests to the vulnerable endpoint. Each request triggers the memory leak. The attacker does not need to be logged in or have any special privileges.
Impact: As memory consumption grows, the MOVEit Transfer service will eventually:
- Become unresponsive to legitimate requests.
- Crash due to out-of-memory (OOM) conditions.
- Require a manual restart to restore service.
This is a denial of service (DoS) vulnerability, not a data breach. However, the disruption to file transfer operations can be critical for organizations relying on MOVEit for business processes.
Vulnerable vs. Patched Code
The fix involves adding proper memory deallocation calls after the report generation process completes. The vulnerable code likely allocates memory for report data structures (e.g., for query results or formatting) but does not free them when the request ends.
Vulnerable Code (Conceptual):
// Vulnerable: Memory allocated but never freed
char* report_data = malloc(1024);
// ... process report ...
// Missing: free(report_data);
return;
Patched Code (Conceptual):
// Patched: Memory is freed after use
char* report_data = malloc(1024);
// ... process report ...
free(report_data);
report_data = NULL;
return;
The actual fix is in the compiled binary of the Custom Reports module. The vendor has not released the source code diff.
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- A vulnerable MOVEit Transfer instance (e.g., version 2025.0.0).
- Network access to the MOVEit web interface (typically port 80/443).
Exploitation Steps:
- Identify the target: Use Shodan or manual scanning to find MOVEit Transfer instances.
- Craft the exploit: Send a series of HTTP GET or POST requests to the Custom Reports endpoint. The exact endpoint is not publicly disclosed, but common patterns include
/customreportsor/MOVEit/Reports. - Trigger the leak: The attacker can use a simple loop to send requests. For example, using
curl:for i in {1..1000}; do curl -k -X GET "https://target/customreports?report=leak" & done - Monitor impact: The MOVEit service will become unresponsive after a few hundred to a few thousand requests, depending on the server's memory.
Note: No public exploit code is available. The above is a conceptual demonstration.
Blue Team (Defense & Detection)
Detection:
- Monitor for a high volume of requests to the Custom Reports endpoint from a single IP address.
- Track memory usage on the MOVEit server. A steady increase in memory consumption without a corresponding increase in legitimate activity is a strong indicator.
- Use the detection rules provided in the Detection Engineering section.
Mitigation:
- Immediately apply the vendor patch (upgrade to 2025.0.8, 2025.1.4, or 2026.0.1).
- If patching is not possible, restrict access to the Custom Reports module via firewall rules or web application firewall (WAF) policies.
- Implement rate limiting on the Custom Reports endpoint to slow down potential attacks.
Indicators of Compromise (IOCs)
- Network IOCs:
- High volume of HTTP requests to
/customreportsor similar endpoints from a single source IP. - Unusual patterns in HTTP request headers (e.g., repeated identical requests).
- High volume of HTTP requests to
- System IOCs:
- MOVEit Transfer process (
MOVEitDMZ.exeorMOVEitTransfer.exe) consuming an abnormally high amount of memory. - Event logs showing out-of-memory errors or service crashes.
- Windows Event ID 2003 (for Windows-based MOVEit) indicating resource exhaustion.
- MOVEit Transfer process (
Detection Engineering
YARA Rule
rule CVE_2026_10699_MOVEit_Memory_Leak {
meta:
description = "Detects memory leak patterns in MOVEit Transfer Custom Reports module"
author = "Valters IT"
date = "2026-01-01"
reference = "CVE-2026-10699"
strings:
$s1 = "customreports" nocase
$s2 = "MOVEit" nocase
$s3 = "report" nocase
condition:
all of them
}
Sigma Rule
title: CVE-2026-10699 - MOVEit Transfer Custom Reports Memory Leak
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects a high volume of requests to the MOVEit Custom Reports endpoint, indicating a potential memory leak exploitation attempt.
author: Valters IT
date: 2026-01-01
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-10699
logsource:
category: webserver
product: iis
detection:
selection:
cs-uri-stem:
- '/customreports*'
- '/MOVEit/Reports*'
condition: selection
timeframe: 5m
threshold: 100
falsepositives:
- Legitimate heavy use of the reporting feature
level: high
Suricata Rule
alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"CVE-2026-10699 MOVEit Transfer Custom Reports Memory Leak Attempt"; flow:to_server; content:"/customreports"; http_uri; nocase; threshold: type both, track by_src, count 100, seconds 300; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Patch: Upgrade to the latest patched version:
- MOVEit Transfer 2025.0.8
- MOVEit Transfer 2025.1.4
- MOVEit Transfer 2026.0.1
- Workaround: If patching is delayed, restrict access to the Custom Reports module using a WAF or firewall to only trusted IP addresses.
Long-Term Measures:
- Implement network segmentation to limit exposure of MOVEit Transfer.
- Enable logging and monitoring for the Custom Reports endpoint.
- Regularly review and apply vendor security updates.
- Conduct periodic vulnerability scans.
Valters IT