Skip to main content

Cloudreve EUVDEUVD-2026-84528

| CVE-2026-77633 HIGH
Race Condition (CWE-362)
2026-09-22 GitHub_M GHSA-xj3h-wwxq-gfcj
7.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as default User with Files.Write
  2. Delivery
    Fire concurrent upload-session requests
  3. Exploit
    All read same stale capacity snapshot
  4. Execution
    Each passes MaxStorage check and reserves size
  5. Persist
    Materialize chunked uploads past quota
  6. Impact
    Exhaust 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
1 public PoC Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Cloudreve < 4.18.0

Affected Packages

go github.com/cloudreve/cloudreve no fix
go github.com/cloudreve/cloudreve/v3 no fix
go github.com/cloudreve/cloudreve/v4 fix: 4.0.0-20260715025621-7329602751c0
euvd cloudreve fix: 4.18.0

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

Vendor (GitHub_M) PRIMARY 7.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H
vuln.today AI 7.1 HIGH

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).

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
High

Lifecycle Timeline

2
Patch available
Sep 22, 2026 - 17:17 EUVD
CVE Published
Sep 22, 2026 - 15:28 cve.org
HIGH 7.1

DescriptionCVE.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

Why It Matters

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.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 69% exploitable
Prevalence
Low
popular open-source self-hosted file-sharing app, hobbyist/small-org deployments, no enterprise footprint
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact
Medium

Priority Score

56
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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).

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy