Cal.comに認証バイパスの重大な脆弱性、あらゆるアカウント乗っ取りの危険性

はじめに: Cal.comに認証バイパスの重大な脆弱性

オープンソースのスケジュール・予約プラットフォームであるCal.comに、攻撃者が認証プロセスを迂回し、あらゆるユーザーアカウントを乗っ取ることが可能になる重大な脆弱性が発見されました。この脆弱性はGitHubの研究者pedroccastro氏によって特定され、GHSA-7hg4-x4pr-3hrgとして追跡されています。

この欠陥は、Cal.comのバージョン3.1.6から6.0.6までに影響を与え、既にバージョン6.0.7でパッチが適用されています。ホスト型Cal.comインスタンスは発見後すぐに保護されたと報じられています。

脆弱性の詳細: JWTのロジック欠陥

この脆弱性は、セッション処理に用いられるCal.comのカスタムNextAuth JWTコールバックにおけるロジックの欠陥に起因します。具体的には、「update」イベントでコールバックがトリガーされる際、クライアントから制御される入力を不適切に信頼し、サーバー側の検証なしに直接JSON Web Token (JWT) に書き込んでいました。

攻撃者は、session.update({ email: "[email protected]" })というAPIコールを悪用することで、この欠陥を突くことができます。システムが指定されたメールアドレスの実際の所有者であるかを確認しないため、アプリケーションは既存のJWTペイロードを上書きし、結果として以下のような偽造されたトークンが生成されます:

  • { sub: attackerId, email: "[email protected]" }

この操作されたトークンが後続のリクエストで使用されると、アプリケーションの認証ロジックは、変更されたtoken.emailフィールドのみに基づいてユーザーを識別します。これにより、攻撃者は被害者のパスワード、セッショントークン、または二要素認証の資格情報なしに、被害者ユーザーとして完全に認証されたアクセス権を取得します。

攻撃の影響: あらゆるユーザーアカウントが標的に

この脆弱性は、単一のAPIリクエストでアカウント乗っ取り攻撃を可能にするものでした。Cal.comのバックエンドがemailフィールドを使用してユーザーセッションを再構築するため、攻撃者は管理者や組織の所有者を含む、メールアドレスが既知の任意のユーザーになりすますことができました。潜在的な影響は広範囲に及び、以下の情報への不正アクセスを許す可能性があります:

  • 予約およびカレンダーデータ
  • 個人およびビジネスのイベントタイプ
  • 連携されている統合(例:Googleカレンダー、Zoom)
  • 組織のメンバーシップと権限
  • 請求および管理モジュール

二要素認証(2FA)やフェデレーテッドIDプロバイダー(IdPs)のようなセキュリティメカニズムも、このシナリオでは保護を提供しません。なぜなら、信頼のバイパスはJWT検証の後に発生するからです。

対応と対策: 緊急のバージョンアップを推奨

Cal.comの公式声明によると、現時点では実際の悪用は検出されておらず、ホストされた展開は直ちにパッチが適用されたと確認されています。自己ホスト型インスタンスを使用しているユーザーは、このリスクを排除するために、バージョン6.0.7以降に緊急でアップグレードすることが強く推奨されます。

この欠陥は、JWTベースのセッションシステムにおいて、厳格な入力検証と認証制御の重要性を浮き彫りにしています。信頼できないクライアントに機密性の高いID属性の変更を許可することは、今回見られたような壊滅的な権限昇格につながる可能性があります。セキュリティ専門家は、パッチの即時適用と、潜在的に露呈したAPIトークンのローテーションを推奨しています。


元記事: https://gbhackers.com/cal-com-authentication-bypass/