CVE-2025-60790: How Unbounded ZIP Extraction Led to a Denial-of-Service Risk

ProcessWire is a free and open-source content management system built with PHP. Although it is not as widely used as WordPress, BuiltWith reports that more than 20,000 websites use ProcessWire, while W3Techs estimates that it powers nearly 0.1% of all websites.

While reviewing ProcessWire’s (Version : 3.0.246) file-handling functionality, I discovered a resource-exhaustion vulnerability in the way the CMS processed certain ZIP archives. The issue was later assigned CVE-2025-60790.

In this article, I will explain how I found the issue and what caused it.

Affected Feature

ProcessWire has a language translation upload feature which allows a user with the role lang-edit to upload ZIP archives containing translation files. The application automatically extracts the uploaded ZIP archives which could allow an authenticated lang-edit role user to upload a crafted ZIP bomb.

How the ZIP Extraction Became Vulnerable

While reviewing the ZIP upload process, I first tested whether I could bypass the file-type checks and upload a malicious PHP file, but the attempt was unsuccessful. I later noticed that ProcessWire extracted uploaded archives before properly validating their contents.

The zip archive upload was handled by the WireUpload::saveUploadZip() function, which passed the archive to WireFileTools::unzip() for extraction without checking the uncompressed size, number of files or directory depth.

This meant that a small ZIP bomb could expand into several gigabytes of data during extraction. ProcessWire checked the extracted files only after the extraction was complete. By that point, the server had already consumed disk space, CPU time, and other resources.

During the security testing, I also found that when an archive contained multiple nested ZIP files, the cleanup process removed only the first one it encountered. The remaining nested ZIP files were left in the language files directory.

Potential Impact

The exploitation require a valid account with lang-edit permission. A user with the permission could upload a malicious ZIP file that expands into a very large amount of data. Extracting it could overload the server's storage, CPU and other resources and cause potential denial-of-service (DoS). As it require a valid account the risk reduced but a lower privileged user account shouldn't be trusted blindly ! The zero-trust principle should be applied for such role.

Security Lessons

This vulnerability shows that upload restrictions should not focus only on the compressed file size. A small ZIP archive can expand into gigabytes of data once extracted. Therefore, when testing a ZIP upload feature, even if you cannot bypass the file-type restrictions, you should still check whether the application is vulnerable to ZIP bomb attacks.

Disclosure Timeline

  • August 20, 2025: I reported the vulnerability through the ProcessWire issue tracker, including technical details and a proof of concept.

  • October 21, 2025: The vulnerability was published as CVE-2025-60790.

  • January 23, 2026: ProcessWire announced version 3.0.255, which included a rewritten ZIP extraction method and a new FileValidatorZip module.

During the discussion, the maintainer noted that the language-management interface was designed for trusted users. However, authenticated and lower-privileged accounts can still be compromised or misused.

ProcessWire later introduced additional ZIP validation controls, including limits on the number of files, directory depth, total uncompressed size, individual file size, and compression ratio. Users should upgrade to ProcessWire 3.0.255 or later.

References

Written By
Photo of Md. Moniruzzaman Prodhan

Md. Moniruzzaman Prodhan

Director, Security Research & Programs

A cybersecurity professional working across training, security assessments, and research. Founder of the Knight Squad community and Director, Security Research & Programs at Knight Squad Academy. Has delivered cybersecurity training for multiple government agencies in Bangladesh, with hands-on experience in VAPT/penetration testing, malware analysis, reverse engineering, and AI security testing. Actively involved in responsible vulnerability research, including 0-day hunting, and contributes to the community as an event director and CTF challenge creator for KnightCTF and BDSec CTF.