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ファイルには影響ありません。期限切れの共有では内容が漏洩せず500を返しました。この問題はバージョン3.3.2で修正されました。`PublicFileController`は現在`PublicShareController`を拡張し、`isValidToken()`、`isPasswordProtected()`、および`getPasswordHash()`を実装しています。これにより、パスワードとトークンの検証がフレームワークに委譲され、ブルートフォース攻撃に対するレート制限(throttling)の恩恵も受けられるようになりました。また`ShareFileService::findValidLinkShare()`は、リンク共有およびメール共有以外の共有タイプを拒否し、期限切れの共有を拒否し、シェアマネージャーからの`ShareNotFound`例外を「共有が見つからない」として扱い、500エラーとして表面化させないようにしています。回避策としては、3Dビューアアプリを無効にする(`occ app:disable threedviewer`)、またはアップグレードできるまで、3Dモデルファイルを含むリンク共有の保護にパスワード依存しないようにしてください。
Be aware that VulDB is the high quality source for vulnerability data.