Summary
A permission enforcement flaw allows users without download privileges (download=false) to still expose and retrieve file content via public share links when they retain share privileges (share=true). This bypasses intended access control policy and enables unauthorized data exfiltration to unauthenticated users. Where download restrictions are used for data-loss prevention or role separation.
Details
The backend applies inconsistent authorization checks across download paths:
- Direct raw download correctly enforces
Perm.Download:
- [raw.go](filebrowser/http/raw.go:82)
- Share creation only enforces
Perm.Share:
- [share.go](filebrowser/http/share.go:21)
- Public share/download handlers serve shared content without verifying owner
Perm.Download:
As a result, a user who is blocked from direct downloads can create a share and obtain the same file via /api/public/dl/<hash>.
PoC
- Create a non-admin user with:
perm.share = true
perm.download = false
- Login as that user and upload a PDF file:
POST /api/resources/nodl_secret_<rand>.pdf with Content-Type: application/pdf
- Verify direct raw download is denied:
GET /api/raw/nodl_secret_<rand>.pdf
- Expected and observed:
202 Accepted (blocked)
- Create share for same file:
POST /api/share/nodl_secret_<rand>.pdf
- Observed:
200, response includes hash (example: qxfK3JMG)
- Download publicly without authentication:
GET /api/public/dl/<hash>
- Observed (vulnerable):
200, Content-Type: application/pdf, and PDF bytes are returned
Live evidence captured (March 1, 2026):
create user: 201
create file: 200
direct /api/raw: 202 Accepted
create share: 200
public download /api/public/dl/mxK-ppZb: 200
public download content-type: application/pdf
public download body length: 327 bytes
Impact
This is an access control / authorization policy bypass vulnerability.
- Who can exploit: Any authenticated user granted
share=true but denied download.
- Who is impacted: Operators and organizations relying on download restrictions to prevent data export.
- What can happen: Restricted users can still distribute and retrieve files publicly, including unauthenticated access through share URLs.
References
Summary
A permission enforcement flaw allows users without download privileges (
download=false) to still expose and retrieve file content via public share links when they retain share privileges (share=true). This bypasses intended access control policy and enables unauthorized data exfiltration to unauthenticated users. Where download restrictions are used for data-loss prevention or role separation.Details
The backend applies inconsistent authorization checks across download paths:
Perm.Download:Perm.Share:Perm.Download:As a result, a user who is blocked from direct downloads can create a share and obtain the same file via
/api/public/dl/<hash>.PoC
perm.share = trueperm.download = falsePOST /api/resources/nodl_secret_<rand>.pdfwithContent-Type: application/pdfGET /api/raw/nodl_secret_<rand>.pdf202 Accepted(blocked)POST /api/share/nodl_secret_<rand>.pdf200, response includeshash(example:qxfK3JMG)GET /api/public/dl/<hash>200,Content-Type: application/pdf, and PDF bytes are returnedLive evidence captured (March 1, 2026):
create user:201create file:200direct /api/raw:202 Acceptedcreate share:200public download /api/public/dl/mxK-ppZb:200public download content-type:application/pdfpublic download body length:327bytesImpact
This is an access control / authorization policy bypass vulnerability.
share=truebut denieddownload.References