FOSSBilling CVE-2026-53648
MEDIUMSeverity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:X/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
Admin privileges required for file upload (PR:H); file substitution causes low confidentiality, integrity, and availability impact with no scope change.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
1DescriptionCVE.org
FOSSBilling is a free, open-source billing and client management system. Prior to version 0.8.1, downloadable product files are stored using a deterministic filename-derived path. When an administrator uploads a file for a downloadable product, FOSSBilling stores the file as md5(<original filename>) under the uploads directory. Because the stored path depends only on the client-supplied filename, two different downloadable products, or product/order files, uploaded with the same original filename will resolve to the same stored file path. A later upload can overwrite an earlier upload, causing customers or administrators downloading the earlier product to receive the later file instead. Version 0.8.1 patches the issue. Some workarounds are available. Restrict the servicedownloadable.manage permission to fully trusted administrators only. As an operational mitigation, ensure downloadable product files use unique filenames before upload. This reduces accidental collisions but does not fully address the underlying issue.
AnalysisAI
File path collision in FOSSBilling's downloadable product service allows an authenticated administrator to silently overwrite another product's stored file by uploading a file with an identical original filename. Because FOSSBilling stores uploaded files at a path derived solely from md5(<original filename>), two uploads sharing the same filename map to the same storage location - the later upload wins, and customers downloading the earlier product receive the substituted file instead. No public exploit exists and this is not in CISA KEV, but the integrity and information-disclosure impact are concrete: customers may receive incorrect - potentially confidential - product files. Version 0.8.1 patches the issue.
Technical ContextAI
The root cause is CWE-73 (External Control of File Name or Path): FOSSBilling's downloadable product service derives its on-disk storage path entirely from an MD5 hash of the administrator-supplied filename rather than a collision-resistant random identifier (e.g., UUID). MD5 is deterministic, so md5('product.zip') always resolves to the same hex string and therefore the same filesystem path. This means the storage namespace is partitioned only by filename, not by product ID or upload session, making cross-product collisions trivially achievable by reusing a filename. The affected component is the servicedownloadable module, governed by the servicedownloadable.manage permission. No CPE strings were provided in the input data, but the advisory on GitHub (GHSA-x7p2-xhvc-cfp9) identifies all FOSSBilling releases prior to 0.8.1 as affected.
Affected ProductsAI
All FOSSBilling releases prior to version 0.8.1 are affected. The vulnerability resides specifically in the downloadable product/service management functionality (servicedownloadable module). No CPE strings were included in the provided intelligence; affected version bounds are drawn from the GitHub Security Advisory GHSA-x7p2-xhvc-cfp9 published at https://github.com/FOSSBilling/FOSSBilling/security/advisories/GHSA-x7p2-xhvc-cfp9. FOSSBilling 0.8.1 is the first patched release.
RemediationAI
The primary fix is upgrading to FOSSBilling version 0.8.1, which patches the deterministic filename-to-path mapping. The vendor advisory is available at https://github.com/FOSSBilling/FOSSBilling/security/advisories/GHSA-x7p2-xhvc-cfp9. If an immediate upgrade is not feasible, two vendor-documented workarounds apply: first, restrict the servicedownloadable.manage permission exclusively to fully trusted administrators - this reduces the pool of principals who can trigger a collision but does not eliminate the underlying flaw, since even a single trusted admin can accidentally cause an overwrite via filename reuse. Second, enforce an operational policy requiring unique filenames for all downloadable product files before upload; this reduces accidental collisions but is not a technical control and offers no protection against a deliberate same-filename upload. Neither workaround fully addresses the root cause; upgrade to 0.8.1 is the only complete remediation.
Same weakness CWE-73 – External Control of File Name or Path
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today