CVE-2025-54139
📋 TL;DR
HAX CMS versions 11.0.12 and below (NodeJS) and 11.0.7 and below (PHP) lack X-Frame-Options headers, allowing attackers to embed the CMS login page and other sensitive interfaces in iframes. This enables clickjacking attacks where users can be tricked into performing unintended actions. All HAX CMS deployments using vulnerable versions are affected.
💻 Affected Systems
- haxcms-nodejs
- haxcms-php
📦 What is this software?
⚠️ Risk & Real-World Impact
Worst Case
Attackers could embed the login page in malicious sites, tricking users into entering credentials or performing administrative actions through social engineering.
Likely Case
Clickjacking attacks leading to unauthorized actions like content modification, user impersonation, or data exposure through manipulated interfaces.
If Mitigated
With proper headers, the site cannot be loaded in iframes, preventing clickjacking entirely.
🎯 Exploit Status
Attack requires user interaction but is straightforward to implement with basic web development skills.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: haxcms-nodejs 11.0.13, haxcms-php 11.0.8
Vendor Advisory: https://github.com/haxtheweb/issues/security/advisories/GHSA-54vw-f4xf-f92j
Restart Required: Yes
Instructions:
1. Update haxcms-nodejs to version 11.0.13 or haxcms-php to version 11.0.8. 2. Restart the CMS service. 3. Verify headers are present.
🔧 Temporary Workarounds
Add X-Frame-Options Header
allManually configure web server to add X-Frame-Options: DENY or SAMEORIGIN header
For Apache: Header always set X-Frame-Options "DENY"
For Nginx: add_header X-Frame-Options "DENY" always;
Content Security Policy Frame Ancestors
allImplement CSP frame-ancestors directive to restrict framing
Content-Security-Policy: frame-ancestors 'self';
🧯 If You Can't Patch
- Implement web application firewall rules to add X-Frame-Options headers
- Use browser security extensions to block iframe loading of sensitive pages
🔍 How to Verify
Check if Vulnerable:
Use browser developer tools to check HTTP response headers for X-Frame-Options or Content-Security-Policy with frame-ancestors
Check Version:
Check package.json for haxcms-nodejs or composer.json for haxcms-php version
Verify Fix Applied:
Confirm X-Frame-Options: DENY or Content-Security-Policy: frame-ancestors 'self' headers are present
📡 Detection & Monitoring
Log Indicators:
- Multiple failed login attempts from unexpected referrers
- Unusual iframe-related errors
Network Indicators:
- HTTP requests with missing X-Frame-Options headers
SIEM Query:
http.response.headers !contains "X-Frame-Options" AND uri.path contains "login"
🔗 References
- https://github.com/haxtheweb/haxcms-nodejs/commit/777f9a7ff9675a160496f350d766df1f1f9b9b99
- https://github.com/haxtheweb/haxcms-php/commit/708dc8518928fe307044e67bff8b0f397cfdd606
- https://github.com/haxtheweb/issues/security/advisories/GHSA-54vw-f4xf-f92j
- https://github.com/haxtheweb/issues/security/advisories/GHSA-54vw-f4xf-f92j