Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain org-member session or environment API key
-
DeliveryStore javascript: redirect URL in in-app CTA
-
ExploitRecipient clicks notification in Chromium browser
-
Executionwindow.open runs script in inbox origin
-
ImpactSteal session material / perform authenticated actions
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 Novu organization member OR possession of an environment API key to store a 'javascript:'-scheme redirect.url (with target _self) in an in-app workflow call-to-action - this is the concrete precondition (PR:L). Exploitation further requires victim interaction (UI:P): a notification recipient must click the crafted in-app notification, AND the description limits reliable execution to Chromium-based browsers because it depends on how window.open handles the javascript: URI in the inbox-hosting origin. It affects @novu/js In-App Inbox and the @novu/react Inbox component prior to 3.18.0. Limiting factors: not remote-unauthenticated (attacker needs org membership or API key), depends on victim click, and depends on a Chromium browser; self-hosted dashboards and multi-tenant customer apps embedding the Inbox are the higher-risk targets. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/SC:L/SI:L, base 5.1 Medium) tells a consistent story: network-reachable but requiring both low-privilege authentication (PR:L) and victim interaction (UI:P), with only low subsequent-system confidentiality/integrity impact. This is a self/stored client-side script-injection (javascript: URI) flaw, not a directly weaponizable pre-auth RCE. No EPSS score, no CISA KEV listing, and no public POC are present in the supplied data, so exploitation status is 'no public exploit identified at time of analysis.' The realistic risk is moderate-to-low: an attacker must already hold an organization-member session or an environment API key to plant the malicious call-to-action, and a recipient must then click the notification specifically in a Chromium-based browser (the description notes the window.open behavior is Chromium-specific, which limits reliable cross-browser exploitation). The chief aggravating factor is scope: successful execution runs in the inbox-hosting origin - a customer application or the self-hosted Novu dashboard - allowing session-material exposure and authenticated actions, which is why a scope change is warranted. Overall this is a genuine but conditional stored-XSS-class issue, not a high-urgency mass-exploitation candidate; prioritize patching for multi-tenant/self-hosted dashboard operators over single-tenant deployments. |
| Exploit ScenarioDerived | A low-privileged but authenticated organization member (or anyone holding an environment API key) configures an in-app workflow whose call-to-action redirect.url is a 'javascript:' payload with target _self. When a recipient opens their in-app inbox in a Chromium-based browser and clicks the notification, window.open executes the script in the inbox-hosting origin, exposing session material and enabling authenticated actions in the host application or self-hosted Novu dashboard. No public POC is referenced, though the fixing PR/commit (f105f3d4) and GHSA-8gr3-5j6f-25gp document the vulnerable code path precisely. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 22, 2026
Stored cross-site scripting in Novu's in-app notification inbox (all versions prior to 3.18.0) allows an authenticated organization member or an environment API-key holder to persist a javascript:-scheme redirect URL in an in-app workflow call-to-action, which is then executed via window.open in the inbox-hosting origin when a recipient clicks the notification. Exploitation requires both the low-privilege write access described above (CVSS 4.0 PR:L, assessed CVSS 3.1 PR:L) and victim interaction in a Chromium-based browser (UI:P), limiting reliable impact to confidentiality and integrity of the embedding customer application or self-hosted Novu dashboard rather than the Novu platform itself. The issue is fixed in version 3.18.0; no public exploit code or confirmed active exploitation was identified at time of analysis.
RemediationAI
Vendor-released patch: upgrade to Novu 3.18.0 (release tag v3.18.0), which corresponds to PR https://github.com/novuhq/novu/pull/11453 and commit f105f3d41a4405a75f803634d49f15a967524d8a; verify both the server (apps/api) and the client SDKs @novu/js and @novu/react are upgraded, since the fix spans the server-side notification mapper, the WebSocket mapper, and the browser navigate() implementation in InboxContext.tsx. Until the upgrade is deployed, compensate by restricting who can author in-app workflow CTAs and redirect URLs to trusted administrators (the attack requires organization membership or an environment API key), and by server-side rejecting any cta.data.url that does not match the allowlisted patterns in IN_APP_REDIRECT_URL_REGEX, i.e. only http(s):// URLs or root-relative paths starting with a single slash, with target limited to _self, _blank, _parent, _top or _unfencedTop; the trade-off is that legitimate non-HTTP schemes and protocol-relative links will stop working, so audit existing workflows first. Content-Security-Policy on the inbox-hosting origin (for example a restrictive script-src and disallowing inline/eval-based URIs) can also blunt the javascript: execution but may break embedded widgets and should be tested; note that disabling the Inbox component entirely removes the risk but eliminates the notification feature. Advisory: https://github.com/novuhq/novu/security/advisories/GHSA-8gr3-5j6f-25gp.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is an unvalidated URL scheme flowing from tenant-controlled notification content into a client-side navigation primitive, classified as CWE-79 because the javascript: URI executes script in the security context of the origin that hosts the Novu Inbox rather than in a sandboxed context. Specifically, the v1 cta.data.url and cta.data.target fields were passed unchanged through apps/api/src/app/inbox/utils/notification-mapper.ts, the @novu/react DefaultNotification.tsx component, the @novu/js WebSocket mapper (party-socket.ts, mapToNotification), and finally into the navigate function in packages/js/src/ui/context/InboxContext.tsx, which called window.open(url, target ?? DEFAULT_TARGET, DEFAULT_REFERRER). Storing a redirect with url set to a javascript: payload and target set to _self causes the browser to evaluate the payload in the current inbox-hosting frame, which can read session material and perform authenticated actions against the embedding customer app or a self-hosted Novu dashboard. The upstream fix (PR 11453, commit f105f3d4) introduces a shared sanitizer (sanitizeInAppRedirect / in-app-redirect-url.ts) plus a new allowed-pattern regex, IN_APP_REDIRECT_URL_REGEX, that permits only http(s):// URLs, root-relative paths that are not protocol-relative (the /(?!//) branch blocks //evil.com), and template-variable-prefixed values, while rejecting mailto: and arbitrary schemes; the same patch allowlists window targets to _self, _blank, _parent, _top and _unfencedTop, and the in-app control Zod schema now references the shared regex instead of the older looser redirectUrlRegex.
Know when Novu 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:N/VI:N/VA:N/SC:L/SI:L/SA:N
Attacker needs low-priv auth (PR:L) to store the payload and a victim click (UI:R); script runs in a different origin than the injecting component, so S:C, with limited confidentiality/integrity and no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Novu provides an API for sending notifications through multiple channels. Prior to 3.18.0, Novu's @novu/js In-App Inbox and the @novu/react Inbox component accept a notification call-to-action redirect.url from the v1 cta.data object and pass it through apps/api/src/app/inbox/utils/notification-mapper.ts and packages/js/src/ui/components/Notification/DefaultNotification.tsx to the navigate function in packages/js/src/ui/context/InboxContext.tsx without validating its URL scheme. An authenticated organization member or environment API-key holder can store a javascript: redirect with target _self in an in-app workflow. When a recipient using a Chromium-based browser clicks the notification, window.open executes the redirect in the current inbox-hosting origin, which can expose session material and permit authenticated actions in a customer application or the self-hosted Novu dashboard. This issue is fixed in version 3.18.0.
Blast Radius
ecosystem impact- 3 npm packages depend on @novu/js (1 direct, 2 indirect)
Ecosystem-wide dependent count for version 3.18.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.
Cross-environment integration tampering in Novu before 3.18.0 lets an authenticated caller who holds an environment-scop
Novu provides an API for sending notifications through multiple channels. Rated medium severity (CVSS 6.1), this vulnera
Server-side request forgery in Novu prior to 3.18.0 allows an authenticated user to make the notification worker issue a
EUVD-2026-84535
GHSA-8gr3-5j6f-25gp
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB