Severity by source
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Template management typically requires at minimum a low-privileged account (PR:L); PR:N from the provided vector is unconfirmed and likely overstated for this feature.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
Lifecycle Timeline
3DescriptionCVE.org
Mettle SendPortal 3.0.1 and earlier contains a stored cross-site scripting (XSS) vulnerability in the template management functionality. The application fails to properly sanitize user-supplied input in the content parameter of the /templates endpoint, allowing an attacker to persistently inject malicious JavaScript code that is executed in the browsers of users who access the affected template.
AnalysisAI
Stored cross-site scripting in Mettle SendPortal 3.0.1 and earlier enables persistent JavaScript injection through the content parameter of the /templates endpoint, with payloads executing in every browser that subsequently renders the poisoned template. A public proof-of-concept is hosted on GitHub Gist, providing low-effort reproduction for threat actors. Despite CISA SSVC assessing current exploitation as none, the scoped impact (S:C) means a single injected template can cascade across all users who view it, making this a meaningful session-hijacking or credential-harvesting vector for organizations relying on SendPortal for email campaign management.
Technical ContextAI
SendPortal is an open-source, Laravel-based self-hosted email marketing platform available at github.com/mettle/sendportal. The flaw falls under CWE-79 (Improper Neutralization of Input During Web Page Generation), the classic stored XSS root cause: user-supplied data written to persistent storage is later reflected into HTML responses without context-aware output encoding. The vulnerable surface is the content parameter of the POST /templates endpoint in the template management UI. Because templates are a shared resource rendered repeatedly for multiple users, a single injection persists and fires on every subsequent view, unlike reflected XSS which requires per-victim delivery. The CPE data (cpe:2.3:a:n/a:n/a) is non-specific and does not add version granularity beyond what the description provides.
RemediationAI
No vendor-released patch or fixed version has been identified at time of analysis; the sole product reference points to the source repository at https://github.com/mettle/sendportal without an associated security advisory or tagged release addressing this issue. As a compensating control, restrict write access to the /templates endpoint to the minimum necessary users, ideally through role-based access controls that limit template editing to trusted administrators - this reduces the attacker population even if it does not eliminate the flaw. Implement a Content Security Policy (CSP) response header that restricts script execution to known-safe origins; note that CSP is a depth-in-defense measure and does not fix the underlying injection, and some SendPortal UI features may require nonce-based exceptions. Review existing templates in storage for unexpected script tags or event handlers as an indicator of prior compromise. Monitor the GitHub repository for commits that address input sanitization or output escaping on the templates endpoint, and upgrade immediately upon a patched release.
LibreNMS before 24.10.0 allows a remote attacker to execute arbitrary code via OS command injection involving AboutContr
Reachable assertion in Open5GS up to version 2.7.6 allows remote unauthenticated attackers to crash the Diameter CER han
A Command Injection issue in the payload build page in BYOB (Build Your Own Botnet) 2.0 allows attackers to execute arbi
Denial of service in Open5GS 2.7.6 and earlier allows network-adjacent attackers with low-privilege Diameter Gx peer acc
Denial of service in Open5GS HSS (Home Subscriber Server) versions 2.7.0 through 2.7.6 is triggered remotely by manipula
Remote command injection in Control Web Panel allows unauthenticated attackers to execute arbitrary OS commands as root
LINQPad before 5.52.01 Pro edition is vulnerable to Unsafe Deserialization in LINQPad.AutoRefManager::PopulateFromCache(
Remote code execution in dash-uploader (Python package for Plotly Dash) versions 0.1.0 through 0.7.0a2 allows unauthenti
Command injection in LiteLLM 1.18.10 lets attackers who can configure MCP (Model Context Protocol) servers supply arbitr
SQL injection in AzuraCast's backup restore flow (versions up to and including 0.23.7) lets an attacker achieve privileg
Arbitrary file read in Yu AI Code Mother v4.3 lets anonymous, remote attackers retrieve files outside the intended previ
Remote code execution in APScheduler (all versions through 3.10.x and 4.0.0a5) is achievable when applications deseriali
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-46050
GHSA-7868-rq46-qvm4