CVE-2026-104189
Last modified
CVE-2026-104189 is a high-severity vulnerability rated 7.5/10 on the CVSS scale. The 3D Viewer for Nextcloud is a comprehensive 3D model viewer application for Nextcloud that supports multiple 3D file formats. In versions 1.7.9 through 3.3.1, the app's public file endpoint performed no share authorization. EPSS estimates a 0.35% chance of exploitation in the next 30 days.
Description
The 3D Viewer for Nextcloud is a comprehensive 3D model viewer application for Nextcloud that supports multiple 3D file formats. In versions 1.7.9 through 3.3.1, the app's public file endpoint performed no share authorization. Anyone who knows a share token could read the shared file's contents even when the link share was protected by a password. `PublicFileController` extended `OCP\AppFramework\Controller` and marked its routes `#[PublicPage]`. Nextcloud only enforces share passwords through `PublicShareMiddleware`, which returns early for any controller that is not an `OCP\AppFramework\PublicShareController` instance — so no password, expiry, or share-type check ran for these routes. `ShareFileService::loadLinkShare()` compounded this by treating any token that `getShareByToken()` matched as authorised. A share token is the part of the URL that people paste into chats, emails, and tickets. Password protection exists precisely for the case where holding the token should not by itself grant access, and that guarantee did not hold. Requests to `GET /ocs/v2.php/apps/threedviewer/public/file/{token}/{fileId}` returned `200` with the full file body for password-protected shares, with no password and no session. Nextcloud's own share page correctly redirected such requests to the password prompt. Scope is limited to files in the formats this app handles (STL, GLB/glTF, OBJ, STEP, IFC, and the other supported 3D types). Non-3D files in the same share are unaffected. Expired shares returned `500` rather than leaking contents. This issue is fixed in 3.3.2. `PublicFileController` now extends `PublicShareController` and implements `isValidToken()`, `isPasswordProtected()`, and `getPasswordHash()`, delegating password and token validation to the framework and gaining brute-force throttling. `ShareFileService::findValidLinkShare()` additionally rejects share types other than link and email, rejects expired shares, and treats a `ShareNotFound` from the share manager as "no share" instead of letting it surface as a 500. As a workaround, disable the 3D Viewer app (`occ app:disable threedviewer`), or avoid relying on passwords to protect link shares that contain 3D model files, until you can upgrade.
Metrics
Weakness Enumeration
Affected Software
Source: CNA advisory (CVE.org). NVD analysis pending.
| Vendor | Product | Versions |
|---|---|---|
| maz1987in | 3Dviewer-Nextcloud | >= 1.7.9, < 3.3.2 |
References
Timeline
- Published
- Last Modified
- Status
- Deferred
Frequently Asked Questions
What is CVE-2026-104189?
How severe is CVE-2026-104189?
How do I fix CVE-2026-104189?
How Strix Helps
- How Strix found a critical auth bypass in etcdStrix autonomously discovered a critical authentication bypass in etcd, later designated CVE-2026-33413.
- Uncovering a hidden BOLA in Appsmith's snapshot logicStrix autonomously discovered a BOLA/IDOR vulnerability in Appsmith's snapshot deletion path.
- Autonomous PentestingAI agents that find and validate exploitable vulnerabilities like this one across your applications.
- PR ReviewsPentest every pull request so vulnerable code is caught before it ships to production.
- AI Penetration TestingHow AI-driven penetration testing continuously covers your attack surface.
Related CVEs from 2026
- CVE-2026-104142DataEase is an open source data visualization and analysis t…8.7
- CVE-2026-104143DataEase is an open source data visualization and analysis t…8.7
- CVE-2026-104150AdonisJS HTTP Server is a package for handling HTTP requests…8.7
- CVE-2026-104181Filament is a collection of full-stack components for accele…5.4
- CVE-2026-104182stream-json is a micro-library of stream components for proc…6.2
- CVE-2026-104183stream-json is a micro-library of stream components for proc…5.1
- CVE-2026-104192Dragonfly is an in-memory data store built for modern applic…9.6
- CVE-2026-104198ZoneMinder is a free, open source closed-circuit television …5.3
- CVE-2026-1042The WP Hello Bar plugin for WordPress is vulnerable to Store…4.4
- CVE-2026-10420Untrusted pointer dereference vulnerability in Samsung Open …5.5
- CVE-2026-104246The Contact Form 7 Signature Addon WordPress plugin through …5.9
- CVE-2026-104250The unstructured library provides open-source components for…6.1
Are you affected by CVE-2026-104189?
Run a free Strix scan to check your systems for this vulnerability.
Scan your code nowSource: NVD / NIST
