Typebot CVE-2026-39970
HIGHAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate to Typebot account
-
DeliveryCraft malicious SVG with embedded JS
-
ExploitUpload as profile picture
-
InstallPayload stored on app.typebot.io
-
C2Victim views profile image
-
ExecuteScript executes in app origin
-
ImpactExfiltrate tokens / take over account
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Typebot account (CVSS PR:L) with access to the profile picture upload form and the ability to upload a crafted SVG/XML file with embedded JavaScript to an instance running 3.15.2 or earlier. Exploitation additionally requires victim interaction (CVSS UI:P): a victim must load/view the stored malicious SVG served from the application domain (app.typebot.io) for the payload to fire. Limiting factors that reduce realistic risk: the attacker cannot be fully unauthenticated (an account is needed), the payload only triggers when another user renders the image, and instances on 3.16.0 or those that reject/sandbox SVG uploads are not exposed. Cross-user impact hinges on whether profile pictures are viewable by other users in the deployment. |
| Impact | The signals are consistent and point to a real but bounded risk. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N) indicates a network-reachable, low-complexity attack that requires the attacker to hold an account (PR:L) and requires a victim to view the malicious content (UI:P), yielding 8.5 (High). SSVC classifies exploitation as POC (not active), not automatable, with partial technical impact - consistent with the authentication-plus-victim-interaction requirement rather than mass unauthenticated scanning. EPSS is 0.05% and there is no KEV listing, so despite the high CVSS this is not evidence of widespread exploitation; the score is driven by same-origin script execution impact (account takeover), not ease of mass exploitation. Net: patch promptly for multi-tenant or self-hosted deployments because account takeover is serious, but this is not an internet-wormable emergency. One caveat to verify with the vendor: whether an uploaded avatar is viewable by other users determines whether this is cross-user stored XSS or self-XSS only - the advisory's 'public permanent link' framing implies cross-user reach but is not code-verified here. |
| Exploit ScenarioDerived | An attacker uses a Typebot account to upload a crafted SVG containing embedded JavaScript (e.g. an onload handler that reads document.cookie or session tokens) as their profile picture. When a victim such as an admin or workspace member views the attacker's avatar, the SVG is served from app.typebot.io and its script runs in the victim's session, exfiltrating tokens to an attacker-controlled server and enabling account takeover. POC-level exploitation is documented per SSVC. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 23, 2026
Stored cross-site scripting in Typebot (chatbot builder) versions 3.15.2 and prior lets an authenticated user upload a crafted SVG containing embedded JavaScript through the profile picture upload form; because the file is served unsanitized from the app.typebot.io domain via a permanent public link, the script executes in the browser of anyone who views it, enabling session/token theft, account takeover, and data exfiltration. Publicly available exploit code exists (SSVC: POC), but there is no confirmed active exploitation and EPSS is very low (0.05%, 15th percentile) with no CISA KEV listing.
RemediationAI
Upgrade to Typebot 3.16.0 or later (Vendor-released patch: v3.16.0), which addresses SVG upload handling; self-hosters should also invalidate existing sessions/tokens as a precaution given the account-takeover impact. Until upgrade, apply compensating controls on the upload path: reject SVG/XML content types on the profile-picture endpoint (trade-off: users lose SVG avatars, generally acceptable); or serve all user-uploaded files from a separate sandboxed origin/CDN with Content-Disposition: attachment and a restrictive Content-Security-Policy so SVGs cannot execute script in the app.typebot.io origin (trade-off: infrastructure change, may affect inline rendering); and/or re-encode uploaded images to a raster format (PNG/JPEG) to strip embedded scripts. See advisory GHSA-jj87-c343-26vp (https://github.com/baptisteArno/typebot.io/security/advisories/GHSA-jj87-c343-26vp) and the v3.16.0 release notes (https://github.com/baptisteArno/typebot.io/releases/tag/v3.16.0).
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 is an open-source chatbot builder (repository baptisteArno/typebot.io) whose hosted instance runs at app.typebot.io. The root cause is CWE-79 (improper neutralization of input during web page generation), specifically stored XSS. SVG is an XML-based image format that can legally embed <script> elements and event-handler attributes; when a web application accepts SVG uploads and later serves them with an image/svg+xml content type on its own origin (rather than sandboxing them or re-encoding to raster), the browser parses and executes the embedded script in that origin's context. Here the profile-picture upload path neither restricts SVG/XML uploads nor sanitizes their contents, and the stored file is rendered directly from the application domain, giving the payload same-origin execution against app.typebot.io.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Authenticated upload (PR:L) with a victim who must view the stored SVG (UI:R); script runs in the app origin affecting other users so scope changes (S:C), with high confidentiality/integrity impact and no availability effect.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
3DescriptionCVE.org
TypeBot is a chatbot builder tool. Versions 3.15.2 and prior contain a critical stored XSS vulnerability in the app.typebot.io profile picture upload form. The application fails to sanitize or restrict SVG/XML-based uploads and directly renders them when accessed through the domain. By uploading a crafted malicious SVG file containing embedded JavaScript, an attacker will execute arbitrary JavaScript code. This vulnerability directly enables stored XSS exploitation because the payload is persistently stored on your infrastructure (app.typebot.io) and accessible from a public-facing, permanent link. Stored XSS via malicious SVG uploads to app.typebot.io allows attackers to execute arbitrary JavaScript in victims' browsers, enabling session/token theft, account takeover, and exfiltration of sensitive user data. This issue has been fixed in version 3.16.0.
Executive ViewAI
Typebot (versions 3.15.2 and earlier) contains a stored cross-site scripting vulnerability that allows users to upload malicious SVG files triggering JavaScript execution when viewed publicly, creating risk of session hijacking and account takeover. Publicly available exploit code exists, though no confirmed active exploitation has been identified.
Disable SVG file uploads and restrict file types to PNG/JPEG formats; implement Content Security Policy headers with strict script-src restrictions; disable public-link sharing for user-generated content until patch is available; audit existing uploaded SVG files for malicious payloads; establish monitoring for unusual file upload patterns or access anomalies.
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
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
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
Typebot's webhook resume endpoint exposes an insecure direct object reference flaw that allows any authenticated user ho
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB