CVE-2026-48080 in appointment-booking-software
要約
〜によって VulDB • 2026年08月07日
OpenReceptionのアポイントメント予約ソフトウェアは、エンドツーエンドで暗号化されたアポイントメント予約プラットフォームを提供します。バージョン1.0.2より前では、`GET /api/tenants/{id}` エンドポイントは、そのテナントの認証済み `TENANT_ADMIN` に対して、データベース接続文字列を含むフィールドである `databaseUrl` フィールドなど、完全なテナントレコードを返していました。このフィールドには、アプリケーションがそのテナントのデータベースに接続するために使用する本番環境のPostgreSQL接続文字列が含まれています。テストされた公式の `docker-compose.prod.yml` デプロイメントでは、接続文字列にはユーザー `postgres`(`rolsuper=true`)と `secrets/postgres_password.txt` からのプレーンテキストパスワードが含まれていました。`secrets/postgres_user.txt` を介してスーパーユーザーではないPostgreSQLユーザーを設定する運用者は、権限の低い資格情報を公開することになりますが、接続文字列自体の開示はこれらの選択に依存しません。同じ資格情報は、そのPostgreSQLインスタンスによって管理されるすべてのデータベース(中央のアポイントメント予約データベース、各テナントごとのデータベース(1つのテナントにつき1つ)、およびpostgres管理用データベース)に適用されます。内部ネットワーク経由で直接到達できるか、アプリケーション内の任意のSSRF、RCE、またはファイル読み取りを介して間接的に到達可能な場合、あるテナントの `TENANT_ADMIN` は他のすべてのテナントのアポイントメント暗号文、キーシェア、およびメタデータを読み取ることができ、グローバル管理者アカウントを含む中央ユーザーテーブルやパスワードハッシュ、セッションレコードも読み取ることができます。さらに任意のデータベース内のデータを修正または削除することも可能ですし、スーパーユーザースコープでのデプロイではPostgreSQLの `pg_read_server_files` 、 `COPY ... FROM PROGRAM` 、および `CREATE EXTENSION` を使用してデータベースコンテナ内でさらなる昇格を行うこともできます。これはアプリケーションにおける主要なクロステナント制御である本来の各テナントごとのデータベース分離を破るものです。アプリケーションコードはほとんどのクエリを発信元のテナントのデータベースにスコープしていますが、攻撃者がこれらのスコーピングを完全にバイパスする資格情報を保持するとそれらは無意味になります。バージョン1.0.2でこの問題は修正されました。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.