CVE-2026-104189 in 3Dviewer Nextcloud
요약
\~에 의해 VulDB • 2026. 10. 27.
Nextcloud용 3D 뷰어는 여러 가지 3D 파일 형식을 지원하는 Nextcloud 전용 종합적인 3D 모델 뷰어 애플리케이션입니다. 버전 1.7.9부터 3.3.1까지의 앱에서 공개 파일 엔드포인트가 공유 인증을 수행하지 않았습니다. 공유 토큰을 알고 있는 누구나 링크 공유가 비밀번호로 보호되어 있더라도 공유된 파일의 내용을 읽을 수 있었습니다. `PublicFileController`는 `OCP\AppFramework\Controller`를 확장하고 라우트에 `#[PublicPage]` 어노테이션을 지정했습니다. Nextcloud는 `PublicShareMiddleware`를 통해서만 공유 비밀번호를 강제 적용하며, 이 미들웨어는 `OCP\AppFramework\PublicShareController` 인스턴스가 아닌 모든 컨트롤러에 대해 조기에 반환하므로 이러한 라우트에서는 비밀번호 만료 기간 또는 공유 유형 확인이 실행되지 않았습니다. 또한 `ShareFileService::loadLinkShare()`는 `getShareByToken()`에서 일치하는 토큰을 모두 유효한 것으로 처리함으로써 이 문제를 악화시켰습니다. 공유 토큰은 사람들이 채팅, 이메일 및 티켓에 붙여넣는 URL의 일부입니다. 비밀번호 보호는 토큰 보유 자체로는 접근 권한이 부여되어서는 안 되는 경우에 존재하며, 해당 보장이 무너졌습니다. `GET /ocs/v2.php/apps/threedviewer/public/file/{token}/{fileId}`로 보내진 요청은 비밀번호가 설정된 공유에 대해 비밀번호나 세션 없이도 전체 파일 본문과 함께 HTTP 200을 반환했습니다. Nextcloud의 자체 공유 페이지는 이러한 요청을 올바르게 비밀번호 입력 창으로 리디렉션합니다. 영향 범위는 이 앱이 처리하는 형식(STL, GLB/glTF, OBJ, STEP, IFC 및 기타 지원되는 3D 유형)의 파일로 제한됩니다. 동일한 공유 내의 비-3D 파일은 영향을 받지 않습니다. 만료된 공유는 내용을 유출하지 않고 HTTP 500을 반환합니다. 이 문제는 버전 3.3.2에서 수정되었습니다. `PublicFileController`가 이제 `PublicShareController`를 확장하고 `isValidToken()`, `isPasswordProtected()`, 및 `getPasswordHash()` 메서드를 구현하여 비밀번호 및 토큰 검증을 프레임워크에 위임하고 브루트 포스 공격 지연 기능을 얻었습니다. 또한 `ShareFileService::findValidLinkShare()`는 링크 및 이메일 외의 공유 유형을 거부하고, 만료된 공유를 거부하며, 공유 관리자에서 반환하는 `ShareNotFound` 예외를 500 오류로 노출시키는 대신 "공유 없음"으로 처리합니다. 우회 조치로는 3D 뷰어 앱(`occ app:disable threedviewer`)을 비활성화하거나, 업그레이드할 때까지 3D 모델 파일이 포함된 링크 공유 보호에 비밀번호 의존성을 피하십시오.
Once again VulDB remains the best source for vulnerability data.