CVE-2023-1800
📋 TL;DR
This critical vulnerability in go-fastdfs allows attackers to perform path traversal attacks via the file upload handler. By manipulating upload requests to the /group1/uploa endpoint, attackers can write files to arbitrary directories outside the intended upload location. All users running go-fastdfs versions up to 1.4.3 are affected.
💻 Affected Systems
- sjqzhang go-fastdfs
📦 What is this software?
Go Fastdfs by Go Fastdfs Project
⚠️ Risk & Real-World Impact
Worst Case
Remote attackers could overwrite critical system files, execute arbitrary code, or achieve full system compromise by writing malicious files to sensitive locations.
Likely Case
Attackers upload malicious files to web-accessible directories, leading to web shell deployment, data exfiltration, or lateral movement within the network.
If Mitigated
With proper file permission restrictions and input validation, impact is limited to unauthorized file writes within the application's sandboxed environment.
🎯 Exploit Status
Public exploit code is available, making this easily weaponizable. The vulnerability requires no authentication and has simple exploitation steps.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 1.4.4 or later
Vendor Advisory: https://github.com/sjqzhang/go-fastdfs
Restart Required: Yes
Instructions:
1. Backup current configuration and data
2. Download go-fastdfs version 1.4.4 or later from official repository
3. Stop the go-fastdfs service
4. Replace the binary with the patched version
5. Restart the go-fastdfs service
6. Verify the service is running correctly
🔧 Temporary Workarounds
Input Validation Filter
allImplement middleware or WAF rules to block upload requests containing path traversal sequences
# Example nginx rule to block ../ sequences
location /group1/uploa {
if ($request_uri ~* "\.\./") {
return 403;
}
}
File Permission Restriction
linuxRun go-fastdfs with minimal privileges and restrict write permissions to specific directories only
# Run as non-root user
sudo useradd -r -s /bin/false gofastdfs
sudo chown -R gofastdfs:gofastdfs /path/to/upload/dir
sudo chmod 750 /path/to/upload/dir
🧯 If You Can't Patch
- Implement a web application firewall (WAF) with rules to detect and block path traversal patterns in upload requests
- Disable the vulnerable upload endpoint entirely if not required for business operations
🔍 How to Verify
Check if Vulnerable:
Check if running go-fastdfs version 1.4.3 or earlier by examining the binary version or checking the service output
Check Version:
./go-fastdfs -v 2>&1 | grep version
Verify Fix Applied:
After patching, attempt to upload a file with '../' in the filename and verify it is rejected or sanitized
📡 Detection & Monitoring
Log Indicators:
- HTTP POST requests to /group1/uploa containing '../' sequences
- File write operations outside expected upload directories
- Unusual file creation patterns in system directories
Network Indicators:
- HTTP traffic to upload endpoint with encoded path traversal payloads (%2e%2e%2f)
- Multiple failed upload attempts followed by successful ones with suspicious filenames
SIEM Query:
source="go-fastdfs.log" AND (uri_path="/group1/uploa" AND (request_body CONTAINS "../" OR request_body CONTAINS "%2e%2e%2f"))