CVE-2026-48148: Budibase: SSRF via VectorDB host exposes cloud metadata

GHSA-cv96-5348-p5p8 MEDIUM
Published June 12, 2026
CISO Take

Budibase's VectorDB configuration endpoint accepts a host parameter with no validation against internal IP ranges, reserved hostnames, or URL schemes, allowing any authenticated user with builder access to force the server into acting as an SSRF proxy toward internal network addresses and cloud metadata endpoints. In cloud deployments, this translates directly to retrieval of IAM role credentials from AWS EC2 metadata at 169.254.169.254 or the equivalent GCP and Azure endpoints, enabling privilege escalation and lateral movement with a single API call. Builder access is a normal, intentionally-granted role in multi-tenant Budibase deployments, and with 309 downstream dependents and an EPSS placing this vulnerability in the top 86th percentile for exploitation likelihood, the risk surface across team and SaaS-style environments is material. Patch @budibase/server to version 3.35.3 immediately; as a stopgap, audit builder-role assignments and block outbound connections from the Budibase process to 169.254.169.254, metadata.google.internal, and RFC 1918 ranges at the host firewall or network layer.

Sources: NVD EPSS GitHub Advisory ATLAS

What is the risk?

The medium CVSS designation understates real-world impact in cloud-hosted deployments. The attack requires only builder-level authentication — a role routinely granted to developers and collaborators in multi-tenant Budibase environments — and a single API request with no additional user interaction. The EPSS score places this in the top 86th percentile for exploitation likelihood despite a low raw probability, suggesting this vulnerability class is well understood by attackers. The primary risk amplifier is cloud metadata exposure: successful retrieval of instance metadata in AWS, GCP, or Azure environments can yield short-lived IAM credentials enabling unauthorized access to cloud resources far beyond the Budibase instance itself. On-premises deployments face internal service enumeration and interaction with unauthenticated internal services such as databases, Redis instances, or admin APIs that are otherwise network-segmented from external attackers.

How does the attack unfold?

Initial Access
Adversary authenticates with valid builder-level credentials to the target Budibase instance, obtained via phishing, credential stuffing, or insider access.
AML.T0012
SSRF Exploitation
Adversary sends POST /api/ai/vectordb with host set to a target internal IP or cloud metadata address; Budibase server opens a TCP connection without any host validation.
AML.T0049
Internal Network Discovery
Adversary maps internal network topology by iterating probe targets and comparing connection timing and error responses to distinguish reachable from unreachable hosts.
AML.T0006
Credential Theft and Lateral Movement
Adversary retrieves IAM role credentials from cloud metadata service at 169.254.169.254, then uses them to escalate privileges or pivot into broader cloud infrastructure.
AML.T0075

What systems are affected?

Package Ecosystem Vulnerable Range Patched
pgvector npm < 3.35.3 3.35.3
1.5K 309 dependents Pushed 9d ago 100% patched ~0d to patch Full package profile →

Do you use pgvector? You're affected.

How severe is it?

CVSS 3.1
N/A
EPSS
0.0%
chance of exploitation in 30 days
Higher than 14% of all CVEs
Exploitation Status
No known exploitation
Sophistication
Trivial

What should I do?

6 steps
  1. Patch immediately: upgrade @budibase/server to version 3.35.3 or later, which introduces host validation against internal IP ranges and reserved hostnames.

  2. Network-layer defense: configure host firewall rules on the Budibase server to deny outbound TCP connections to 169.254.169.254, metadata.google.internal, 100.100.100.200 (Alibaba Cloud), and all RFC 1918 ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16).

  3. Enforce IMDSv2 on AWS EC2 instances: IMDSv2 requires session-oriented PUT requests before metadata retrieval, significantly raising the bar for SSRF-based credential theft.

  4. Restrict builder access: audit users holding builder-level roles and ensure the role is granted only to fully trusted personnel with a business need.

  5. Detection: monitor Budibase server outbound network connections for attempts to reach metadata service IPs or RFC 1918 addresses; alert on HTTP 200 responses from 169.254.169.254 or equivalent metadata endpoints.

  6. IAM hardening: apply least-privilege policies to instance roles and rotate any credentials that may have been exposed prior to patching.

How is it classified?

Which compliance frameworks are affected?

This CVE is relevant to:

EU AI Act
Article 15 - Accuracy, robustness and cybersecurity
ISO 42001
8.4 - AI system operation and monitoring
NIST AI RMF
MANAGE 2.2 - Mechanisms to address AI risks
OWASP LLM Top 10
LLM08:2025 - Vector and Embedding Weaknesses

Frequently Asked Questions

What is CVE-2026-48148?

Budibase's VectorDB configuration endpoint accepts a host parameter with no validation against internal IP ranges, reserved hostnames, or URL schemes, allowing any authenticated user with builder access to force the server into acting as an SSRF proxy toward internal network addresses and cloud metadata endpoints. In cloud deployments, this translates directly to retrieval of IAM role credentials from AWS EC2 metadata at 169.254.169.254 or the equivalent GCP and Azure endpoints, enabling privilege escalation and lateral movement with a single API call. Builder access is a normal, intentionally-granted role in multi-tenant Budibase deployments, and with 309 downstream dependents and an EPSS placing this vulnerability in the top 86th percentile for exploitation likelihood, the risk surface across team and SaaS-style environments is material. Patch @budibase/server to version 3.35.3 immediately; as a stopgap, audit builder-role assignments and block outbound connections from the Budibase process to 169.254.169.254, metadata.google.internal, and RFC 1918 ranges at the host firewall or network layer.

Is CVE-2026-48148 actively exploited?

No confirmed active exploitation of CVE-2026-48148 has been reported, but organizations should still patch proactively.

How to fix CVE-2026-48148?

1. Patch immediately: upgrade @budibase/server to version 3.35.3 or later, which introduces host validation against internal IP ranges and reserved hostnames. 2. Network-layer defense: configure host firewall rules on the Budibase server to deny outbound TCP connections to 169.254.169.254, metadata.google.internal, 100.100.100.200 (Alibaba Cloud), and all RFC 1918 ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). 3. Enforce IMDSv2 on AWS EC2 instances: IMDSv2 requires session-oriented PUT requests before metadata retrieval, significantly raising the bar for SSRF-based credential theft. 4. Restrict builder access: audit users holding builder-level roles and ensure the role is granted only to fully trusted personnel with a business need. 5. Detection: monitor Budibase server outbound network connections for attempts to reach metadata service IPs or RFC 1918 addresses; alert on HTTP 200 responses from 169.254.169.254 or equivalent metadata endpoints. 6. IAM hardening: apply least-privilege policies to instance roles and rotate any credentials that may have been exposed prior to patching.

What systems are affected by CVE-2026-48148?

This vulnerability affects the following AI/ML architecture patterns: vector database integrations, RAG pipelines, multi-tenant AI application platforms, cloud-deployed low-code AI builders.

What is the CVSS score for CVE-2026-48148?

No CVSS score has been assigned yet.

What is the AI security impact?

Affected AI Architectures

vector database integrationsRAG pipelinesmulti-tenant AI application platformscloud-deployed low-code AI builders

MITRE ATLAS Techniques

AML.T0006 Active Scanning
AML.T0012 Valid Accounts
AML.T0049 Exploit Public-Facing Application
AML.T0055 Unsecured Credentials
AML.T0075 Cloud Service Discovery

Compliance Controls Affected

EU AI Act: Article 15
ISO 42001: 8.4
NIST AI RMF: MANAGE 2.2
OWASP LLM Top 10: LLM08:2025

What are the technical details?

Original Advisory

### Summary 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. ### Details The validator responsible for VectorDB creation and updates defines the host field as `Joi.string().required()`, which enforces only that the value is a non-empty string. No allowlist of external hostnames, no blocklist of RFC 1918 or link-local ranges, and no scheme validation are applied before the value is forwarded to the database SDK for connection establishment. When a VectorDB entry is created or updated, the SDK uses the supplied host directly to open a TCP connection. Because the connection attempt originates from the Budibase server process, it traverses internal network boundaries that would otherwise be inaccessible to the attacker. Differences in connection timing and error messages between reachable and unreachable hosts allow an attacker to enumerate internal services and determine whether specific addresses are live. In cloud environments, the AWS EC2 metadata service at `169.254.169.254`, the GCP metadata server at `metadata.google.internal`, and equivalent endpoints for other providers are all reachable this way. Builder access is a realistic precondition in multi-tenant or team deployments, as the builder role is intended to allow application development without granting administrative privileges over the underlying infrastructure. ### PoC ```python import requests import time BASE_URL = "https://TARGET_BUDIBASE_INSTANCE" SESSION = requests.Session() login_resp = SESSION.post(f"{BASE_URL}/api/global/auth/default/login", json={ "username": "builder@example.com", "password": "builderpassword" }) token = login_resp.cookies.get("budibase:auth") or login_resp.json().get("token") SESSION.headers.update({"Cookie": f"budibase:auth={token}"}) targets = [ ("169.254.169.254", 80), ("localhost", 5432), ("10.0.0.1", 22), ] for host, port in targets: start = time.time() resp = SESSION.post(f"{BASE_URL}/api/ai/vectordb", json={ "name": f"probe_{host.replace('.', '_')}_{port}", "provider": "pgvector", "host": host, "port": port, "database": "db" }) elapsed = time.time() - start print(f"host={host} port={port} status={resp.status_code} time={elapsed:.2f}s body={resp.text[:200]}") ``` ### Impact An attacker with builder access can use the Budibase server as a proxy to probe internal network topology, determine which hosts and ports are reachable from the server, and potentially interact with unauthenticated internal services including cloud instance metadata endpoints. In environments where cloud metadata endpoints expose credentials or instance identity documents, successful retrieval of metadata could lead to privilege escalation or lateral movement within the cloud environment. The attack requires no interaction beyond a single authenticated API request per probe target.

Exploitation Scenario

An attacker — a disgruntled developer, a compromised contractor account, or an external actor who has phished builder credentials — authenticates to a cloud-hosted Budibase instance and issues a POST request to /api/ai/vectordb with host set to 169.254.169.254, port 80, provider pgvector, and a dummy database name. The Budibase server, running on an EC2 instance, opens a TCP connection to the AWS instance metadata service on behalf of the attacker. The attacker iterates across multiple hosts and ports, using response timing differences and error content to map the internal network topology. A targeted follow-up retrieves the IMDSv1 metadata document at /latest/meta-data/iam/security-credentials/, obtaining a short-lived AWS access key, secret key, and session token for the attached IAM role. With these credentials the attacker queries S3 buckets for training data or sensitive documents, invokes Lambda functions, or pivots to RDS instances — all without any further vulnerability exploitation and without triggering alerts tied to the compromised builder account.

Weaknesses (CWE)

CWE-918 — Server-Side Request Forgery (SSRF): The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.

Source: MITRE CWE corpus.

Timeline

Published
June 12, 2026
Last Modified
June 12, 2026
First Seen
June 12, 2026

Related Vulnerabilities