CVE-2025-10951
📋 TL;DR
This path traversal vulnerability in geyang ml-logger allows attackers to access arbitrary files on the server by manipulating file paths in the log_handler function. It affects all versions up to commit acf255bade5be6ad88d90735c8367b28cbe3a743. The vulnerability can be exploited remotely without authentication.
💻 Affected Systems
- geyang ml-logger
⚠️ 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
Complete server compromise through sensitive file disclosure (configuration files, credentials, source code) leading to data theft, privilege escalation, or further attacks.
Likely Case
Unauthorized access to sensitive log files, configuration files, or other system files stored on the server.
If Mitigated
Limited access to non-critical files if proper file permissions and input validation are implemented.
🎯 Exploit Status
Exploit is publicly available and relatively simple to execute.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Versions after commit acf255bade5be6ad88d90735c8367b28cbe3a743
Vendor Advisory: https://github.com/geyang/ml-logger/issues/73
Restart Required: Yes
Instructions:
1. Update to latest ml-logger version using pip install --upgrade ml-logger
2. Restart any services using ml-logger
3. Verify the fix by checking the commit hash is newer than acf255bade5be6ad88d90735c8367b28cbe3a743
🔧 Temporary Workarounds
Input Validation Filter
allAdd path traversal validation before file operations
# Add to ml_logger/server.py before file operations:
import os
from pathlib import Path
base_path = Path('/safe/log/directory')
target_path = (base_path / requested_path).resolve()
if not str(target_path).startswith(str(base_path)):
raise ValueError('Path traversal attempt detected')
Network Restriction
linuxRestrict access to ml-logger service to trusted networks only
# Using iptables for Linux:
iptables -A INPUT -p tcp --dport [ml-logger-port] -s [trusted-network] -j ACCEPT
iptables -A INPUT -p tcp --dport [ml-logger-port] -j DROP
🧯 If You Can't Patch
- Implement strict network segmentation and firewall rules to limit access to ml-logger instances
- Deploy web application firewall (WAF) rules to detect and block path traversal patterns
🔍 How to Verify
Check if Vulnerable:
Check if ml-logger version uses commit acf255bade5be6ad88d90735c8367b28cbe3a743 or earlier by examining the source code or package metadata
Check Version:
pip show ml-logger | grep Version
Verify Fix Applied:
Test path traversal attempts with payloads like '../../etc/passwd' and verify they are rejected
📡 Detection & Monitoring
Log Indicators:
- Unusual file access patterns in ml-logger logs
- Failed path traversal attempts in application logs
- Access to sensitive system files from ml-logger process
Network Indicators:
- HTTP requests containing '../' patterns to ml-logger endpoints
- Unusual file download patterns from ml-logger service
SIEM Query:
source="ml-logger" AND ("..\/" OR "%2e%2e%2f" OR "..%5c")