CVE-2026-54350
Budibase: Iniezione anonima di operatori NoSQL tramite modelli di query dell'app pubblicata
- Pubblicato
- 26 giu 2026
- Aggiornato
- 30 giu 2026
- Assegnazione CNA
- GitHub_M
- Evidenza osservata
- 8 ago 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:NBasso · prossimi 30 giorni
- Percentile
- 44,0%
- Data del modello
- 21 set 2026
L'EPSS è una stima statistica, non una certezza o una misura di impatto. Combinalo con CVSS, stato KEV, esposizione e ambiente.
Riepilogo
Budibase è una piattaforma low-code open-source. Prima di 3.39.12, un visitatore non autenticato di qualsiasi app Budibase pubblicata legge ogni documento della collezione MongoDB, CouchDB, Elasticsearch, DynamoDB-PartiQL o REST-with-JSON-body sottostante e, dove il builder ha pubblicato una query di scrittura PUBBLICA, modifica ogni documento di quella collezione con una richiesta HTTP. enrichContext in packages/server/src/sdk/workspace/queries/queries.ts:121-138 sostituisce i valori dei parametri nel corpo JSON grezzo di una query, quindi esegue il JSON.parse del risultato. Il validatore validateQueryInputs in packages/server/src/api/controllers/query/index.ts:61-71 rifiuta solo i marcatori Handlebars ({{, }}) nell'input utente e non esegue l'escape dei metacaratteri JSON (", \, }). Un valore di parametro contenente una virgoletta di chiusura e chiavi aggiuntive introduce campi controllati dall'attaccante nell'oggetto filtro parsato. Per Mongo find, il filtro parsato passa direttamente a collection.find() (packages/server/src/integrations/mongodb.ts:506-510). Il parsing JSON con chiavi duplicate sovrascrive il {name: "..."} del builder con {name: {$exists: true}} e restituisce ogni documento. La stessa primitiva contro una query updateMany (mongodb.ts:577-585) amplia l'ambito del filtro all'intera collezione mentre il corpo $set controllato dal builder viene eseguito su ogni documento corrispondente. Il middleware authorized in packages/server/src/middleware/authorized.ts:141-148 si interrompe quando il ruolo della query è PUBLIC. CSRF non è applicato su questo percorso. POST /api/v2/queries/:queryId (packages/server/src/api/routes/query.ts:63) accetta la chiamata senza sessione, solo con un header x-budibase-app-id che è pubblico dall'URL dell'app pubblicata. Questa vulnerabilità è corretta nella versione 3.39.12.
Fonti
1Utilizzo responsabile
Utilizza le informazioni sulla vulnerabilità solo sui sistemi che possiedi o che sei autorizzato a testare. Kitploit si collega ai metadati della ricerca pubblica e non memorizza codici exploit o payload dannosi.