Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAttacker authenticates as low-privilege member
-
DeliveryCraft malicious HTML/JS payload in campaign email body
-
ExploitPayload persisted to Plunk database
-
InstallAdmin navigates to campaign view in dashboard
-
C2dangerouslySetInnerHTML renders stored payload without sanitization
-
ExecuteMalicious script executes in admin browser context
-
ImpactAdmin session token or credentials exfiltrated
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 | Exploitation requires the attacker to hold an authenticated project member account on the target Plunk instance - unauthenticated external parties cannot submit campaign content. A victim with admin or member-level dashboard access must actively navigate to view the affected campaign (UI:R per CVSS), which is a routine administrative action requiring no social engineering beyond the campaign existing. The scope change (S:C) means injected scripts execute in the victim's browser context rather than isolated to the attacker's own session, enabling cross-account impact. No non-default configuration, special deployment mode, or specific platform version beyond 'Plunk < 0.9.0' is required - any default multi-user deployment where members can create campaigns is susceptible. Limiting factors: the attacker must have a valid member account, and the attack is non-automatable (SSVC) since it depends on a privileged user voluntarily viewing the campaign. |
| Impact | The CVSS 5.4 (Medium) vector AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N accurately captures a network-reachable stored XSS requiring a low-privileged authenticated account, victim interaction, and yielding cross-context (scope-changed) impact on confidentiality and integrity. Real-world urgency is further modulated by multiple converging signals: EPSS at 0.03% (8th percentile) indicates very low exploitation probability relative to the broader CVE population; CISA SSVC explicitly notes exploitation status as 'none' and flags it as non-automatable with only partial technical impact. No KEV listing and no identified public POC are consistent with these low-signal readings. The principal threat is a malicious or compromised insider - a project member - escalating influence to admin-level session control; this is a meaningful but targeted internal risk rather than a mass-exploitation scenario. No conflicting signals are present between data sources. |
| Exploit ScenarioDerived | A lower-privileged project member crafts a campaign email body containing a JavaScript payload - for example, an |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 23, 2026
Stored XSS in Plunk's campaign management feature allows authenticated project members with lower privileges to inject malicious scripts into email body content that subsequently executes in the browser session of any admin or peer member who views the campaign in the admin dashboard. The root cause is React's dangerouslySetInnerHTML API rendering unsanitized user-supplied HTML, bypassing React's built-in XSS protections. No active exploitation is confirmed (not in CISA KEV, EPSS at 0.03%), and a vendor-released patch exists in v0.9.0 integrating DOMPurify; however, the insider privilege-escalation threat model - member to admin - makes patching a meaningful priority for multi-user deployments.
RemediationAI
Upgrade to Plunk v0.9.0, which integrates DOMPurify to sanitize HTML content before it is passed to dangerouslySetInnerHTML, directly eliminating the root cause; the release is available at https://github.com/useplunk/plunk/releases/tag/v0.9.0 and the fix is confirmed by commit bf12392. If immediate upgrade is not feasible, restrict campaign creation permissions to fully trusted admin-level accounts only, removing 'member' role access to the campaign editor - note this degrades collaborative workflow and may not be granular depending on Plunk's RBAC implementation. As an additional precaution prior to patching, audit existing campaign bodies for <script> tags, javascript: URIs, or inline event handlers (onload, onerror, etc.) that may have already been injected.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Plunk is an open-source self-hosted email marketing platform built on AWS SES (CPE: cpe:2.3:a:useplunk:plunk). The vulnerability class is CWE-79 (Improper Neutralization of Input During Web Page Generation - Stored XSS). React's dangerouslySetInnerHTML is a deliberate escape hatch that injects raw HTML strings directly into the DOM, explicitly bypassing React's automatic output encoding. When campaign email body content - submitted by lower-privileged members - is stored in the database and later retrieved for rendering in the admin dashboard via this API without sanitization, any embedded script tags or event-handler attributes execute in the viewer's browser context. The v0.9.0 fix integrates DOMPurify (confirmed in release commit bf12392), a standard DOM sanitization library that strips malicious markup prior to rendering.
Know when Plunk 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:L/PR:L/UI:R/S:C/C:L/I:L/A:N
Campaign submission is network-delivered with no complexity; PR:L reflects required member account; UI:R and S:C capture admin-viewer interaction triggering cross-context script execution.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Plunk is an open-source email platform built on top of AWS SES. Prior to version 0.9.0, a stored cross-site scripting (XSS) vulnerability exists in the campaign management feature, where the email body content created by authenticated project members is stored and later rendered in the admin dashboard using React's dangerouslySetInnerHTML without any HTML sanitization. This allows a lower-privileged member to embed malicious scripts in a campaign's email body that execute in the context of any admin or other member who views the campaign, potentially enabling session hijacking or unauthorized actions on their behalf. This issue has been patched in version 0.9.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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
SSRF in Plunk email platform before 0.7.0.
Amazon SNS webhook spoofing in Plunk before 0.9.0 lets any unauthenticated remote attacker forge notifications to the /w
Plunk is an open-source email platform built on top of AWS SES. versions up to 0.7.1 is affected by cross-site scripting
CRLF injection in Plunk email platform's SESService.ts allows authenticated API users to inject arbitrary MIME headers b
EUVD-2026-28831
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB