Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as default User with Files.Write
-
DeliveryFire concurrent upload-session requests
-
ExploitAll read same stale capacity snapshot
-
ExecutionEach passes MaxStorage check and reserves size
-
PersistMaterialize chunked uploads past quota
-
ImpactExhaust host storage, deny uploads for all users
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V15 - Secure Coding and Architecture Concurrency control, locking
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated account holding Files.Write permission - satisfied by the default User group - and the default local-storage policy, both explicitly stated as affected, so no non-default configuration is needed. Exploitation depends on issuing genuinely concurrent upload-session requests so they read the same in-memory capacity snapshot before any storage charge commits (the TOCTOU window in PrepareUpload/validateUserCapacity vs. CommitWithStorageDiff). Limiting factors: the attacker must already have a valid low-privileged account (PR:L, not unauthenticated), and impact is confined to storage exhaustion / denial of uploads - no data disclosure or code execution. |
| Impact | This is a genuine availability risk but not a top-tier emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H = 7.1) correctly frames it as a network-reachable, low-complexity flaw requiring only a low-privileged authenticated account (any member of the default User group with Files.Write). The impact is availability-dominant (A:H - host storage exhaustion denying uploads to all tenants) with a secondary integrity effect (I:L - per-user storage accounting is corrupted so reservations exceed quota) and no confidentiality impact (C:N). No EPSS score, KEV listing, or public POC was provided, so there is no public exploit identified at time of analysis and no evidence of active exploitation - this is a disclosed-and-patched TOCTOU quota-bypass, not an actively-weaponized bug. Note the input Tag 'Information Disclosure' directly contradicts the CVSS vector (C:N): there is no confidentiality impact, so that tag is mislabeled and should be treated as a DoS/race-condition issue. The real-world weight of this CVE is therefore moderate: trivially triggerable by any authenticated user in a default configuration, but bounded to denial-of-service against a niche self-hosted product with no confidentiality exposure. |
| Exploit ScenarioDerived | A low-privileged authenticated Cloudreve user with Files.Write permission (the default User group) fires many concurrent create-upload-session requests. Because each request validates capacity against the same stale in-memory storage snapshot before the storage charge is applied outside the quota-enforcing transaction, all requests pass the MaxStorage check and reserve their declared sizes. The attacker then materializes the over-committed reservations as chunked uploads, exhausting host disk and denying uploads to every other user. No public exploit code was identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 22, 2026
Concurrent upload-session requests in Cloudreve prior to 4.18.0 allow an authenticated user holding Files.Write permission - which the default User group provides - to bypass the per-account storage quota and reserve more space than the account is allowed, ultimately exhausting host disk and denying uploads to other users. The flaw is a time-of-check-to-time-of-use race: PrepareUpload validates capacity against a stale in-memory value while the actual storage charge is applied later and outside the same quota-enforcing transaction, so parallel requests that read the same snapshot all pass the MaxStorage check. Exploitation requires genuinely simultaneous requests and a valid low-privileged account, and impact is limited to availability (no data disclosure or code execution); no public exploit code was identified at time of analysis, and the issue is fixed in 4.18.0.
RemediationAI
Upgrade to Cloudreve 4.18.0, which is the exact fix version released by the vendor (https://github.com/cloudreve/cloudreve/releases/tag/4.18.0); the patch is documented in the security advisory GHSA-xj3h-wwxq-gfcj and introduced by commit 7329602751c00bb4136fe9ad8b364d0df70773df, which moves quota enforcement into an atomic ReserveStorage call inside the upload transaction and adds ErrInsufficientCapacity handling plus ReleaseStorage rollback on failure. If immediate upgrading is not possible, compensating controls are limited because the defect is a concurrency bug in the application's own accounting rather than a configurable feature: impose an OS- or volume-level storage quota on the filesystem or volume holding the upload data (e.g., XFS project quotas or ext4 usrquota) so a single tenant cannot fill the host disk - the trade-off is that legitimate uploads by all users fail once the volume ceiling is reached; lower the per-user MaxStorage values to shrink the blast radius achievable by a single account - at the cost of restricting legitimate storage for every user; and remove Files.Write from groups that do not genuinely need it, moving ordinary accounts out of the default User group - which reduces functionality for regular file-upload users. Additionally, monitor per-user storage accounting against actual on-disk usage and alert on divergence or abnormal disk consumption, since detection of this race depends on observing reservations that exceed the intended quota. Note that no public exploit code was identified at time of analysis, but the fix commit is public, so patch promptly.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 4 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is a race condition (CWE-362) in Cloudreve's database-backed filesystem layer, specifically PrepareUpload in pkg/filemanager/fs/dbfs/upload.go. Quota validation was performed by validateUserCapacity against an in-memory user storage value, while the corresponding storage charge was applied unconditionally later by CommitWithStorageDiff - outside the transaction that enforces the quota. Because the check and the charge are not atomic, multiple concurrent upload-session requests can all read the same capacity snapshot, all pass the MaxStorage check, and each reserve its declared size via CommitWithStorageDiff, letting the sum of reservations exceed the account quota; those reservations can then be materialized as chunked uploads that consume host disk. The CPE cpe:2.3:a:cloudreve:cloudreve:*:*:*:*:*:*:*:* confirms all Cloudreve builds before 4.18.0 are in scope, and the affected configuration is the default local-storage policy with the default User group. The upstream fix commit 7329602751c00bb4136fe9ad8b364d0df70773df reworks the storage accounting: it adds Tx.ReserveStorage, which atomically adds the requested size to the user's storage inside the transaction with a database-level guard (storage + size <= maxTotal), returning ErrInsufficientCapacity when the guard fails, plus a compensating negative diff so the pre-reservation nets out against the positive diff appended later by CreateEntity. It also adds ReleaseStorage for failure paths and a runWithDeadlockRetry helper (explicitly noted as safe only for auto-commit statements, not for statements inside an explicit BEGIN/COMMIT, since InnoDB rolls back the whole transaction on a deadlock) to handle MySQL Error 1213 deadlocks previously worked around ad hoc.
Know when Cloudreve gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H
Any low-priv authenticated user (PR:L) remotely fires concurrent requests (AV:N, AC:L - the race is trivially won by parallel requests); no confidentiality (C:N), corrupted quota accounting (I:L), storage exhaustion DoS (A:H).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Cloudreve is a self-hosted file management and sharing system. Prior to 4.18.0, PrepareUpload in pkg/filemanager/fs/dbfs/upload.go checks a stale in-memory user storage value through validateUserCapacity and later applies an unconditional storage charge outside the same quota-enforcing transaction. An authenticated user with Files.Write permission can issue concurrent upload-session requests that read the same capacity snapshot, all pass the MaxStorage check, and reserve their declared sizes through CommitWithStorageDiff. The resulting reservations can exceed the account quota and can be materialized as chunked uploads that exhaust host storage and deny uploads to other users. The default local-storage policy and default User group are affected. This issue is fixed in version 4.18.0.
Technical POC Analysis
CWE-362 (Concurrent Execution using Shared Resource with Improper Synchronization), classified in the advisory also as CWE-367 (TOCTOU) and CWE-770 (Allocation Without Limits).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Latest POC
1 public PoC link from github
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
Cloudreve instances running any version prior to 4.18.0 can be driven into full disk exhaustion by a single ordinary user account, causing uploads to fail for every other user of the platform. Because the default User group already carries the upload permission required, the barrier to abuse is very low, and any organization using Cloudreve for internal collaboration or client-facing document exchange should treat this as a service-availability risk affecting all tenants rather than a data-confidentiality or code-execution risk. Impact is limited to denial of service, and no public exploit identified at time of analysis.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Race conditions occur when multiple concurrent requests exploit the brief time gap between checking a condition and acting upon it (TOCTOU - Time of Check, Time of Use).
Cloudreve versions v1.0.0 through v3.5.3 are vulnerable to Stored Cross-Site Scripting (XSS), via the file upload functi
Privilege escalation via OAuth scope enforcement bypass affects Cloudreve self-hosted file management versions 4.12.0 th
Path traversal via improper authorization in Cloudreve's WebDAV handler lets a scoped WebDAV account escape its configur
Revoked, expired, or download-limit-exhausted Cloudreve shares can still be mined for signed file URLs for up to 300 sec
Server-side request forgery in Cloudreve prior to 4.18.0 allows an authenticated user with remote-download privileges to
Server-Side Request Forgery in Cloudreve's remote download workflow (versions prior to 4.16.1) enables authenticated use
Cloudreve before 4.17.0 applies only the Admin.Read OAuth scope to the admin node test endpoints (POST /api/v4/admin/nod
Cloudreve instances running versions prior to 4.18.0 fail to enforce write-scope authorization on two admin tool routes,
Path traversal in Cloudreve before 4.16.1 lets an authenticated user write downloaded files outside the destination dire
EUVD-2026-84528
GHSA-xj3h-wwxq-gfcj
NVD
CVE.org
EPSS
Exploit-DB