Listen to this Post
The CVE-2025-22096 vulnerability in ProcessWire CMS stems from an insecure file upload mechanism within the Language Support feature. An authenticated user with the ‘lang-edit’ permission can upload a specially crafted ZIP archive. This archive is automatically extracted on the server-side before its contents are validated. A malicious actor can exploit this by creating a ZIP bomb—an archive designed to contain a massive amount of highly compressible data (e.g., a file filled with repeated zeroes). When this archive is uploaded and auto-extracted, it decompresses into an enormous volume of data that consumes all available disk space and/or inodes on the server. This resource exhaustion leads to a full filesystem, causing a denial-of-service condition that renders the CMS and potentially other services on the same server unresponsive or completely unavailable.
Platform: ProcessWire CMS
Version: 3.0.246
Vulnerability : Resource-Exhaustion DoS
Severity: Moderate
date: 2024-10-21
Prediction: 2024-11-04
What Undercode Say:
Crafting a ZIP bomb using Python
python3 -c "import zipfile; f = open('bomb.txt', 'w'); f.write('0' 109); z = zipfile.ZipFile('bomb.zip', 'w'); z.write('bomb.txt')"
Simulating the upload curl command (replace URL and session cookie)
curl -X POST -F '[email protected]' -b 'session=cookie_value' http://target.com/processwire/module/language-support/
// Example server-side code snippet (VULNERABLE)
$zip = new ZipArchive;
if ($zip->open($_FILES['zipfile']['tmp_name']) === TRUE) {
$zip->extractTo('/path/to/language/files/'); // Extraction BEFORE validation
$zip->close();
// ... validation logic happens later
}
How Exploit:
1. Attacker gains ‘lang-edit’ access.
2. Crafts a malicious ZIP bomb archive.
3. Uploads archive via Language Support.
4. Server auto-extracts archive, exhausting disk/inodes.
5. System becomes unresponsive, causing DoS.
Protection from this CVE
Apply vendor patch. Implement server-side validation for archive contents, including checks for file count and total uncompressed size, before extraction. Restrict ‘lang-edit’ permissions to trusted users only. Configure server disk quotas.
Impact:
Full filesystem exhaustion, service unavailability, denial-of-service for the entire application and potentially the host server.
🎯Let’s Practice Exploiting & Learn Patching For Free:
Sources:
Reported By: github.com
Extra Source Hub:
Undercode

