Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
PR:L confirmed by required authenticated session; C:H from decrypted OAuth credential exposure; I:L from potential downstream Google API write abuse via stolen tokens; A:N as no availability impact applies.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
4DescriptionCVE.org
TypeBot is a chatbot builder tool. Prior to version 3.17.0, the handleGetSheets API handler (POST /api/sheets/getSheets) does not validate workspace membership, allowing any authenticated user to access and decrypt another workspace's Google Sheets OAuth credentials and retrieve spreadsheet data (sheet names, IDs, column headers). Version 3.17.0 fixes the issue.
AnalysisAI
Unauthorized cross-workspace Google Sheets credential exposure in Typebot prior to version 3.17.0 allows any authenticated user to call the POST /api/sheets/getSheets endpoint with an arbitrary workspace ID, bypassing membership checks entirely. The handler decrypts and returns the target workspace's stored Google Sheets OAuth tokens along with spreadsheet metadata (sheet names, IDs, and column headers), constituting a direct credential theft vector against any workspace with a Google Sheets integration configured. No public exploit code or active exploitation (CISA KEV) has been identified at time of analysis, but the low exploitation complexity makes this a credible insider or multi-tenant threat.
Technical ContextAI
Typebot (cpe:2.3:a:baptistearno:typebot.io:*:*:*:*:*:*:*:*) is an open-source chatbot builder implemented as a Next.js monorepo. Its Google Sheets integration stores OAuth credentials per workspace in a Prisma-managed database, with credentials encrypted at rest. The handleGetSheets API handler (apps/builder/src/features/blocks/integrations/googleSheets/api/handleGetSheets.ts) accepted a caller-supplied workspaceId parameter and decrypted then returned credentials for that workspace without verifying that the authenticated caller was a member of that workspace. CWE-862 (Missing Authorization) is the precise root cause: the function had authentication (a valid user session) but no authorization check - it never called isReadWorkspaceForbidden or any equivalent membership gate. The PR diff confirms the fix adds a prisma.workspace.findFirst lookup followed by an isReadWorkspaceFobidden(workspace, user) guard that throws ORPCError('NOT_FOUND') on mismatch, preventing unauthorized callers from reaching the credential decryption logic.
RemediationAI
Upgrade to Typebot version 3.17.0, which introduces mandatory workspace membership validation in the handleGetSheets handler before any credential decryption occurs. The fix is confirmed via GitHub release tag v3.17.0 (https://github.com/baptisteArno/typebot.io/releases/tag/v3.17.0) and the merged PR at https://github.com/baptisteArno/typebot.io/pull/2467. For operators unable to upgrade immediately, a targeted compensating control is to revoke and rotate all Google Sheets OAuth credentials stored in affected Typebot workspaces via the Google Account security console - this eliminates the value of any credentials already exfiltrated. Additionally, network-level restriction of the POST /api/sheets/getSheets endpoint to trusted IP ranges (e.g., only builder UI origins via a reverse proxy rule) would raise the bar for exploitation, though it does not close the authorization gap. Disabling Google Sheets integrations workspace-wide until patching is complete is the most conservative option, with the trade-off that all Sheets-dependent chatbot flows will break. Rotating credentials post-patch is strongly recommended to address any pre-patch exfiltration.
More in Typebot Io
View allServer-Side Request Forgery in Typebot chatbot builder versions 3.15.2 and prior allows unauthenticated remote attackers
Cross-workspace OAuth credential takeover in Typebot (open-source chatbot builder) before 3.17.0 lets a user holding onl
Unauthenticated cross-tenant file upload in Typebot.io chatbot builder versions 3.16.1 and earlier allows anonymous visi
Cleartext storage of API bearer tokens in the self-hosted open-source Typebot chatbot builder (version 3.16.1) lets anyo
Stored cross-site scripting in Typebot chatbot builder versions 3.15.2 and prior allows a malicious imported or collabor
Stored cross-site scripting in Typebot (chatbot builder) versions 3.15.2 and prior lets an authenticated user upload a c
Unauthenticated S3 path traversal in Typebot versions prior to 3.17.0 allows any attacker to obtain presigned S3 PUT URL
Server-side request forgery in Typebot chatbot builder before version 3.17.2 allows remote unauthenticated attackers to
Server-side request forgery in Typebot before 3.17.2 lets an authenticated workspace editor or creator bypass the shared
Server-side request forgery in Typebot versions 3.15.2 and prior allows authenticated users to bypass the validateHttpRe
Credential exfiltration in Typebot prior to 3.17.0 allows a low-privilege guest workspace member to steal decrypted Open
Server-side request forgery in Typebot chatbot builder versions prior to 3.16.0 allows authenticated users to bypass SSR
Same weakness CWE-862 – Missing Authorization
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-56235