CVE-2025-69985

9.8 CRITICAL

📋 TL;DR

CVE-2025-69985 is an authentication bypass vulnerability in FUXA SCADA/HMI software that allows remote unauthenticated attackers to execute arbitrary Node.js code on affected servers. The vulnerability occurs because the JWT middleware improperly trusts the HTTP Referer header for authentication validation. All FUXA installations version 1.2.8 and earlier are affected.

💻 Affected Systems

Products:
  • FUXA
Versions: 1.2.8 and prior
Operating Systems: All platforms running Node.js
Default Config Vulnerable: ⚠️ Yes
Notes: All default installations of affected versions are vulnerable. No special configuration is required for exploitation.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise allowing attackers to execute arbitrary code, steal sensitive industrial data, manipulate control systems, and establish persistent backdoors.

🟠

Likely Case

Attackers gain administrative access to the FUXA system, execute arbitrary commands, and potentially pivot to other industrial control systems on the network.

🟢

If Mitigated

Attackers are blocked from accessing the vulnerable endpoint through proper network segmentation and authentication controls.

🌐 Internet-Facing: HIGH - Internet-facing FUXA instances are directly exploitable by unauthenticated remote attackers.
🏢 Internal Only: HIGH - Internal instances are vulnerable to attackers who gain network access through phishing, malware, or compromised internal systems.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

The vulnerability is trivially exploitable with simple HTTP request manipulation. Public proof-of-concept code is available in the GitHub gist reference.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Unknown

Vendor Advisory: None available

Restart Required: Yes

Instructions:

1. Monitor the official FUXA GitHub repository for security updates. 2. Apply any available patches immediately. 3. Restart the FUXA service after patching.

🔧 Temporary Workarounds

Web Application Firewall Rule

all

Block or sanitize HTTP Referer headers at the web application firewall or reverse proxy level.

# Example nginx configuration to strip Referer header
proxy_set_header Referer "";
# Example Apache mod_headers configuration
RequestHeader unset Referer

Network Segmentation

linux

Isolate FUXA instances from untrusted networks and restrict access to authorized IP addresses only.

# Example iptables rule to restrict access
iptables -A INPUT -p tcp --dport 1881 -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 1881 -j DROP

🧯 If You Can't Patch

  • Immediately remove FUXA instances from internet-facing networks
  • Implement strict network segmentation and zero-trust principles around FUXA deployments

🔍 How to Verify

Check if Vulnerable:

Check if FUXA version is 1.2.8 or earlier by examining the package.json file or application metadata. Test by sending a request to /api/runscript with a spoofed Referer header matching the server host.

Check Version:

grep -r "version" package.json | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+'

Verify Fix Applied:

Verify that requests to /api/runscript without proper JWT authentication are rejected regardless of Referer header value.

📡 Detection & Monitoring

Log Indicators:

  • Unusual access to /api/runscript endpoint
  • Requests with manipulated Referer headers
  • Failed authentication attempts followed by successful /api/runscript access

Network Indicators:

  • HTTP requests to /api/runscript without proper authentication headers
  • Suspicious Referer header values matching server hostname

SIEM Query:

source="fuxa.logs" AND (uri_path="/api/runscript" AND NOT auth_token=*) OR (http_referer CONTAINS server_hostname AND uri_path="/api/runscript")

🔗 References

📤 Share & Export