CVE-2026-54350
Budibase: 公開アプリのクエリテンプレートを介した匿名NoSQLオペレーターインジェクション
- 公開済み
- 2026/06/26
- 更新済み
- 2026/06/30
- CNA の割り当て
- GitHub_M
- 観察された証拠
- 2026/08/08
プライマリ CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N低 · 今後 30 日間
- パーセンタイル
- 44.0%
- モデルの日付
- 2026/09/21
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
Budibaseはオープンソースのローコードプラットフォームです。3.39.12より前のバージョンでは、公開されたBudibaseアプリへの未認証の訪問者は、バックエンドのMongoDB、CouchDB、Elasticsearch、DynamoDB-PartiQL、またはREST-with-JSON-bodyコレクションのすべてのドキュメントを読み取ることができ、ビルダーがPUBLIC書き込みクエリを公開している場合には、1回のHTTPリクエストでそのコレクションのすべてのドキュメントを変更することができます。packages/server/src/sdk/workspace/queries/queries.ts:121-138のenrichContextは、パラメータ値をクエリの生のJSONボディに代入し、その結果をJSON.parseします。packages/server/src/api/controllers/query/index.ts:61-71のバリデータvalidateQueryInputsは、ユーザー入力内のHandlebarsマーカー({{, }})のみを拒否し、JSONメタ文字(", \, })をエスケープしません。閉じ引用符と追加のキーを含むパラメータ値は、攻撃者が制御するフィールドをパースされたフィルタオブジェクトに持ち込みます。Mongoのfindの場合、パースされたフィルタはcollection.find() (packages/server/src/integrations/mongodb.ts:506-510)に直接渡されます。重複キーによるJSONパースは、ビルダーの{name: "..."}を{name: {$exists: true}}で上書きし、すべてのドキュメントを返します。updateManyクエリ (mongodb.ts:577-585)に対する同じプリミティブは、フィルタのスコープをコレクション全体に拡大し、ビルダーが制御する$set本体が、マッチしたすべてのドキュメントに対して実行されます。packages/server/src/middleware/authorized.ts:141-148のauthorizedミドルウェアは、クエリのロールがPUBLICの場合に短絡します。このパスではCSRFは強制されません。POST /api/v2/queries/:queryId (packages/server/src/api/routes/query.ts:63)は、セッションなしで、公開されたアプリのURLから取得できる公開のx-budibase-app-idヘッダーのみで呼び出しを受け入れます。この脆弱性は3.39.12で修正されています。
ソース
1CVE-2026-54350 の PoC — Budibase の認証不要の NoSQL オペレーターインジェクション(CVSS 10.0)。公開クエリを介して任意のドキュメントコレクションの読み取り/一括書き込みが可能。
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。