CVE Intelligence

Vulnerabilidades do Budibase Budibase

🔔 Criar alerta RSS Verificador de versão

CVEs publicadas que afetam Budibase Budibase: 43 registro(s), com versões afetadas e correções.
cpe:2.3:a:budibase:budibase

CVE-2026-54353 Alta · 7.1 CWE-367 26/06/2026
Budibase: Potential SSRF DNS rebinding bypass in outbound fetch validation
Budibase is an open-source low-code platform. Prior to 3.39.9, authenticated users with automation permissions can bypass Budibase's SSRF blacklist through DNS rebinding. The outbound fetch flow validates a hostname against the blacklist before the request is sent, but the actual socket connection later performs a separate DNS lookup through node-fetch. Since the validated IPs are never pinned to the connection, an attacker-controlled hostname can return a public IP during validation and a private/internal IP during the real connection. This results in a non-blind SSRF primitive against internal services reachable from the Budibase host, including loopback, RFC1918 ranges, and cloud metadata endpoints. This vulnerability is fixed in 3.39.9.
CVE-2026-54352 Crítica · 9.6 CWE-22 26/06/2026
Budibase: path traversal via links simbólicos no upload de ícones PWA
Budibase é uma plataforma low-code de código aberto. Antes da versão 3.39.9, `POST /api/pwa/process-zip` em packages/server/src/api/routes/static.ts:24 aceita um .zip enviado por um builder, extrai-o com extract-zip@2.0.1 em um diretório temporário e, para cada entrada listada em icons.json, valida o caminho do ícone, o abre e transmite os bytes para o MinIO. O objeto resultante é servido de volta por GET /api/assets/{appId}/pwa/{uuid}.png. O extract-zip@2.0.1 preserva destinos absolutos de links simbólicos ao restaurar entradas de links simbólicos. O validador de origem do ícone em packages/server/src/api/controllers/static/index.ts:259-268 resolve a string de origem do ícone em relação a baseDir (path.resolve), verifica resolvedSrc.startsWith(baseDir + path.sep) sobre essa string e chama fs.existsSync(resolvedSrc), que segue links simbólicos para confirmar que o destino existe. Nenhuma das três chamadas rejeita entradas de link simbólico. packages/backend-core/src/objectStore/objectStore.ts:302 então chama (await fsp.open(path)).createReadStream() no caminho resolvido. O fsp.open segue o link simbólico, os bytes do arquivo de destino são transmitidos para o MinIO, e a resposta do endpoint de busca de assets retorna esses bytes sem alteração. Resultado: um builder em nível de workspace consegue ler qualquer arquivo que o processo do servidor possa abrir. Esta vulnerabilidade foi corrigida na versão 3.39.9.
CVE-2026-54351 Crítica · 9.6 CWE-915 26/06/2026
Mass Assignment no Gatilho de Webhook do Budibase Permitindo Execução de Automação em Outro Workspace
O Budibase é uma plataforma low-code de código aberto. Antes da versão 3.39.9, o endpoint de gatilho de webhook do Budibase é acessível publicamente e repassa o corpo completo da requisição HTTP para os parâmetros de execução da automação. Uma vulnerabilidade de atribuição em massa (mass assignment) na função externalTrigger() permite que um atacante sobrescreva a propriedade interna appId ao incluí-la no corpo do POST do webhook. Quando a automação é processada de forma assíncrona (o caminho padrão para webhooks sem etapa collect), o worker executa a automação definida pelo atacante no contexto do workspace da vítima, concedendo acesso total de leitura e escrita ao banco de dados da vítima. Esta vulnerabilidade está corrigida na versão 3.39.9.
CVE-2026-54350 Crítica · 9.8 CWE-89 26/06/2026
Budibase: leitura e escrita de dados sem autenticação via consultas PUBLIC
O Budibase é uma plataforma low-code de código aberto. Antes da 3.39.12, um visitante não autenticado de qualquer aplicativo Budibase publicado lê todos os documentos da coleção de MongoDB, CouchDB, Elasticsearch, DynamoDB-PartiQL ou REST-with-JSON-body que serve de backend e, quando o criador publicou uma consulta de escrita PUBLIC, modifica todos os documentos dessa coleção com uma única requisição HTTP. enrichContext em packages/server/src/sdk/workspace/queries/queries.ts:121-138 substitui valores de parâmetros no corpo JSON bruto de uma consulta e depois executa JSON.parse sobre o resultado. O validador validateQueryInputs em packages/server/src/api/controllers/query/index.ts:61-71 rejeita apenas marcadores Handlebars ({{, }}) na entrada do usuário e não escapa metacaracteres JSON (\", \\, }). Um valor de parâmetro contendo aspas de fechamento e chaves adicionais faz com que campos controlados pelo atacante sejam incluídos no objeto de filtro analisado. Para find do Mongo, o filtro analisado é passado diretamente para collection.find() (packages/server/src/integrations/mongodb.ts:506-510). Análise JSON com chaves duplicadas sobrescreve o {name: \"...\"} definido pelo criador com {name: {$exists: true}} e retorna todos os documentos. A mesma primitiva contra uma consulta updateMany (mongodb.ts:577-585) amplia o escopo do filtro para toda a coleção, enquanto o corpo $set controlado pelo criador é executado em todos os documentos correspondentes. O middleware authorized em packages/server/src/middleware/authorized.ts:141-148 faz curto-circuito quando o papel da consulta é PUBLIC. CSRF não é aplicado nesse caminho. POST /api/v2/queries/:queryId (packages/server/src/api/routes/query.ts:63) aceita a chamada sem sessão, apenas com o cabeçalho x-budibase-app-id, que é público a partir da URL do aplicativo publicado. Esta vulnerabilidade foi corrigida na 3.39.12.
CVE-2026-50137 Crítica · 9.4 CWE-862 26/06/2026
Budibase: falta de autorização em endpoint de URL de upload S3
Budibase é uma plataforma low-code de código aberto. Antes da versão 3.39.0, um atacante anônimo que conheça ou consiga enumerar o identificador de um workspace (app_...) e o identificador de uma fonte de dados do tipo S3 (ds_...) pode chamar este endpoint sem autenticação e obter uma URL pré-assinada de PUT válida por 15 minutos, gerada com a identidade IAM da vítima. O endpoint também retorna a publicUrl, de modo que o atacante sabe exatamente onde seu PUT será gravado. Como o bucket é controlado pelo atacante, ele pode gravar em qualquer bucket que essas credenciais IAM tenham permissão de escrita, e não apenas no bucket configurado para a fonte de dados. A rota do servidor Budibase POST /api/attachments/:datasourceId/url (packages/server/src/api/routes/static.ts) é registrada apenas com o middleware recaptcha. Não há middleware authorized(...) na cadeia. O controlador (packages/server/src/api/controllers/static/index.ts::getSignedUploadURL) consulta a fonte de dados, instancia um cliente AWS S3 com o accessKeyId / secretAccessKey armazenados na fonte e retorna uma URL pré-assinada PutObjectCommand do AWS Signature V4 para o bucket e a chave informados pelo chamador. O bucket não está vinculado ao bucket configurado na fonte de dados. O contexto de workspace exigido por sdk.datasources.get é obtido por getWorkspaceIdFromCtx (packages/backend-core/src/utils/utils.ts) a partir de qualquer um destes: o cabeçalho x-budibase-app-id, o campo appId do corpo JSON, um segmento de caminho que começa com o prefixo do workspace, ou ?appId=. auth.buildAuthMiddleware([], { publicAllowed: true }) é executado antes de tudo isso e permite explicitamente requisições anônimas. O ramo "deny access to dev preview" do middleware currentWorkspace só é acionado quando isBrowser(ctx) && !isApiKey(ctx); isBrowser verifica o User-Agent analisado para identificar um navegador reconhecido, de modo que qualquer cliente que não seja navegador (curl, o PoC fornecido, qualquer ferramenta que não defina um User-Agent de navegador) não é considerado navegador e também alcança workspaces de desenvolvimento. Esta vulnerabilidade foi corrigida na versão 3.39.0.
CVE-2026-50136 Média · 5.3 CWE-306 26/06/2026
Budibase: Unauthenticated S3 signed upload URL generation allows arbitrary writes with stored datasource credentials
Budibase is an open-source low-code platform. Prior to 3.39.3, the application server exposes an unauthenticated endpoint that generates S3 PutObject presigned URLs using credentials stored in a workspace datasource. The route is protected only by the recaptcha middleware and does not require authentication, table permission, datasource permission, or builder access. A public caller who knows a workspace ID and S3 datasource ID can request a signed upload URL for attacker-controlled bucket and key values. This vulnerability is fixed in 3.39.3.
CVE-2026-50132 Alta · 7.3 CWE-284 26/06/2026
Budibase: Chat Identity Link Hijacking via Missing Consent & CSRF — Account Impersonation in Budibase
Budibase is an open-source low-code platform. Prior to 3.39.0, `GET /api/chat-links/:instance/:token/handoff` is a public endpoint (no auth required) that performs a permanent, state-changing operation: it binds an external chat identity (Slack/Discord/MS Teams) to an authenticated Budibase user account, with no consent UI and no CSRF protection. The session token in the URL is created by the attacker (from their own /link slash command) and embeds the attacker's externalUserId. When an authenticated Budibase victim visits the URL, their account is silently and permanently linked to the attacker's Slack/Discord identity. The server responds with "Authentication succeeded." — no indication of what was linked. This vulnerability is fixed in 3.39.0.
CVE-2026-48153 Alta · 8.5 CWE-918 27/05/2026
Budibase: SSRF via OAuth2 token endpoint URL reaches internal hosts and cloud metadata
Budibase is an open-source low-code platform. Prior to 3.39.0, fetchToken in the OAuth2 SDK makes a POST to a builder-supplied URL with plain node-fetch, skipping the blacklist.isBlacklisted check that every other outbound fetch path in the codebase uses. The Joi schema for the OAuth2 URL has no scheme or host restriction. This vulnerability is fixed in 3.39.0.
CVE-2026-48152 Alta · 8.1 CWE-863 27/05/2026
Budibase: Basic app users can exfiltrate stored REST datasource auth by rewriting datasource base URL
Budibase is an open-source low-code platform. Prior to 3.39.0, the single-datasource GET and PUT routes are guarded by generic TABLE READ, not by Builder/Admin permission or datasource-specific ownership/resource checks. The built-in Basic app user role maps to the WRITE permission set, which includes table read/write and query write. A Basic user can therefore read an existing REST datasource, receive redacted authConfigs values, submit an update that changes only config.url while keeping the redacted placeholders, and trigger an existing saved relative-path REST query. During update, mergeConfigs() restores the old stored secret when it sees the redaction placeholder. During query execution, Budibase prefixes the attacker-controlled datasource config.url to the relative query path and applies the resolved stored auth headers. The result is server-side disclosure of the builder-configured REST Authorization secret to an attacker-controlled listener. This vulnerability is fixed in 3.39.0.
CVE-2026-48151 Alta · 7.5 CWE-862 27/05/2026
Budibase: Webhook schema endpoint authorization bypass allows unauthenticated mutation of webhook and automation schema
Budibase is an open-source low-code platform. Prior to 3.39.0, the webhook schema-building endpoint is registered under builderRoutes, but the generic authorization middleware skips authorization for all paths matching /api/webhooks/schema. As a result, an unauthenticated caller can update the body schema for a known webhook and mutate the corresponding automation trigger output schema. This vulnerability is fixed in 3.39.0.
CVE-2026-48150 Crítica · 9.0 CWE-915 27/05/2026
Budibase: Workspace-scoped builder escalates to global admin via /api/public/v1/roles/assign
Budibase is an open-source low-code platform. Prior to 3.39.0, /api/public/v1/roles/assign is guarded by the builderOrAdmin middleware, which passes any user who is a builder for the app id in the x-budibase-app-id header. That check admits both global builders and workspace-scoped builders (builder.apps set but builder.global unset). The controller then spreads the request body into the SDK call, and the SDK grants builder.global=true or admin.global=true on whichever user ids the caller supplies. Bob, a workspace-scoped builder with an API key, promotes himself or any other user to global admin with one POST. The whole flow is tenant-wide privilege escalation from an app-level role, available to anyone with an Enterprise license that unlocks the EXPANDED_PUBLIC_API feature. This vulnerability is fixed in 3.39.0.
CVE-2026-48149 Alta · 8.1 CWE-79 27/05/2026
Budibase: Stored XSS in Text component: BASIC users execute JS in admin session via MarkdownViewer innerHTML + CDN+srcdoc CSP bypass
Budibase is an open-source low-code platform. Prior to 3.39.0, the Budibase Text component renders markdown by assigning marked.parse(markdown) straight to innerHTML with no sanitizer (packages/bbui/src/Markdown/MarkdownViewer.svelte:22). Any column a builder binds to a Text component in Markdown mode is a stored-XSS sink writable by every BASIC app user with WRITE on the underlying table. This vulnerability is fixed in 3.39.0.
CVE-2026-48148 Média · 5.3 CWE-918 27/05/2026
Budibase: Unvalidated VectorDB Host Parameter Enables SSRF
Budibase is an open-source low-code platform. Prior to 3.35.3, the VectorDB configuration endpoint in Budibase accepts a host parameter that undergoes no validation against internal IP ranges, reserved hostnames, or URL schemes. Any authenticated user with builder-level access can supply an arbitrary host value such as 169.254.169.254 or localhost, causing the server to initiate outbound TCP connections to internal network addresses or cloud metadata endpoints on their behalf.This vulnerability is fixed in 3.35.3.
CVE-2026-48147 Média · 6.5 CWE-185 27/05/2026
Budibase: Unanchored Regex in `matchers.ts` Allows CSRF Bypass via Query String Injection in Budibase Worker
Budibase is an open-source low-code platform. Prior to 3.35.4, the buildMatcherRegex() / matches() functions in packages/backend-core/src/middleware/matchers.ts route patterns are compiled into unanchored regular expressions and tested against ctx.request.url, which includes the full query string. The CSRF middleware in the Budibase Worker uses this matching system to decide whether to skip CSRF token validation. An unauthenticated attacker can forge state-changing cross-origin requests against any Worker API endpoint by injecting a public route pattern into the query string, causing the CSRF middleware to skip token validation entirely. This allows actions such as sending admin invites, modifying global configuration, and managing users without a valid CSRF token. This vulnerability is fixed in 3.35.4.
CVE-2026-48146 Alta · 7.7 CWE-918 27/05/2026
Budibase: SSRF via OAuth2 Config Validation — Missing fetchWithBlacklist Protection
Budibase is an open-source low-code platform. Prior to 3.39.0, the OAuth2 token fetch function in packages/server/src/sdk/workspace/oauth2/utils.ts uses raw fetch(config.url) with no SSRF protection. The safe wrapper fetchWithBlacklist() exists in the same codebase and is used in every other outbound HTTP call (automation steps, plugin downloads, object store), but was not applied to the OAuth2 token endpoint. A user with BUILDER role can point the OAuth2 token URL to internal services (CouchDB, cloud metadata) to exfiltrate sensitive data. This vulnerability is fixed in 3.39.0.
CVE-2026-48128 Média · 5.1 CWE-918 27/05/2026
Budibase: SSRF via User-Controlled queryId in Automation Execute Query Step
Budibase is an open-source low-code platform. Prior to 3.39.0, the executeQuery automation step in Budibase accepts a queryId from automation step inputs and passes it directly to the query execution controller without additional validation. When combined with a REST datasource configured to target internal infrastructure, this creates a server-side request forgery path where automation execution causes the Budibase server to make outbound HTTP requests to attacker-influenced destinations. The automation output then returns the response, potentially exposing internal service data. This vulnerability is fixed in 3.39.0.
CVE-2026-46427 Alta · 7.7 CWE-200 27/05/2026
Budibase: Snowflake private key returned unmasked from datasource API to BASIC users
Budibase is an open-source low-code platform. Prior to 3.38.3, removeSecrets at packages/server/src/sdk/workspace/datasources/datasources.ts masks only datasource config fields whose schema type is DatasourceFieldType.PASSWORD. The Snowflake integration types its privateKey field as SENSITIVE_LONGFORM, which the filter skips. GET /api/datasources/:datasourceId lives on authorizedRoutes guarded by PermissionType.TABLE + PermissionLevel.READ. An authenticated BASIC user with any app role and call the endpoint and receive the full Snowflake PEM in plaintext. This vulnerability is fixed in 3.38.3.
CVE-2026-46426 Alta · 7.6 CWE-79 27/05/2026
Budibase: Unrestricted Upload of File with Dangerous Type
Budibase is an open-source low-code platform. Prior to 3.38.2, the file upload endpoint POST /api/attachments/process does not enforce active-content restrictions for authenticated users. The checks for dangerous file extensions are conditionally wrapped inside if (isPublicUser) or if (isPublicUser || !env.SELF_HOSTED), meaning any authenticated builder can upload executable web content — SVG files with inline <script> tags, HTML pages with JavaScript, .js modules — which are then stored in the object store (MinIO/S3) with their correct MIME types. When the resulting signed URL is opened by any app user, the browser executes the payload. Impact is persistent stored XSS over all application end users. This vulnerability is fixed in 3.38.2.
CVE-2026-46425 Crítica · 9.9 CWE-862 27/05/2026
Budibase: SCIM endpoints lack role-based authorization, BASIC users CRUD tenant users
Budibase is an open-source low-code platform. Prior to 3.38.2, packages/worker/src/api/routes/global/scim.ts attaches only two middlewares to the SCIM router: requireSCIM (checks the Enterprise feature flag and SCIM config) and doInScimContext (sets the SCIM request context). There is no role check. Any authenticated user who reaches the worker (BASIC role, workspace-scoped builder, anyone) can call SCIM endpoints and CRUD every user and group in the tenant. This vulnerability is fixed in 3.38.2.
CVE-2026-46424 Média · 4.2 CWE-269 27/05/2026
Budibase: Missing Cache Invalidation on Public API Role Unassignment Allows Revoked Users to Retain Privileges for Up to 1 Hour
Budibase is an open-source low-code platform. Prior to 3.38.2, the public API role unassignment endpoint (POST /api/public/v1/roles/unassign) updates user documents in CouchDB but does not invalidate the corresponding Redis user cache entries. Because the authentication middleware resolves user identity and permissions from this cache (TTL: 3600 seconds), a user whose admin, builder, or app-level roles have been revoked via the public API retains those privileges for up to 1 hour. This vulnerability is fixed in 3.38.2.
CVE-2026-45719 Média · 6.5 CWE-94 27/05/2026
Budibase: CouchDB Reduce Injection via Unsanitized Calculation Parameter in V1 Views API
Budibase is an open-source low-code platform. Prior to 3.38.1, the V1 Views API (POST /api/views) accepts a calculation parameter from the request body that is interpolated directly into a CouchDB reduce function definition without validation. Although an internal SCHEMA_MAP object defines the valid calculation types (sum, count, stats), no actual validation is performed against this map before the value is used in string interpolation. A user with Builder permissions can inject arbitrary JavaScript code that will be executed within the CouchDB JavaScript engine when the view is queried. This vulnerability is fixed in 3.38.1.
CVE-2026-45718 Média · 5.4 CWE-863 27/05/2026
Budibase: Row Action Trigger Bypasses View Row Filter Security Boundary Allowing Action on Out-of-Scope Rows
Budibase is an open-source low-code platform. Prior to 3.38.1, the row action trigger endpoint (POST /api/tables/:sourceId/actions/:actionId/trigger) fails to validate that the user-supplied rowId is within the scope of the view's row filters. A user with access to a filtered view can trigger row actions on any row in the underlying table, including rows explicitly excluded by the view's security filters. This vulnerability is fixed in 3.38.1.
CVE-2026-45717 Alta · 8.8 CWE-862 27/05/2026
Budibase: `PUT /api/datasources/:datasourceId` is protected only by `TABLE/READ` permission instead of builder access, allowing any authenticated app user to overwrite datasource connection parameters including host, port, and URL.
Budibase is an open-source low-code platform. Prior to 3.38.1, Budibase exposes a REST API for datasource management. The route PUT /api/datasources/:datasourceId is registered in the authorizedRoutes group with TABLE/READ permission. This is the same authorization level as the read endpoint (GET /api/datasources/:datasourceId). Every authenticated Budibase app user with the BASIC built-in role or higher carries TABLE/WRITE (and therefore TABLE/READ) permissions, and the datasource update controller performs no additional builder check. As a result, any authenticated non-builder app user can submit a PUT request to rewrite a datasource's config object — including the connection host, port, database credentials, or the base url of a REST datasource. Because no network-level SSRF protection is applied to SQL driver connections, redirecting a PostgreSQL/MySQL/MongoDB datasource to an internal IP address succeeds and the attacker can probe or interact with internal services on arbitrary ports. This vulnerability is fixed in 3.38.1.
CVE-2026-45716 Alta · 8.8 CWE-269 27/05/2026
Budibase: Builder-to-Admin Privilege Escalation via onboardUsers Endpoint Without SMTP Configuration
Budibase is an open-source low-code platform. Prior to 3.38.1, the POST /api/global/users/onboard endpoint is protected by workspaceBuilderOrAdmin middleware, allowing any user with builder permissions to access it. When SMTP email is not configured (the default for self-hosted Budibase instances), this endpoint bypasses the admin-restricted invite flow and directly creates users via bulkCreate, accepting arbitrary admin and builder role assignments from the request body. A builder-level user can create a new global admin account and receive the generated password in the response, achieving full privilege escalation. This vulnerability is fixed in 3.38.1.
CVE-2026-45715 Alta · 7.7 CWE-918 27/05/2026
Budibase: SSRF Bypass via HTTP Redirect in REST Datasource Integration
Budibase is an open-source low-code platform. Prior to 3.38.1, the REST datasource integration (packages/server/src/integrations/rest.ts) follows HTTP redirects without re-checking the IP blacklist, allowing an authenticated Builder to access internal services (cloud metadata, databases) by redirecting through an attacker-controlled server. This vulnerability is fixed in 3.38.1.