CVE-2026-35219
highpriority · track · 0EPSS 0.005 · 40 %ileDEEUUSEPSS · scored 2026-10-27
Budibase is an open-source low-code platform. Prior to 3.41.3, automation steps in packages/server/src/automations/steps/outgoingWebhook.ts, packages/server/src/automations/steps/zapier.ts, packages/server/src/automations/steps/n8n.ts, packages/server/src/automations/steps/slack.ts, and packages/server/src/automations/steps/discord.ts use node-fetch on user-provided URLs without the BLACKLIST_IPS enforcement used by the REST integration, allowing an authenticated user to make server-side requests to cloud metadata and internal services. This issue is fixed in version 3.41.3.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode⚠ sources disagree · medium–high · 5–7.1
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
affected products (3)
Products and version ranges known to be affected.
advisories (2)
Vendor and ecosystem advisories describing this.
- WID-SEC-W-2026-2849Budibase: Mehrere SchwachstellenDeutsch2026-08-13csaf · cert_bundDE
Ein entfernter, authentisierter Angreifer kann mehrere Schwachstellen in Budibase ausnutzen, um Dateien zu manipulieren, vertrauliche Daten offenzulegen, erweiterte Berechtigungen zu erlangen und Sicherheitsmaßnahmen zu umgehen.
- GHSA-5fpj-28rv-84r7Budibase: SSRF in Automation Steps - Webhook, Zapier, N8N, Slack, Discord Bypass IP Blacklist2026-08-14ghsa · osvUS
## Summary Budibase automation steps (outgoing webhook, Zapier, n8n, Slack, Discord, Make.com) make server-side HTTP requests to user-provided URLs using `node-fetch` directly, completely bypassing the IP blacklist protection that exists in the REST API integration. Additionally, the REST API blacklist itself defaults to empty when `BLACKLIST_IPS` is not configured. ## Vulnerable Code ### Automation Steps (No Blacklist) All automation steps use `fetch()` directly without any IP validation: **`packages/server/src/automations/steps/outgoingWebhook.ts` line 69:** ```typescript const response = await fetch(url, request) // No blacklist check ``` **`packages/server/src/automations/steps/zapier.ts` line 34:** ```typescript response = await fetch(url, {method: "post", ...}) // No blacklist check ``` **`packages/server/src/automations/steps/n8n.ts` line 53:** ```typescript response = await fetch(url, request) // No blacklist check ``` **`packages/server/src/automations/steps/slack.ts` line 20:** ```typescript response = await fetch(url, {method: "post", ...}) // No blacklist check ``` **`packages/server/src/automations/steps/discord.ts` line 29:** ```typescript response = await fetch(url, {method: "post", ...}) // No blacklist check ``` ### REST API Integration (Empty Default Blacklist) **`packages/server/src/integrations/rest.ts` line 684:** ```typescript if (await blacklist.isBlacklisted(url)) { throw new Error("Cannot connect to URL.") } ``` But `BLACKLIST_IPS` env var defaults to undefined, so the blacklist is empty: **`packages/backend-core/src/blacklist/blacklist.ts` lines 39-45:** ```typescript if (blackListArray?.length === 0) { return false // Always passes when no IPs configured } ``` ## Impact - **Automation steps**: ANY user can create automations with webhook/Zapier/n8n/Slack/Discord steps pointing to internal IPs. These completely bypass the blacklist module - **REST API**: Even when BLACKLIST_IPS is configured, it only blocks listed IPs. Default deployments have no protection. - **Cloud metadata**: `http://169.254.169.254/latest/meta-data/` accessible via any automation step - **Internal services**: Access databases, admin panels, Kubernetes API on private IPs ## Remediation 1. Apply blacklist checks to ALL outbound HTTP requests, including automation steps 2. Add hardcoded default private IP ranges (127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16) 3. Use a centralized HTTP client wrapper instead of direct `fetch()` calls 4. SSRF protection should be on by default, not opt-in via environment variable
also known as (2)
Other names and identifiers for this entity.
sources
Which sources assert this record, and when.
references (8)
External citations — patches, advisories, analysis.
- https://github.com/Budibase/budibase/commit/cc07563a6b0fc0f91c51aae295952b1295546a90enisa_euvd
- https://github.com/Budibase/budibase/pull/19328enisa_euvd
- https://github.com/Budibase/budibase/releases/tag/3.41.3enisa_euvd
- https://github.com/Budibase/budibase/security/advisories/GHSA-5fpj-28rv-84r7enisa_euvd
- https://github.com/Budibase/budibase/commit/cc07563a6b0fc0f91c51aae295952b1295546a90nvd
- https://github.com/Budibase/budibase/pull/19328nvd
- https://github.com/Budibase/budibase/releases/tag/3.41.3nvd
- https://github.com/Budibase/budibase/security/advisories/GHSA-5fpj-28rv-84r7nvd
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan