Miggo Logo

CVE-2025-49139: @haxtheweb/haxcms-nodejs Iframe Phishing vulnerability

5.3

CVSS Score
3.1

Basic Information

EPSS Score
0.07595%
Published
6/9/2025
Updated
6/9/2025
KEV Status
No
Technology
TechnologyJavaScript

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:N/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
@haxtheweb/haxcms-nodejsnpm< 11.0.011.0.0

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability (GHSA-v3ph-2q5q-cg88 / CVE-2025-49139) in @haxtheweb/haxcms-nodejs allows an authenticated attacker to conduct a phishing attack by embedding an iframe with a malicious source URL. When a victim visits the page, the malicious iframe can display a fake login prompt to harvest credentials. This is classified as CWE-1021: Improper Restriction of Rendered UI Layers or Frames.

The root cause is the lack of, or insufficient, sandboxing on <iframe> elements that can be created by users through the HAX site editor. The provided commit (5368eb9b278ca47cd9a83b8d3e6216375615b8f5) addresses this by explicitly adding the sandbox="allow-scripts allow-same-origin" attribute to iframes in two key places:

  1. HaxStore.nodeToContent: This function is involved in serializing HAX content to HTML. If an <iframe> tag is part of this content, the patched function now ensures it gets the sandbox attribute. Previously, it would have been rendered without it.
  2. IframeLoader.firstUpdated: The iframe-loader component is used to render iframes. Its firstUpdated method, which runs when the component is initialized, now sets the sandbox attribute on the iframes it creates. Previously, it did not.

By adding sandbox="allow-scripts allow-same-origin", other capabilities like allow-forms, allow-popups, and allow-top-navigation are disabled by default, which helps mitigate the risk of phishing and other malicious iframe behaviors. The identified functions are considered vulnerable because their previous versions were responsible for rendering these iframes without the necessary sandboxing restrictions.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

### Summ*ry In t** **X sit* **itor, us*rs **n *r**t* * w**sit* *lo*k to lo** *not**r sit* in *n i*r*m*. T** *ppli**tion *llows us*rs to supply * t*r**t URL in t** w**sit* *lo*k. W**n t** **X sit* is visit**, t** *li*nt's *rows*r will qu*ry t** suppl

Reasoning

T** vuln*r**ility (**S*-v*p*-*q*q-**** / *V*-****-*****) in @**xt**w**/**x*ms-no**js *llows *n *ut**nti**t** *tt**k*r to *on*u*t * p*is*in* *tt**k *y *m****in* *n i*r*m* wit* * m*li*ious sour** URL. W**n * vi*tim visits t** p***, t** m*li*ious i*r*m*