Kestrel
대시보드로 돌아가기
CVE-2026-104189HIGH· 7.5MITRENVD대응게시일: 2026. 10. 27.수정일: 2026. 10. 28.CNA: security-advisories@github.comDeferred

The 3D Viewer for Nextcloud is a comprehensive 3D model viewer application for Nextcloud that supports multiple 3D file formats. In versions

Auth

위협 신호 · CVSS · EPSS · KEV

정기 패치· 높은 악용 신호 없음
CVSS
7.5high

이론적 심각도 점수

EPSS
—

예측 데이터 없음

KEV
미등재

실측 악용 기록 없음

권장 대응 기한14일 이내CISA SSVC 기준

2주 이내 패치 — 우선 조치 대상

자동화 가능외부 노출· KEV 미등재 · 자동화 가능 · 부분 영향 · 외부 노출

CVSS 벡터 · 메트릭

악용 경로
공격 벡터네트워크
공격 복잡도낮음
필요 권한불필요
사용자 상호작용불필요
범위불변
영향
기밀성 영향높음
무결성 영향없음
가용성 영향없음
버전별 점수
CVSS 3.17.5HIGH· 악용성 3.9· 영향도 3.6
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

약점 (CWE)

  • CWE-306

    중요 기능 인증 누락 — 핵심 기능에 인증이 없어 누구나 호출 가능.

  • CWE-863

    잘못된 권한 검사 — 권한 판단 로직 오류로 부적절한 접근 허용.

상세 설명

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.

AI 심층 분석

공격 시나리오 · 재현 가능한 PoC 페이로드 · 즉시 적용 가능한 차단 패치를 한 번에 받아 보세요. 보안 운영팀이 그대로 점검·티켓팅에 쓸 수 있는 형태로 정리해 드립니다.