Appsmith Table Widget Stored XSS to Admin Account Takeover — CVE-2026-30862
by drkim-dev · 2026-07-05
- Severity
- Critical
- CVE
- CVE-2026-30862 (GHSA-5hw4-whxv-6794)
- Category
- web
- Affected product
- Appsmith
- Affected versions
- <= 1.95 (fixed in 1.96)
- Disclosed
- 2026-07-05
- Patch status
- patched
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-04 |
| Author / Researcher | drkim-dev |
| CVE / Advisory | CVE-2026-30862 (GHSA-5hw4-whxv-6794) |
| Category | web |
| Severity | Critical |
| CVSS Score | 9.1 (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H) |
| Status | PoC |
| Tags | appsmith, stored-xss, csrf, privilege-escalation, xsrf-token, react, low-code |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | Appsmith |
| Versions Affected | <= 1.95 (fixed in 1.96) |
| Language / Platform | React/TypeScript (Appsmith frontend), JSON payload data |
| Authentication Required | Yes (as a regular, low-privileged user) |
| Network Access Required | Yes |
Summary
Appsmith’s TableWidgetV2 component (BasicCell.tsx) fails to sanitize user-supplied cell values when the column type is URL or Plain Text, rendering raw HTML/attributes directly as React children and allowing stored XSS. Because Appsmith’s XSRF-TOKEN cookie is readable via document.cookie (unlike the HttpOnly-protected session cookie), a regular user can combine the stored XSS with the app’s built-in “Invite” sharing feature to deliver the payload to a System Administrator. When the admin opens the shared app, the injected script reads their XSRF token and issues an authenticated PUT /api/v1/admin/env request that adds the attacker’s own account to the administrative email whitelist, resulting in full admin account takeover.
Vulnerability Details
Root Cause
BasicCell.tsx returns unsanitized user-controlled values (URL/Plain Text column types) as raw content in the DOM rendering sink, and the app’s XSRF token is accessible to any script running in the page context via document.cookie.
Attack Vector
- Log in as a regular user (
user@gmail.com) and create a new application with a Table Widget. - Set the Table Data property to a JSON payload containing an
onerror-triggering<img>tag in aURL/Plain Textcolumn to confirm XSS execution (alert(document.domain)). - Replace the payload with a weaponized version that reads
document.cookiefor theXSRF-TOKENand issues afetch('/api/v1/admin/env', {method:'PUT', ...})request adding the attacker’s email toAPPSMITH_ADMIN_EMAILS. - Use Appsmith’s “Share”/“Invite” feature to invite the System Administrator (
admin@gmail.com) to the malicious application. - When the Administrator opens the invited app, the Table Widget renders and executes the injected script in their authenticated session, silently granting the attacker’s account administrative privileges.
Impact
A low-privileged authenticated user can escalate to full System Administrator privileges over the entire Appsmith instance by weaponizing stored XSS delivered through the platform’s own sharing/invite feature.
Environment / Lab Setup
Target: Appsmith <= 1.95, multi-user instance with an existing System Administrator account
Attacker: A standard registered Appsmith user account and a web browser
Proof of Concept
PoC Script
See
CVE-2026-30862_POC/Step 1.jsonandCVE-2026-30862_POC/Step 2.jsonin this folder.
| |
Step 1.json contains the confirmation payload (onerror alert). Step 2.json contains the weaponized payload that reads the victim’s XSRF token and calls /api/v1/admin/env to add the attacker’s account to the admin whitelist once the invited administrator views the table.
Detection & Indicators of Compromise
Signs of compromise:
- Unexpected additions to
APPSMITH_ADMIN_EMAILSnot performed via the intended admin settings UI - Table Widget data containing
<img onerror=...>or similar HTML injection patterns - Admin account activity correlated with opening applications shared by low-privileged users
Remediation
| Action | Detail |
|---|---|
| Primary fix | Upgrade Appsmith to 1.96 or later |
| Interim mitigation | Restrict who can invite/share applications with administrators; sanitize widget-rendered content and treat the XSRF token as sensitive (avoid readability via document.cookie where possible) |
References
Notes
Mirrored from https://github.com/drkim-dev/CVE-2026-30862 on 2026-07-05.