CVE-2025-10951

7.3 HIGH

📋 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

Products:
  • geyang ml-logger
Versions: All versions up to commit acf255bade5be6ad88d90735c8367b28cbe3a743
Operating Systems: All platforms running Python
Default Config Vulnerable: ⚠️ Yes
Notes: Affects the ml_logger/server.py file specifically. Rolling release model means specific version numbers aren't tracked.

⚠️ 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.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. 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.

🌐 Internet-Facing: HIGH - Remote exploitation is possible and public exploit exists.
🏢 Internal Only: MEDIUM - Still exploitable from internal networks but requires network access.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

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

all

Add 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

linux

Restrict 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")

🔗 References

📤 Share & Export