Budibase、認証回避の重大な脆弱性を公表

セキュリティニュース

投稿日時: 更新日時:

Budibase、認証回避の重大な脆弱性を公表

Budibaseで、認証が必要なAPIエンドポイントに対し、クエリ文字列へ公開エンドポイントのパスを混ぜるだけで認証を回避できる重大な脆弱性が公表されました。GitHub Advisoryでは、対象パッケージを @budibase/backend-core、深刻度をCritical、CVSS v3.1を9.1としており、影響を受けるのは 3.35.3 以下です。現時点で同AdvisoryにはCVE番号は付与されていません。

何が起きたか

一次情報によると、問題は authenticated ミドルウェアの公開エンドポイント判定にあります。

Budibaseは公開エンドポイントを正規表現で判定していますが、その正規表現がアンカーなしで作られており、しかも照合対象に Koa の ctx.request.url を使っていました。ctx.request.url にはクエリ文字列も含まれるため、本来は保護されるべきURLでも、たとえば POST /api/global/users/search?x=/api/system/status のように公開エンドポイントの文字列をクエリへ含めると、公開エンドポイントだと誤判定される構造でした。

この誤判定が起きると、Budibaseのワーカー側で行うグローバルな認証チェックがスキップされます。GitHub Advisoryでは、その結果として POST /api/global/users/searchGET /api/global/selfGET /api/global/users/accountholderPOST /api/global/license/refreshPOST /api/global/event/publish など、loggedInRoutes 配下の一部エンドポイントへ未認証で到達できると説明しています。特に /api/global/users/search では、ユーザー一覧の検索結果からメールアドレス、氏名、ロール、管理者権限の有無などが取得され得るとされています。

修正状況

ここは少し注意が必要です。GitHub Advisoryのメタデータでは、影響バージョンは 3.35.3 以下となっている一方、Patched versions の欄は None になっています。ただし、BudibaseのGitHubリリースでは 3.35.4 の変更点として harden endpoint matching in auth middleware が明記されています。

これを踏まえると、少なくとも 3.35.4 で本件に対応する修正が入ったとみえます。

影響

GitHub Advisoryは、攻撃者が未認証のままユーザー一覧の列挙、アカウントホルダーの特定、ライセンス更新のトリガー、イベント発行などを行えると説明しています。一方で、すべての管理系APIが無条件に突破されるわけではありません。builderOrAdminRoutesadminRoutes に属するエンドポイントは、別の二次的な認可チェックが残っているため、この脆弱性だけでは通らないと整理されています。つまり、影響は Budibase 全体の完全乗っ取りというより、グローバル認証チェックのみに依存していた一部APIが露出する問題として理解するのが正確です。