Skip to content

Content spoofing - real Novu emails

Low
scopsy published GHSA-mv6w-52pf-9qhf Sep 6, 2023

Package

novu (Web)

Affected versions

<0.10.0

Patched versions

0.10.0

Description

Summary

Due to lack of validation for fields like Full Name and Organization name, bad actors can send emails with spoofed content as Novu (because in fact these emails are real Novu emails) at this moment.
Please notice that there are allowed different characters like (_) spaces etc, that allows to create all sentences by bad actors.

Details

Parts from the code:
https://github.com/novuhq/novu/blob/next/apps/web/src/pages/invites/MembersInvitePage.tsx#L212
image

Proposed remediation: please don't allow to malicious actions like this - proper validation for these fields (Sanitize/purify input data from users).

PoC

POC - payload examples:
Field FullName: Novu-so_just_Later
Field OrgName: get SWAG visit www.evilsite.com

Repro steps:

  1. Go to https://web.novu.co/auth/signup and during registration set Full Name with payload (above provided)
  2. As second step, for Organization Name set other payload (above provided)
  3. Go to https://web.novu.co/team as logged in user, type victims email addresses and click Invite button
  4. Open email - see valid payloads, email from real Novu <[email protected]> with spoofed content

(Please use your second email address for POC steps for convenient).

Result:
"You have been invited to Get SWAG visit www.evilsite.com by Novu. Click on the button below to accept."
Screenshot - result:
image

Impact

Spoofed email content - user see real Novu email, so is more exposed to malicious actions (like visit site xyz, download from xzy). Other scenario can be associated with disinformation (lost of trust and reputation) - using there bad words (vulgar), weird content etc.

Additional informations:
Content Spoofing - https://owasp.org/www-community/attacks/Content_Spoofing
CAPEC-148: Content Spoofing - https://capec.mitre.org/data/definitions/148.html
CWE-20: Improper Input Validation - https://cwe.mitre.org/data/definitions/20.html

Best regards,

Severity

Low

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:L

CVE ID

No known CVE

Weaknesses

Credits