<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://db.gcve.eu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-02T03:54:17.407702+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@gcve.eu</email>
  </author>
  <link href="https://db.gcve.eu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://db.gcve.eu/vuln/fkie_cve-2026-73308</id>
    <title>fkie_cve-2026-73308</title>
    <updated>2026-10-02T03:54:17.432279+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>Budibase is an open-source low-code platform. Prior to 3.39.25, packages/server/src/api/controllers/automation.ts returned automation test results containing trigger.outputs.user.oauth2, broadcast BuilderSocketEvent.AutomationTestProgress to the app room, and stored progress in packages/server/src/automations/testProgress.ts without user scoping. A co-builder could receive or poll another SSO-authenticated builder test and obtain OAuth2 access and refresh tokens. The fix adds sanitizeAutomationTestResult and isolates progress by user. This issue is fixed in version 3.39.25.</p>
      </div>
    </content>
    <link href="https://db.gcve.eu/vuln/fkie_cve-2026-73308"/>
  </entry>
  <entry>
    <id>https://db.gcve.eu/vuln/ghsa-gh4h-34gr-87r7</id>
    <title>GHSA-gh4h-34gr-87r7 — Budibase: OAuth2 Token Disclosure via Automation Test Results Broadcast to Other Builders</title>
    <updated>2026-10-02T03:54:17.432475+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> npm: @budibase/server</p>
<p>## Summary</p>
<p>When an SSO-authenticated user tests an automation in the Budibase builder, their OAuth2 access token and refresh token are included in the automation test results. These results are broadcast via WebSocket to all builders connected to the same dev app and stored in an in-memory cache accessible to any builder who polls the test status endpoint. This allows any co-builder of the same app to steal the testing user's OAuth2 tokens.</p>
<p>## Details</p>
<p>The vulnerability exists because `getUserContextBindings()` intentionally includes OAuth2 tokens in user context bindings (so automations can call external APIs), but the automation test pipeline exposes the full result — including these tokens — to all builders of the same app without sanitization.</p>
<p>**Step 1: Tokens included in user bindings**</p>
<p>In `packages/server/src/sdk/users/utils.ts:134-161`:
```typescript
export function getUserContextBindings(user: ContextUser): UserBindings {
  const bindings: UserBindings = {
    _id: user._id,
    email: user.email,
    // ...
  }
  if (isSSOUser(user) &amp;&amp; user.oauth2) {
    bindings.oauth2 = {
      accessToken: user.oauth2.accessToken,   // &lt;-- sensitive
      refreshToken: user.oauth2.refreshToken,  // &lt;-- sensitive
    }
  }
  return bindings
}
```</p>
<p>**Step 2: Bindings passed to automation execution**</p>
<p>In `packages/server/src/api/controllers/automation.ts:311-312`:
```typescript
const user = sdk.users.getUserContextBindings(ctx.user)
return await triggers.externalTrigger(
  { ...…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/ghsa-gh4h-34gr-87r7"/>
  </entry>
</feed>
