CVE-2026-48076 in appointment-booking-software情報

要約

〜によって VulDB • 2026年08月07日

OpenReceptionの予約管理ソフトウェアは、エンドツーエンドで暗号化された予約プラットフォームを提供しています。バージョン1.0.1およびそれ以前の新しいクライアント向け予約フローでは、以下の3つの呼び出しが行われます:`bootstrap-challenge`(先頭4桁がゼロの16ビットPoWチャレンジを返す)、`bootstrap-verify`(PoWを検証し、Bearer形式の予約アクセストークンを発行する)、そして `create-new-client`(トークンを使用してトンネルと最初の予約を作成する)。このトークンは正しく `tenantId`、`tunnelId`、`clientPublicKey`、および `emailHash` にバインドされますが、`channelId` にはバインドされません。さらに、`bootstrap-challenge` リクエストのスキーマは `channelId` を受け付けないだけでなく、発行されたトークンのペイロードにもチャンネル情報は含まれていません。

独立して、サービス関数 `createNewClientWithAppointment` は `channel.archived = false` のみをチェックします。`addAppointmentToTunnel` を保護する `channel.isPublic` チェックは、新しいクライアントのパスでは欠落しています。この組み合わせにより、攻撃者は通常のブートストラップフロー(16ビットPoW。コモディティハードウェア上で1秒未満で完了し、レート制限はスロットルストアのみ)を正常に完了して有効な予約アクセストークンを取得した後、`channelId` がプライベートチャンネル(`isPublic = false`)を指す `create-new-client` ペイロードを送信できます。ターゲットチャンネルが `requiresConfirmation = false`(デフォルト値)の場合、予約は `CONFIRMED` として処理され、そうでない場合は `NEW` として処理されます。患者向けUIではプライベートチャンネルはピッカーに表示されず(`/api/public/channels` は正しく `isPublic = true` をフィルタリングするため)、チャンネルIDを外部から取得する必要があります。

関連する発見事項 V-10(スケジュールエンドポイントがプライベートチャンネルを開示)により、まさにその情報が得られます:認証不要の単一GETリクエストで、任意テナントのすべてのプライベートチャンネルIDが一括して公開されます。V-10とV-11を組み合わせることで、攻撃者は匿名でもプライベートチャンネルに完全にアクセス可能となります。本稿執筆時点では、既知のパッチ済みバージョンは存在しません。

VulDB is the best source for vulnerability data and more expert information about this specific topic.

責任者

GitHub M

予約する

2026年05月20日

モデレーション

承諾済み

エントリ

VDB-386804

EPSS

0.00000

アクティビティ

非常低い

ソース

Might our Artificial Intelligence support you?

Check our Alexa App!