---
id: CVE-2026-81335
title: >-
  Baserow dispatches an Application Builder data source without acting on the
  result of its permission check
summary: >-
  Baserow dispatches an Application Builder data source without acting on the
  result of its permission check. The dispatch and record-name views in
  backend/src/baserow/contrib/builder/api/data_sources/views.py are declared
  with a permissio…
severity: high
cvss: 7.5
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N'
cwe:
  - CWE-862
published: '2026-08-27'
updated: '2026-09-23'
sourceUpdated: '2026-09-23T17:17:43.477'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-81335'
references:
  - url: 'https://baserow.io'
    label: disclosure@vulncheck.com
  - url: 'https://github.com/bram2w/baserow'
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/bram2w/baserow/blob/2.3.0/backend/src/baserow/contrib/builder/data_sources/service.py
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/bram2w/baserow/blob/2.3.1/backend/src/baserow/contrib/builder/data_sources/service.py
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/baserow-before-2.3.1-unauthenticated-data-disclosure-via-discarded-permission-check-on-builder-data-sources
    label: disclosure@vulncheck.com
tags:
  - nvd
epss: 0.00575
epssPercentile: 0.45129
ingestedAt: '2026-09-23T17:28:14.807Z'
---

## Overview

Baserow dispatches an Application Builder data source without acting on the result of its permission check. The dispatch and record-name views in backend/src/baserow/contrib/builder/api/data_sources/views.py are declared with a permission class that admits any caller, so a request carrying no credential reaches the handler. DataSourceService.dispatch_data_sources in backend/src/baserow/contrib/builder/data_sources/service.py then calls check_multiple_permissions without asking it to raise, and neither stores nor examines the mapping of denials it returns, so a denied check leaves execution to continue and the data source is dispatched whatever the caller's identity. The dispatch runs with the integration's own credentials, so an unauthenticated request naming a data source receives the rows and fields that source reads. Identifiers are small integers and can be enumerated. Version 2.3.1 passes raise_exception to the same call.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
