Skip to main content

Novu EUVDEUVD-2026-84535

| CVE-2026-75510 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-09-22 GitHub_M GHSA-8gr3-5j6f-25gp
5.1
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain org-member session or environment API key
  2. Delivery
    Store javascript: redirect URL in in-app CTA
  3. Exploit
    Recipient clicks notification in Chromium browser
  4. Execution
    window.open runs script in inbox origin
  5. Impact
    Steal 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

novu < 3.18.0

Affected Packages

npm @novu/js fix: 3.18.0
euvd novu fix: 3.18.0

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

Vendor (GitHub_M) PRIMARY 5.1 MEDIUM
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
vuln.today AI 5.4 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Sep 22, 2026 - 17:17 EUVD

DescriptionCVE.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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 3 npm packages depend on @novu/js (1 direct, 2 indirect)

Ecosystem-wide dependent count for version 3.18.0.

Threat Intelligence Overview

EPSS Score
0.5%
Top 59% exploitable
Prevalence
Medium
Popular open-source notification infrastructure, common in dev stacks but modest production footprint
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy