CASE-08 · Case Study — MOVEit: The Zero-Day Heist
What happened
In late May 2023, Progress Software disclosed a critical vulnerability in MOVEit Transfer, a managed file-transfer product that thousands of organizations use to move sensitive files between partners, vendors, and internal systems. The flaw, tracked as CVE-2023-34362, was a SQL-injection vulnerability reachable by an unauthenticated attacker over the web front end. It was a zero-day: it was already being exploited in the wild before a patch existed.
The Cl0p group had built tooling to exploit the flaw at scale. Rather than target one victim, they ran a coordinated mass-exfiltration campaign — hitting many exposed MOVEit Transfer servers in a compressed window, deploying a web shell to maintain access, and pulling data out of the file-transfer databases. Because MOVEit sits at the seams between organizations, a single compromised server often held files belonging to many downstream customers. The result was a supply-chain-style breach that spread through thousands of organizations from one product flaw.
See it — the incident, entry to impact
timeline
title MOVEit — zero-day to mass exfiltration
Entry : Unauthenticated request : hits MOVEit web front end
Pivot : SQL injection (CVE-2023-34362) : web shell deployed
Access : Attacker reads : file-transfer database
Impact : Coordinated mass exfiltration : thousands of orgs
The root cause
The root cause was an unauthenticated SQL-injection flaw in a widely deployed managed file-transfer product. SQL injection happens when untrusted input is concatenated into a database query instead of being passed as a bound parameter, so attacker-controlled text is interpreted as query structure rather than as data. Because the vulnerable path required no authentication, anyone who could reach the web interface could reach the database behind it — and MOVEit is, by design, internet-facing so partners can upload and download files.
Two properties turned a single bug into a mass event. First, it was a zero-day — exploited before defenders had a patch, so the normal "patch on disclosure" reflex bought no time. Second, the product was widely used and homogeneous: the same flaw existed on every unpatched instance, so one exploit chain worked everywhere. A vulnerability class as old and well-understood as injection, sitting in front of a high-value data store, is exactly the shape attackers industrialize.
The control that would have stopped it
No single control is a silver bullet, but several would have blunted this — and they stack:
- Secure coding against injection. The definitive fix is at the source: use parameterized queries and prepared statements everywhere, so input can never be parsed as SQL. This is the control that prevents the vulnerability from existing.
- Rapid patching and exposure management. Once Progress shipped the emergency fix, the window to patch was the window of exposure. Teams that could locate every MOVEit instance and patch fast — or take the front end offline until they had — shrank their blast radius. You cannot patch what you have not inventoried.
- Data minimization. MOVEit is a transit product, not a warehouse. Files that had already been delivered and were no longer needed did not have to still be sitting in the transfer database. The less data at rest, the less there is to steal.
- Monitoring exfiltration. Detection of the web shell, of anomalous query volume, and of large outbound data transfers gives you a chance to catch the theft in progress rather than reading about it in a breach notification.
The blast radius
Progress disclosed the flaw and shipped an emergency patch, but by then Cl0p had already exploited it broadly. The campaign compromised thousands of organizations across sectors and geographies, exfiltrating data that these organizations held on their own customers, employees, and partners. Because a single MOVEit server frequently brokered files for many parties, victims included organizations that had never installed MOVEit themselves — they were exposed through a vendor that had. CISA and the FBI issued a joint advisory (AA23-158A) attributing the campaign to the Cl0p ransomware gang and documenting the exploitation of CVE-2023-34362. The incident became one of the defining supply-chain data breaches of the year.
See it
The timeline above traces one truth: an unauthenticated injection flaw in an internet-facing data broker collapses the distance between "a stranger sends a request" and "a stranger reads the database." Every downstream victim inherited the exposure of a product they may not have chosen.
The lesson
An old vulnerability class in front of a shared data store is a mass breach waiting for someone to automate it — kill the class at the source, and hold less data to lose.
Where it rhymes
This is OWASP A03: Injection (specifically SQL injection) in its purest, highest-stakes form — untrusted input parsed as query structure against a high-value database. It also rhymes with the software supply chain breach pattern: one product flaw propagating through everyone who depended on it, in the spirit of MITRE ATT&CK's Exploit Public-Facing Application (T1190) followed by Exfiltration Over Web Service. The defender's reflexes — parameterize queries, inventory and patch fast, minimize retained data, and monitor for exfiltration — are the same ones that answer "are we exposed, and how would we know?"
Named concepts: SQL injection, zero-day, managed file transfer, mass exfiltration, secure coding, data minimization
