Cloudreve Admin.Read OAuth tokens can trigger server-side node test requests
## Summary Cloudreve exposes two admin node test endpoints under the `Admin.Read` OAuth scope. These endpoints accept attacker-controlled node definitions and cause Cloudreve to make outbound server-side network requests. This allows an OAuth client authorized only for `Admin.Read` to trigger operational network actions that should require `Admin.Write`. ## Impact An attacker who obtains an admin-authorized OAuth token with `Admin.Read` but not `Admin.Write` can make the Cloudreve server connect to arbitrary URLs supplied in the request body. This can be used for blind SSRF, internal service probing, and triggering signed Cloudreve slave-style requests to attacker-chosen endpoints. ## Affected version Verified in source and runtime on latest master commit `ba2e870bbd17f1918dd2321de861e453f696d6a3` and latest observed tag `4.16.1`. ## Technical details The authenticated admin route group requires only `Admin.Read`: ```go auth := v4.Group("") auth.Use(middleware.LoginRequired()) auth.Use(middleware.RequiredScopes(types.ScopeAdminRead)) admin := auth.Group("admin", middleware.IsAdmin()) ``` The following routes are registered without `ScopeAdminWrite`: ```go node.POST("test", controllers.FromJSON[adminsvc.TestNodeService](adminsvc.TestNodeParamCtx{}), controllers.AdminTestSlave, ) node.POST("test/downloader", controllers.FromJSON[adminsvc.TestNodeDownloaderService](adminsvc.TestNodeDownloaderParamCtx{}), controllers.AdminTestDownloader, ) ``` By contrast, node create, update, an
GHSA-v6w6-358x-2433
Primary source · Revision 1
Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.
Security context
Source reference: osv:GHSA-v6w6-358x-2433
github.com/cloudreve/Cloudreve/v4
Source reference: /affected/0/package/name
- Affected versions
- Not stated in this record
- Fixed versions
- 4.0.0-20260626022735-332a9d800205
Source reference:
/affected/0/ranges - Prerequisites
- Not stated in this record
github.com/cloudreve/Cloudreve/v3
Source reference: /affected/1/package/name
- Affected versions
- Not stated in this record
- Fixed versions
- Not stated in this record
- Prerequisites
- Not stated in this record
Structured affected-version data
Original package identities and version rules from this source.
[
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
},
{
"fixed": "4.0.0-20260626022735-332a9d800205"
}
]
}
],
"package": {
"name": "github.com/cloudreve/Cloudreve/v4",
"purl": "pkg:golang/github.com/cloudreve/Cloudreve/v4",
"ecosystem": "Go"
},
"database_specific": {
"source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/07/GHSA-v6w6-358x-2433/GHSA-v6w6-358x-2433.json"
}
},
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
},
{
"last_affected": "3.0.0-20250225100611-da4e44b77af4"
}
]
}
],
"package": {
"name": "github.com/cloudreve/Cloudreve/v3",
"purl": "pkg:golang/github.com/cloudreve/Cloudreve/v3",
"ecosystem": "Go"
},
"database_specific": {
"source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/07/GHSA-v6w6-358x-2433/GHSA-v6w6-358x-2433.json"
}
}
]- Related CVEs
- CVE-2026-101048
Source reference:
/aliases
Publisher severity
No explicit severity was provided.
- Event
- #21140 · Revision 1
- Added to Heist Feed
- Publisher date