CVE-2025-23001
📋 TL;DR
A Host header injection vulnerability in CTFd 3.7.5 allows attackers to manipulate the Host header in HTTP requests. This can lead to phishing attacks, password reset hijacking, or cache poisoning. Affects CTFd 3.7.5 installations with improper NGINX configuration.
💻 Affected Systems
- CTFd
⚠️ Manual Verification Required
This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.
Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).
🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.
- Review the CVE details at NVD
- Check vendor security advisories for your specific version
- Test if the vulnerability is exploitable in your environment
- Consider updating to the latest version as a precaution
⚠️ Risk & Real-World Impact
Worst Case
Attackers could redirect users to malicious sites for credential theft, hijack password reset functionality, or poison caches to serve malicious content.
Likely Case
Phishing attacks where users are redirected to attacker-controlled domains that mimic legitimate CTFd interfaces.
If Mitigated
No impact if NGINX is properly configured with server_name directive to validate Host headers.
🎯 Exploit Status
Proof of concept available demonstrating Host header manipulation. Exploitation requires no authentication.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 3.7.6
Vendor Advisory: https://blog.ctfd.io/ctfd-3-7-6/
Restart Required: Yes
Instructions:
1. Backup current CTFd installation. 2. Update to CTFd 3.7.6 via git pull or fresh installation. 3. Restart CTFd service. 4. Verify version is 3.7.6.
🔧 Temporary Workarounds
NGINX server_name configuration
linuxConfigure NGINX to validate Host headers using server_name directive
Edit NGINX config: set 'server_name your-ctfd-domain.com;' in server block
🧯 If You Can't Patch
- Implement strict Host header validation at reverse proxy/load balancer level
- Monitor for suspicious Host header values in HTTP logs
🔍 How to Verify
Check if Vulnerable:
Check if running CTFd 3.7.5 and NGINX lacks proper server_name configuration
Check Version:
cd /path/to/ctfd && python -c "import ctfd; print(ctfd.__version__)"
Verify Fix Applied:
Confirm CTFd version is 3.7.6 and NGINX has server_name configured
📡 Detection & Monitoring
Log Indicators:
- HTTP requests with unusual Host headers
- Multiple failed login attempts from unexpected domains
Network Indicators:
- HTTP traffic with manipulated Host headers
- Redirects to unexpected domains
SIEM Query:
http.host != "expected-domain.com" AND http.status_code = 200