☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 5.5 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:L/A:N 🐛 CWE-200
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-100687

CVE-2026-100687 Information Disclosure in Budibase
📅 PUBLISHED: 2026-09-26 00:00 UTC 🔄 UPDATED: 2026-09-28 00:00 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.26%
👁️
0.26% probability
6.4× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1213
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 5.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: H Privileges Required High
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: L Integrity Low
A: N Availability None
5.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-100687 is a credential-exposure vulnerability in Budibase Server before version 3.45.0, in which plaintext datasource credentials (database passwords and API keys) are improperly redacted—or not redacted at all—before external table update events are broadcast to the Builder collaboration websocket room. Any user holding Builder-level access can passively observe these websocket messages during routine table save or delete operations and extract unredacted secrets for connected external datasources. The issue carries a CVSS 3.1 base score of 5.5 (High confidentiality impact, Low integrity impact) and requires authenticated, privileged access to exploit, but its passive, low-skill exploitation profile makes it a significant insider-risk and lateral-movement vector for organizations that delegate Builder roles broadly.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

The vulnerability class here is CWE-200: Exposure of Sensitive Information to an Unauthorized Actor, specifically the failure to apply output redaction to a data structure before it is serialized and transmitted over a collaboration channel.

Budibase is a low-code application platform. Its Builder is a collaborative visual development environment where multiple authenticated users edit applications ("apps"), datasources, and tables simultaneously. To keep multiple Builder sessions synchronized, the server uses a websocket-based collaboration room (a real-time broadcast channel) that pushes state-change events—such as table save and table delete operations—to all connected Builder clients in the same room.

The defect is that when a table operation involving an external datasource occurs, the server constructs an event payload that includes the datasource object itself. That datasource object contains the connection configuration, and per the NVD description it includes plaintext database passwords and API keys. In a correctly implemented system, credential fields would be stripped or replaced with placeholder values (redaction) before the object is placed on the wire, because the collaboration room is a shared, multi-user context—not a privileged secrets channel. Budibase Server before 3.45.0 failed to perform this redaction step. The credential-bearing object was therefore broadcast verbatim to every socket joined to the Builder collaboration room.

Key characteristics of this flaw:

  • The secret is not brute-forced or extracted from storage. It is delivered to the client by the server as part of a normal collaboration event. The attacker does not need to defeat encryption, hashing, or access controls on the credential store; they simply need to be a participant in the room where the event is broadcast.
  • The trigger is a legitimate, routine action. A table save or table delete operation performed by any authorized Builder user emits the event. The attacker only needs to be present when it happens, or to have tooling that captures the traffic continuously.
  • The exposure is server-driven and passive from the attacker's perspective. A browser developer-tools websocket inspector or a proxy positioned between the client and server is sufficient to read the broadcast frame. No crafted payload, no memory corruption, no injection primitive is involved.
  • The privilege requirement is Builder access. This is why the CVSS vector is PR:H (Privileges Required: High) rather than None—the attacker must already hold an account permitted into the Builder collaboration context. It is not an unauthenticated, internet-facing remote code execution bug. It is a privilege-boundary failure: within the Builder role, credentials leak that should never be visible to that role at all.

Because the NVD description does not enumerate specific function names, endpoint paths, event names, or field names, the precise redaction function that was missing cannot be stated without fabrication. What can be stated with confidence from the description is the mechanism: unredacted datasource object serialization into a websocket broadcast. "Insufficient technical detail is available" to go below that level of code specificity; any naming of internal methods would be invented and is therefore omitted.

The 3.45.0 boundary given in the description implies the fix was a redaction enforcement applied at the point of event construction or serialization—i.e., credential fields are masked before broadcast.

Exploitation Scenarios

No public proof-of-concept, Nuclei template, or exploit code is available for this CVE. The attack chain below is inferred strictly from the vulnerability class and the NVD description; no specific code patterns, function names, or endpoints are invented.

1. Reconnaissance / target identification. The attacker holds (or obtains) an account with Builder-level access to a Budibase deployment. This may be a legitimate but over-privileged internal user, a compromised low-trust account, or a contractor/multi-tenant participant added to a shared Builder workspace. The attacker identifies that the target instance connects to one or more external datasources—the preconditions the description specifies, since the flaw concerns external table updates. No scanning of a public surface is required; the "reconnaissance" here is simply knowing that the Builder collaboration feature is in active use.

2. Triggering the flaw class. The vulnerability is triggered by the normal operation of the platform, not by attacker input. When any Builder user performs a table save or table delete operation on a table backed by an external datasource, Budibase Server emits a collaboration event to the Builder websocket room. Because redaction is absent, that event payload carries the datasource object with plaintext credentials embedded. The attacker does not need to cause the event; they need only be in the room when it fires. In a multi-user environment this is near-certain to occur during ordinary development activity.

3. Payload / execution method (vulnerability-class level). The attacker establishes a websocket connection to the same Builder collaboration room (as is normal for any Builder client) and passively captures the broadcast frames. Because the credentials are present in cleartext in the event data—not hashed, not truncated, not masked—the attacker reads them directly. This is observation, not exploitation of a code-execution primitive. Browser dev-tools websocket inspection or an intercepting proxy is sufficient.

4. Post-exploitation impact. The extracted database passwords and API keys are valid secrets for the downstream systems the datasource connects to. The attacker can:

  • Authenticate directly to the external database referenced by the datasource, moving laterally out of Budibase into backend infrastructure with the privileges of the configured datasource account.
  • Use captured API keys to call third-party services (SaaS, payment, messaging, internal APIs) with the key's permissions.
  • Persist access by using the harvested credentials independently of Budibase, surviving revocation of their Builder account (though not revocation of the datasource credentials themselves).
  • Repeat the capture over time, harvesting additional secrets as new datasources are saved or deleted.

The CVSS vector reflects this profile precisely: AV:N (the websocket is reachable remotely), AC:L (no special conditions; routine operation emits the secret), PR:H (a Builder account is required), UI:N (no victim interaction beyond ordinary platform use), S:U (scope unchanged—the leak occurs within the Budibase trust boundary, though it enables expansion into connected systems), C:H (full cleartext credential disclosure), I:L (the attacker's ability to influence saved/deleted state is limited), A:N (no availability impact).

Impact Assessment

Business impact. The direct consequence is disclosure of credentials protecting backend databases and third-party services. Because credentials are high-value, long-lived, and often reused or broadly scoped in low-code deployments, the blast radius can extend well beyond the Budibase instance itself. An attacker who harvests a production database password by watching a colleague save a table in the Builder does not need to exploit Budibase again; they attack the database. This converts a moderate-looking 5.5 into a potential pivot into core data stores, with downstream risks of data exfiltration, data integrity tampering, and lateral movement into adjacent services via stolen API keys.

Affected systems. Budibase Server deployments before 3.45.0 that (a) use external datasources and (b) have more than one participant in the Builder collaboration context—or a single malicious participant. Single-user self-hosted instances with no external datasources and no untrusted Builder participants are effectively out of scope.

CVSS subscores.

  • Confidentiality: High — plaintext passwords and API keys are fully exposed to the attacker.
  • Integrity: Low — limited attacker ability to modify state (the flaw is primarily a read/leak issue; the I:L reflects constrained change potential rather than data destruction).
  • Availability: None — no service disruption component.
  • Privileges Required: High — Builder access is a meaningful barrier, which is why the score is not Critical.

Exposure-window note. EPSS has not yet been scored by FIRST.org; no exploitation-in-the-wild evidence is known and CISA KEV does not list this CVE. The realistic threat is insider and trusted-participant risk, not mass internet exploitation. Organizations with broad Builder role assignments, external contractors, or multi-tenant Budibase configurations should treat this as elevated.

Detection Guidance

Sigma Rule

This rule targets the server-side event that constructs/serializes a datasource object for a collaboration broadcast, and specifically flags cases where credential-type fields are present in the emitted payload. Adjust log source to your Budibase application log pipeline.

title: Budibase Builder WebSocket Broadcast of Unredacted Datasource Credentials
id: 8f2c1a44-7b3d-4e21-9c0a-1d5e6f7a8b90
status: experimental
description: Detects Budibase Server (<3.45.0) collaboration events carrying datasource objects with cleartext credential fields during table save/delete operations.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-100687
author: valtersit.com
date: 2026/01/01
logsource:
  product: budibase
  service: server
detection:
  selection_event:
    event_type:
      - 'table.save'
      - 'table.delete'
      - 'datasource.update'
  selection_cred:
    payload_contains|contains:
      - 'password'
      - 'apiKey'
      - 'api_key'
      - 'credentials'
  filter_redacted:
    payload_contains|contains:
      - '******'
      - '[REDACTED]'
      - 'redacted'
  condition: selection_event and selection_cred and not filter_redacted
falsepositives:
  - Legitimate logging of redacted datasource metadata
level: medium
tags:
  - attack.t1213
  - attack.t1552
  - cve.2026.100687

YARA Rule

This rule scans log files, proxy captures, or websocket frame dumps for a collaboration event that pairs a table-operation marker with cleartext credential fields—indicative of an unredacted broadcast.

rule CVE_2026_100687_Budibase_Unredacted_Datasource_Broadcast
{
    meta:
        description = "Detects Budibase websocket broadcast frames containing unredacted datasource credentials (CVE-2026-100687)"
        author = "valtersit.com"
        date = "2026-01-01"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-100687"
        cve = "CVE-2026-100687"

    strings:
        $evt1 = "table.save" ascii nocase
        $evt2 = "table.delete" ascii nocase
        $ds   = "datasource" ascii nocase
        $pw   = "password" ascii nocase
        $key1 = "apiKey" ascii nocase
        $key2 = "api_key" ascii nocase
        $red1 = "******" ascii
        $red2 = "REDACTED" ascii nocase

    condition:
        (uint16(0) == 0x7b7b or true) and
        ($ds and ($pw or $key1 or $key2)) and
        ($evt1 or $evt2) and
        not ($red1 or $red2)
}

Suricata IDS Rule

Detects cleartext credential field names co-occurring with Budibase collaboration event markers inside HTTP-tunneled or raw websocket (TCP) traffic on common Budibase ports.

alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-100687 Budibase Unredacted Datasource Credential Broadcast"; flow:established,to_client; content:"datasource"; nocase; content:"password"; nocase; content:"table"; nocase; pcre:"/(apiKey|api_key)/i"; classtype:attempted-recon; reference:cve,2026-100687; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-100687; sid:2026100687; rev:1;)

alert tcp $HOME_NET 4001 -> $HOME_NET any (msg:"CVE-2026-100687 Budibase WebSocket Datasource Secret Leak"; flow:established,from_server; content:"|7b|"; content:"credentials"; nocase; content:"datasource"; nocase; pcre:"/\"(password|apiKey|api_key)\"\s*:\s*\"[^\"]+\"/i"; classtype:policy-violation; reference:cve,2026-100687; sid:2026100688; rev:1;)

Elastic Detection

EQL rule against Budibase server/application logs to catch collaboration broadcast events that include credential-bearing payloads.

sequence by host.name
  [ any where event.category == "application" and
          event.action in ("table.save", "table.delete", "datasource.update") ]
  [ any where event.category == "application" and
          wildcard(event.original, "*datasource*") and
          wildcard(event.original, "*password*") and
          not wildcard(event.original, "*REDACTED*") ]

EQL hunting variant for direct payload inspection:

any where
  event.dataset == "budibase.server" and
  wildcard(message, "*table*") and
  (wildcard(message, "*password*") or wildcard(message, "*apiKey*") or wildcard(message, "*api_key*")) and
  not wildcard(message, "*redacted*") and
  not wildcard(message, "*\\*\\*\\*\\**")

Splunk SPL Query

index=budibase sourcetype=budibase:server
| search (event_type="table.save" OR event_type="table.delete" OR event_type="datasource.update")
| search (payload="*password*" OR payload="*apiKey*" OR payload="*api_key*" OR payload="*credentials*")
| search NOT (payload="*REDACTED*" OR payload="******" OR payload="*redacted*")
| stats count min(_time) as first_seen max(_time) as last_seen
        values(user) as actor values(datasource) as datasource
        by host event_type
| where count > 0
| convert ctime(first_seen) ctime(last_seen)

Websocket-frame hunting variant (if frames are forwarded to a proxy index):

index=proxy sourcetype=websocket OR sourcetype=ws_frame
| regex _raw="(?i)(table\.?(save|delete)|datasource)"
| regex _raw="(?i)(password|apiKey|api_key|credentials)"
| regex _raw!="(?i)(redacted|\*{4,})"
| table _time src dest uri _raw

Wazuh OSSEC Rule

Wazuh XML rule to alert when Budibase server logs emit a collaboration event carrying credential-type fields without a redaction marker.

<group name="budibase,cve-2026-100687,">
  <rule id="2026100687" level="10">
    <decoded_as>json</decoded_as>
    <field name="event_type">table\.(save|delete)|datasource\.update</field>
    <regex type="pcre2">(?i)(password|apiKey|api_key|credentials)</regex>
  </rule>

  <rule id="2026100689" level="12">
    <if_sid>2026100687</if_sid>
    <regex type="pcre2">^(?!.*(?:redacted|\*{4,})).*$</regex>
    <description>CVE-2026-100687: Budibase broadcast of UNREDACTED datasource credentials detected</description>
    <mitre>
      <id>T1213</id>
      <id>T1552</id>
    </mitre>
    <group>credential_access,pci_dss_10.2.1,gdpr_IV_35.7.d,</group>
  </rule>

  <rule id="2026100690" level="6">
    <decoded_as>json</decoded_as>
    <field name="event_type">table\.(save|delete)</field>
    <description>Budibase table operation observed (collaboration event baseline)</description>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source). No vendor advisory, commit reference, or backported fix is available. The version boundary 3.45.0 appears only in the NVD description; treat it as the intended fixed version, not a verified artifact.

1. Immediate mitigations (until a verified patch is applied):

  • Restrict Builder collaboration membership. Limit Builder/Admin roles to the smallest possible set of trusted identities. This directly addresses the PR:H precondition—the fewer participants in the websocket room, the smaller the exposure window. Remove dormant, shared, and external/contractor Builder accounts.
  • Rotate external datasource credentials. Any database password or API key that has been configured as a Budibase external datasource on an affected instance should be treated as potentially exposed, especially in multi-user environments, and rotated to new secrets. Rotate proactively rather than waiting for evidence of compromise.
  • Segment and least-privilege datasource accounts. Configure each external datasource with a dedicated, minimally privileged account scoped to only the objects Budibase requires. This caps the blast radius if a credential is harvested (e.g., read-only where writes are not needed).
  • Audit Builder participants and capture. Review logs/records of who held Builder access during the vulnerable period, and treat any such user as a potential recipient of leaked credentials.
  • Network controls. Consider restricting the collaboration websocket path to a trusted management network or VPN rather than broad internal reachability; if the websocket is TLS-encrypted, note that encryption does not mitigate this issue because the client is the intended recipient of the cleartext secret.

2. Patch / upgrade steps:

  • Monitor the vendor's release channel and NVD/OSV entries for Budibase Server 3.45.0 (or later) and confirm an official security advisory or commit exists before relying on the fix.
  • When a verified build is available: test the upgrade in a non-production environment, verify that datasource objects broadcast during table save/delete are redacted (inspect websocket frames directly), then deploy to production.
  • After upgrade, re-rotate all datasource credentials that were exposed during the vulnerable window—upgrading stops new leaks but does not invalidate secrets already disclosed.

3. Long-term hardening:

  • Implement and enforce a redaction-by-default serialization policy for any object leaving a shared/collaborative context; secrets should require explicit opt-in to be included and should never traverse multi-user channels.
  • Adopt secret references rather than inline secrets in datasource configurations (e.g., external secret manager lookups), so the datasource object itself never contains plaintext credentials to leak.
  • Apply least privilege and periodic access review to all collaboration-capable roles in low-code platforms.
  • Add continuous detection (rules above) for credential fields appearing in outbound collaboration payloads, as a regression guard against future redaction failures.

References

Exploitation status. No public proof-of-concept, exploit code, or Nuclei template is available (POC_STATUS: None). CISA KEV does not list CVE-2026-100687, and EPSS has not yet been scored by FIRST.org. No known threat actor campaigns or exploit-in-the-wild evidence are associated with this CVE at the time of writing; the primary realistic threat remains malicious or compromised insiders holding Builder access.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

product:"Budibase"
title:"Budibase"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-100687/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.