概要
OneUptime に テナント 分離 バイパス および アカウント 乗っ取り 脆弱性 が 発見 されました。低権限 の ユーザー が is-multi-tenant-query ヘッダ と projectid ヘッダ を 偽装 する こと で、サーバー 側 の 権限 チェック と テナント スコーピング を バイパス できます。
サーバー が クライアント 提供 の ヘッダ を 信頼 する ため、BasePermission の 内部 権限 チェック が スキップ され、テナント スコーピング が 無効化 されます。他テナント の プロジェクト データ へ の アクセス、User フィールド の 読み取り(ネスト された リレーション 経由)、resetPasswordToken の 平文 漏洩、パスワード リセット による 完全 な アカウント 乗っ取り が 可能 です。
技術的 な 背景
OneUptime は マルチテナント 型 の サービス 監視 プラットフォーム です。テナント 間 の データ 分離 は BasePermission クラス の 権限 チェック と プロジェクト ID に よる スコーピング で 実装 されています。
しかし、is-multi-tenant-query ヘッダ は サーバー 内部 で マルチテナント クエリ を 示す ため の もの であり、クライアント から 送信 された 場合 でも 信頼 されて しまいます。この ヘッダ が 存在 すると BasePermission の 権限 チェック が スキップ され、projectid ヘッダ で 指定 した 任意 の プロジェクト の データ に アクセス できます。
想定 される 影響
- 他テナント の プロジェクト データ(モニタリング 設定、アラート、ステータス ページ 等)の 閲覧
- ネスト された リレーション を 経由 した ユーザー の 機密 フィールド の 読み取り
resetPasswordTokenの 平文 取得 による パスワード リセット- 被害者 アカウント の 完全 な 乗っ取り
- マルチテナント SaaS 環境 での クロステナント データ 漏洩
CVSS ベクトル
| 項目 | 値 |
|---|---|
| CVSSスコア | 9.9 (Critical) |
| 攻撃元区分 | ネットワーク |
| 攻撃条件の複雑さ | 低 |
| 必要な特権レベル | 低 |
| ユーザ関与 | なし |
| CWE | CWE-285 (不適切 な 認可), CWE-862 (認可 の 欠如) |
影響 を 受ける ソフトウェア
| 製品 | ベンダー | 影響バージョン |
|---|---|---|
| OneUptime | OneUptime | 10.0.21 未満 |
修正 バージョン と 回避策
- バージョン 10.0.21 以降 に アップデート して ください
- SaaS 版 を 利用 している 場合 は 提供元 に アップデート 状況 を 確認 して ください
- セルフホスト 環境 では WAF や リバース プロキシ で
is-multi-tenant-queryヘッダ を フィルタ する 暫定 対策 も 考えられます
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
