CVE-2026-45087: Dalfox REST API RCE
Standard scheduled maintenance window.
TL;DR - CVE-2026-45087 is a critical unauthenticated remote command-execution flaw in Dalfox REST API server mode. - Dalfox versions before 2.13.0 are affected, especially exposed instances listening on
0.0.0.0:6664. - Upgrade to Dalfox 2.13.0 or later, disable exposed servers, restrict TCP/6664, and investigate suspicious child processes.
What Happened?
CVE-2026-45087 affects Dalfox, the open-source XSS scanning tool maintained in the hahwul/dalfox project. The vulnerability appears when Dalfox runs in REST API server mode using dalfox server.
In affected versions, an unauthenticated caller who can reach the API can submit attacker-controlled scan options, including fields that influence shell-command execution. The result is potential arbitrary command execution with the privileges of the Dalfox process.
| Field | Details |
|---|---|
| CVE ID | CVE-2026-45087 |
| Product | Dalfox |
| Affected versions | Versions before 2.13.0 |
| Fixed version | 2.13.0 |
| CVSS v3 base score | 10.0 Critical |
| CVSS vector | Not exposed in the supplied NVD record |
| Attack vector | Network |
| Authentication required | No, unless API-key authentication is explicitly configured |
| Privileges required | None |
| User interaction | Not indicated as required |
| Patch available | Yes |
| Default listener | 0.0.0.0:6664 |
| CISA KEV status | Not listed |
The issue is particularly serious because Dalfox server mode binds to all interfaces by default, while API-key authentication remains disabled unless the operator supplies --api-key.
Before investigating this vulnerability, security teams should also review their broader access controls, including privileged access workstation practices and network segmentation.
Analyst’s Take: Treat reachable REST API instances as the first remediation target, but do not stop there. The command executes with Dalfox’s process privileges, so every affected installation still requires an upgrade even when port 6664 is not exposed.
What’s the Root Cause?
The root cause is inadequate trust-boundary enforcement in the REST API request-handling and option-initialization paths.
The POST /scan endpoint deserializes attacker-controlled JSON directly into model.Options. That structure includes FoundAction and FoundActionShell, fields capable of influencing commands executed after a scan finding is identified.
Dalfox initialization then propagates those values into the effective scan configuration without removing, validating, or otherwise restricting the security-sensitive fields. The API therefore treats execution-related options supplied by an untrusted caller as trusted operator configuration.
Several deployment choices amplify the impact:
- The service listens to
0.0.0.0:6664by default. - Authentication is optional rather than mandatory.
- The API accepts attacker-controlled scan options.
- A command may execute when a scan finding triggers the relevant action path.
These conditions make the vulnerable path remotely accessible without credentials whenever the port is exposed through a firewall, cloud security group, container mapping, reverse proxy, or internal network route.
Who Needs to Act?
Organizations need to act if they run Dalfox in REST API server mode on any version before 2.13.0. Exposure is highest where TCP port 6664 is reachable from the internet, a broad corporate network, a shared security-testing environment, or an untrusted container or workload network.
| Product or deployment | Affected range | Fixed release | Required action |
|---|---|---|---|
| Dalfox REST API server | < 2.13.0 |
2.13.0 |
Upgrade immediately or stop the server |
Dalfox server mode on the default port |
< 2.13.0 |
2.13.0 |
Restrict TCP/6664 and upgrade |
Dalfox with explicit --api-key |
< 2.13.0 |
2.13.0 |
Upgrade; authentication reduces exposure but does not fix the code flaw |
| Dalfox command-line-only deployments | < 2.13.0 |
2.13.0 |
Confirm server mode is disabled; upgrade as a precaution |
Inventory should include:
- Standalone binaries
- Docker images
- Kubernetes workloads
- CI runners
- Penetration-testing jump hosts
- Developer workstations
- Supervisor- or wrapper-managed processes
Pay particular attention to systems where Dalfox is launched by a service manager or wrapper, because the externally exposed API may not be obvious from the process command line.
Why Is the CVSS Score Critical?
The supplied CVSS v3 base score is 10.0 Critical. The available NVD response did not expose the complete vector string, so individual metric values should not be presented as an authoritative published vector.
The vulnerability description supports the principal severity characteristics:
- Network reachability
- No required authentication
- No stated privileges
- Remote command execution
- Potential impact to confidentiality, integrity, and availability
An attacker only needs network connectivity to the Dalfox REST API and the ability to submit a request. In the default configuration, the service listens on all interfaces and does not require an API key.
The resulting command runs with the privileges of the Dalfox process. If that process has excessive permissions or access to sensitive credentials, the vulnerability can lead to complete host compromise.
CVSS is not an exposure measurement. A private Dalfox server with strict firewall rules may have lower operational risk than an internet-facing instance, while both retain the same underlying vulnerability. Prioritize exposed services first, then remediate every affected installation that can be identified.
Has CVE-2026-45087 Been Exploited?
The available evidence does not confirm exploitation in the wild. CVE-2026-45087 was not listed in the queried CISA Known Exploited Vulnerabilities catalog, and no confirmed ransomware campaign was indicated.
A GitHub security advisory is referenced for the issue, but the retrieved material did not expose a verified public exploit or proof of concept. The defensible status is therefore:
- No verified public PoC was established from the supplied evidence.
- Active exploitation has not been confirmed by the referenced NVD or CISA data.
- The vulnerable request path remains technically straightforward to abuse where the API is reachable.
The absence of a published PoC or KEV listing should not delay remediation.
Detection Guidance
Start by identifying Dalfox processes running in server mode and determining whether TCP port 6664 is reachable beyond the local host.
Review:
- Process supervisors
- Container manifests
- Kubernetes Services
- Cloud security groups
- Reverse-proxy routes
- Host firewall rules
- Network access-control lists
The default listener address is 0.0.0.0:6664, but a non-default port does not establish safety.
Look for HTTP requests to the Dalfox API, especially POST /scan, and inspect request bodies where application logging or a reverse proxy preserves JSON payloads. Suspicious requests may include:
FoundActionorFoundActionShellvalues- Shell metacharacters
- Command interpreters
- Encoded commands
- Scan targets not authorized by the operator
Technical Notes
A basic host-triage workflow can identify listening services and parent-child process relationships:
ss -lntp | grep -E '(:6664|dalfox)'
ps -eo pid,ppid,user,etimes,args --forest | grep -i '[d]alfox'
If Dalfox runs under Docker or Kubernetes, inspect published ports and service exposure:
docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Ports}}\t{{.Command}}' | grep -i dalfox
kubectl get pods,svc -A -o wide | grep -i dalfox
A focused web-log search should cover the vulnerable endpoint and execution-option names:
grep -R -Ei \
'"(POST|post) /scan|FoundAction(Shell)?|/scan[^"]*' \
/var/log/nginx /var/log/apache2 /var/log 2>/dev/null
For network monitoring, alert on connections to the Dalfox listener and unexpected outbound connections from the Dalfox process:
(dst_port == 6664) OR
(process_name == "dalfox" AND outbound_connection == true)
This is not a complete exploit signature. A request may trigger execution only after a scan finding, and command output may be sent through a separate channel.
Correlate API requests with process-creation events, including shells and interpreters:
parent_process in ("dalfox", "dalfox.exe") AND
child_process in ("sh", "bash", "dash", "ash", "cmd.exe", "powershell.exe", "pwsh")
Investigate:
- Commands launched by the Dalfox account
- Unexpected files near the binary or working directory
- Outbound connections following
/scanrequests - Access to cloud metadata services
- Access to credential files
- New users or persistence mechanisms
- Modified service or scheduled-task files
Remediation and Patching
Upgrade all affected installations to Dalfox 2.13.0 or later. Verify the installed version after upgrading and confirm that the deployed binary or container image, rather than only a build workstation, has changed.
For a source or Go-based installation, use the project’s release tag and rebuild or install the fixed version according to the project’s supported procedure:
go install github.com/hahwul/dalfox/[email protected]
dalfox version
If the deployment uses a packaged binary or container, replace it with an artifact corresponding to Dalfox 2.13.0 or later. Verify the image digest or binary provenance through the organization’s normal release-validation process.
Immediate Mitigations
If immediate upgrade is not possible, stop REST API server instances and block the listener at host and network boundaries:
sudo systemctl stop dalfox
sudo nft add rule inet filter input tcp dport 6664 drop
For environments using UFW, an equivalent emergency control is:
sudo ufw deny 6664/tcp
Firewall syntax varies by platform. Validate the effective rules and confirm that the port is no longer reachable from unauthorized networks.
Do not rely only on binding changes unless the deployment has been explicitly configured and tested to listen on a trusted local or private interface.
If the service must remain available temporarily:
- Configure API-key authentication with the supported
--api-keyoption. - Place the service behind an authenticated, access-controlled network path.
- Restrict access to approved administration or automation systems.
- Monitor API requests and process creation closely.
- Upgrade as soon as possible.
Authentication and network restrictions are defense-in-depth measures, not substitutes for upgrading.
Incident Response Considerations
After containment, review historical API and reverse-proxy logs for /scan requests and attacker-controlled FoundAction or FoundActionShell values.
Examine affected hosts for:
- Shells and interpreters launched by Dalfox
- Download utilities and encoded commands
- Unexpected persistence
- New users
- Modified service files
- Credential access
- Outbound connections
- Cloud metadata access
- Unauthorized changes to scan targets or configurations
If unauthorized command execution is suspected:
- Isolate the host.
- Preserve volatile and disk evidence.
- Rotate credentials available to the Dalfox process.
- Review lateral movement and cloud activity.
- Follow the organization’s incident-response procedures.
For additional context when evaluating suspicious account activity, see how to tell if an email has been hacked. While email compromise is not required for exploitation of this vulnerability, stolen credentials discovered during investigation may indicate broader intrusion activity.
References
- NVD: CVE-2026-45087
- Dalfox 2.13.0 release
- GitHub Security Advisory: GHSA-v25v-m36w-jp4h
- CISA Known Exploited Vulnerabilities Catalog
The available references support treating CVE-2026-45087 as a critical vulnerability in Dalfox REST API server deployments, with a fixed version of 2.13.0. They do not establish confirmed exploitation in the wild or a verified public PoC. Organizations should use their own telemetry and incident-response evidence to determine whether a reachable instance was targeted.
This article may contain affiliate links. We earn a commission on qualifying purchases at no extra cost to you.