Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-48149

CVE-2026-48149: Budibase Low-Code Platform XSS Vulnerability

CVE-2026-48149 is a stored cross-site scripting flaw in Budibase that allows attackers to inject malicious scripts through markdown components. This post covers technical details, affected versions, and mitigation steps.

Published:

CVE-2026-48149 Overview

CVE-2026-48149 is a stored cross-site scripting (XSS) vulnerability in Budibase, an open-source low-code application platform. The flaw exists in the MarkdownViewer.svelte component, which passes marked.parse(markdown) output directly to innerHTML without sanitization. Any column bound to a Text component in Markdown mode becomes a stored-XSS sink. Authenticated BASIC app users with WRITE permission on the underlying table can inject persistent malicious scripts. The vulnerability is fixed in Budibase 3.39.0.

Critical Impact

Authenticated low-privilege users can inject persistent JavaScript that executes in the browser of any user viewing the affected Budibase application, enabling session theft and account takeover.

Affected Products

  • Budibase versions prior to 3.39.0
  • packages/bbui/src/Markdown/MarkdownViewer.svelte component
  • Budibase Text components configured in Markdown mode

Discovery Timeline

  • 2026-05-27 - CVE-2026-48149 published to NVD
  • 2026-05-27 - Last updated in NVD database

Technical Details for CVE-2026-48149

Vulnerability Analysis

The vulnerability is a stored cross-site scripting flaw classified as [CWE-79]. Budibase's MarkdownViewer.svelte component at line 22 renders markdown by directly assigning the output of marked.parse(markdown) to the DOM innerHTML property. The marked library produces HTML output but does not sanitize embedded HTML or JavaScript by default. Any markdown content reaching this rendering path can include raw <script> tags, event handler attributes, or javascript: URIs that execute in the victim's browser session.

Because the rendered content originates from database columns bound to Text components, the payload persists across sessions and executes for every subsequent viewer of the application. The attack surface includes any table column a builder has bound to a Text component in Markdown mode.

Root Cause

The root cause is missing output sanitization between the markdown parser and the DOM sink. The marked library converts markdown syntax to HTML but preserves inline HTML by design. Without an intermediate sanitizer such as DOMPurify, raw HTML and script content survive the parsing step. Direct assignment to innerHTML then evaluates that content in the application origin.

Attack Vector

Exploitation requires an authenticated Budibase user holding the BASIC role with WRITE permission on a table whose column feeds a markdown-mode Text component. The attacker inserts a malicious payload into that column through normal data entry workflows. When any other user, including administrators, loads the screen containing the Text component, the injected script executes in their browser context. The script can exfiltrate session cookies, perform authenticated API requests, or pivot to higher-privileged actions inside the Budibase application.

The vulnerability mechanism is described in the GitHub Security Advisory GHSA-57p7-9h9w-xqpw.

Detection Methods for CVE-2026-48149

Indicators of Compromise

  • Database rows in Budibase-backed tables containing <script>, onerror=, onload=, or javascript: substrings in columns bound to markdown Text components.
  • Unexpected outbound browser requests from authenticated Budibase sessions to attacker-controlled domains.
  • Anomalous session token usage from IP addresses inconsistent with the legitimate user.

Detection Strategies

  • Query Budibase application tables for HTML or script syntax in text columns, focusing on those bound to Text components in Markdown mode.
  • Inspect browser security logs and Content Security Policy (CSP) violation reports for inline script execution attempts on Budibase application origins.
  • Audit application binding configurations to enumerate all columns currently rendered as markdown.

Monitoring Recommendations

  • Enable web application firewall (WAF) logging on Budibase API endpoints that write to tables, and alert on payloads containing script tags or event handler attributes.
  • Monitor Budibase audit logs for WRITE operations performed by BASIC users on tables feeding markdown views.
  • Forward Budibase server and proxy logs into a centralized analytics platform for retrospective hunting of injected payloads.

How to Mitigate CVE-2026-48149

Immediate Actions Required

  • Upgrade Budibase to version 3.39.0 or later, which sanitizes markdown output before assignment to innerHTML.
  • Inventory all tables and columns bound to Text components configured in Markdown mode and review their current contents for injected HTML.
  • Restrict WRITE permissions on tables feeding markdown views to trusted roles until the upgrade is applied.

Patch Information

The vulnerability is fixed in Budibase 3.39.0. The fix sanitizes parser output before it reaches the DOM. Refer to the Budibase GitHub Security Advisory for the official remediation notice and release details.

Workarounds

  • Switch Text components from Markdown mode to plain text rendering until the upgrade is deployed.
  • Remove or revoke BASIC role WRITE access on tables whose columns drive markdown-rendered Text components.
  • Deploy a strict Content Security Policy that disallows inline scripts on the Budibase application origin to limit payload execution.

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.