Typebot CVE-2026-39967
LOWAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to Typebot instance
-
DeliveryObtain valid CUID2 resultId from target typebot
-
ExploitSupply foreign resultId to startChat endpoint
-
ExecutionfindResult query returns cross-typebot record without ownership check
-
ImpactRead victim session variables and PII
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Four simultaneous conditions must be met. First, the attacker must be authenticated to the Typebot instance (CVSS PR:L). Second, the target typebot must have the rememberUser feature enabled - without it, resultId-based session resumption does not occur and the vulnerable code path is never reached. Third, the attacker must possess a valid, non-guessable CUID2 resultId from a result record owned by a different typebot; brute-force is explicitly infeasible due to the 24-character cryptographically random format, so the ID must be obtained through another means. Fourth, the attacker's typebot must define variable names that overlap with those in the victim's typebot for any data to surface. What limits exploitation: the CUID2 ID space makes speculative attacks impractical; the rememberUser requirement means default-configured typebots may not be reachable; and authentication bars anonymous exploitation. |
| Impact | The CVSS 3.1 score of 3.1 (Low) is consistent with the signal profile here: AV:N (network reachable) is offset by AC:H (high complexity), PR:L (requires authenticated attacker), and C:L (limited confidentiality impact with no integrity or availability consequences). The AC:H rating is directly justified by the CUID2 constraint - the 24-character cryptographically random ID makes brute-force infeasible, meaning the attacker must independently obtain a valid resultId through some out-of-band means (e.g., insider access, log exposure, or prior compromise of another system component). No EPSS score was provided, and the vulnerability is not listed in CISA KEV, aligning with the low-severity rating. There is no evidence of public exploit code. In practice, real-world risk is narrow: the attacker must be authenticated, must have or guess a valid CUID2 resultId belonging to another typebot, and the target typebot must have rememberUser enabled with variable names overlapping those of the attacker's typebot. For multi-tenant SaaS deployments of Typebot where untrusted users can create bots on the same instance, the risk is elevated despite the low CVSS - a malicious tenant could potentially access PII from another tenant's users if they obtain a resultId. |
| Exploit ScenarioDerived | An authenticated user on a shared Typebot instance creates their own typebot and somehow obtains a valid CUID2 resultId belonging to a different user's typebot (e.g., through an exposed server log, a support ticket, or another compromised component). They call the startChat endpoint on their own typebot, supplying the foreign resultId. Because the pre-patch findResult query does not check typebotId, the database returns the victim's result record, and if variable names overlap, the attacker's session is populated with the victim's prior answers and PII. No public proof-of-concept code exists at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 22, 2026
Cross-typebot result data leakage in Typebot versions 3.15.2 and prior allows an authenticated user to read session variables, prior answers, and PII from a different typebot by supplying a foreign resultId to the startChat endpoint. The bot engine's findResult query omits typebotId from its database filter (CWE-639 IDOR), so any valid result record is returned regardless of which typebot owns it. If the attacker possesses a valid CUID2 resultId from another typebot and that typebot has rememberUser enabled, they can read the original user's names, emails, phone numbers, and other session variables exposed through matching variable names. No public exploit has been identified at time of analysis; vendor-released patch is available in version 3.16.0.
RemediationAI
Vendor-released patch: version 3.16.0. Upgrade to Typebot v3.16.0 immediately, available at https://github.com/baptisteArno/typebot.io/releases/tag/v3.16.0. The fix adds typebotId ownership enforcement to the findResult Prisma query (commit 73162634e6bdebd37a1a571db4062d30854e0400), closing the IDOR at the database layer. For operators unable to upgrade immediately, a targeted workaround is to disable the rememberUser feature across all typebots on the instance, as exploitation requires this feature to be active - note this will break returning-user session continuity. Additionally, restricting bot creation rights to trusted users only reduces the authenticated-attacker surface in multi-tenant deployments. There are no other known compensating controls that fully mitigate the authorization bypass without patching.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Typebot (CPE: cpe:2.3:a:baptistearno:typebot.io) is a Node.js/TypeScript chatbot builder that persists session results in a database accessed via Prisma ORM. The vulnerable code path is in packages/bot-engine/src/queries/findResult.ts, where the Prisma where clause queried only on { id, isArchived: { not: true } }, entirely omitting the typebotId ownership check. This is a textbook CWE-639 (Authorization Bypass Through User-Controlled Key) - the application uses a user-supplied CUID2 result ID as the sole lookup key without verifying that the requesting session's typebot owns that record. The fix, committed at 73162634e6bdebd37a1a571db4062d30854e0400, adds typebotId to both the findResult function signature and the Prisma where clause, enforcing ownership at the query level. Exploitation additionally requires the rememberUser feature to be active on the target typebot, as that is the mechanism that associates a resultId with a returning session.
Know when Typebot Io 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
AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N
Primary rating from Vendor (GitHub_M) · only source for this CVE.
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
TypeBot is a chatbot builder tool. In versions 3.15.2 and prior, the bot engine's the findResult query does not filter results by typebotId, allowing an authenticated user to load result data (user answers, variable values) from a different typebot by supplying a foreign resultId to the startChat endpoint. Exploitation is constrained by CUID2's cryptographically random 24-character IDs (making brute-force infeasible), the requirement that rememberUser be enabled, and the need for matching variable names in the current typebot. If successfully exploited, an attacker can access the original user's previous answers, session variable values, and hasStarted flag, potentially exposing PII like names, emails, and phone numbers. This issue has been fixed in version 3.16.0.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Affected Products (CPE)CVE.org
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
NVD
CVE.org
EPSS
GitHub
Exploit-DB