CVE-2025-4905

5.3 MEDIUM

📋 TL;DR

This vulnerability allows local attackers to execute arbitrary code through unsafe deserialization in the load_qc_pickl function of basestation3's QC.py module. It affects users of iop-apl-uw basestation3 up to version 3.0.4 who process untrusted QC files. The attack requires local access to the system.

💻 Affected Systems

Products:
  • iop-apl-uw basestation3
Versions: up to and including 3.0.4
Operating Systems: All platforms running Python
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerable when processing QC files through the affected function. The maintainer marked the issue as closed but hasn't released a fix.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise with arbitrary code execution as the user running basestation3, potentially leading to data theft, system manipulation, or lateral movement.

🟠

Likely Case

Local privilege escalation or execution of malicious code within the basestation3 application context, allowing data manipulation or further exploitation.

🟢

If Mitigated

Limited impact with proper access controls and input validation, potentially causing application crashes or denial of service.

🌐 Internet-Facing: LOW - The vulnerability requires local access and cannot be exploited remotely.
🏢 Internal Only: MEDIUM - Local attackers with access to the system could exploit this, but it requires specific conditions and knowledge of the vulnerability.

🎯 Exploit Status

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

Exploit has been publicly disclosed in GitHub issues. Attack requires local access and ability to supply malicious QC files to the vulnerable function.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Not available

Vendor Advisory: https://github.com/iop-apl-uw/basestation3/issues/6

Restart Required: No

Instructions:

No official patch available. Monitor the GitHub repository for updates. Consider applying community fixes or workarounds.

🔧 Temporary Workarounds

Input Validation and Sanitization

all

Implement strict validation of QC file inputs before passing to load_qc_pickl function

# Modify QC.py to validate qc_file parameter
# Add checks for file integrity and expected format
# Consider implementing allowlist of safe file types

Restrict File Access

all

Limit access to QC file processing functionality to trusted users only

# Implement access controls around QC file processing
# Use file permissions to restrict who can write/modify QC files
# Consider using read-only mounts for QC file directories

🧯 If You Can't Patch

  • Isolate basestation3 instances from critical systems and implement strict network segmentation
  • Implement application allowlisting to prevent execution of unauthorized code and monitor for suspicious process creation

🔍 How to Verify

Check if Vulnerable:

Check if basestation3 version is 3.0.4 or earlier and if QC.py contains the vulnerable load_qc_pickl function without proper input validation

Check Version:

Check basestation3 version in package metadata or run: python -c "import basestation3; print(basestation3.__version__)" if available

Verify Fix Applied:

Verify that QC.py has been modified to include safe deserialization practices or input validation for the load_qc_pickl function

📡 Detection & Monitoring

Log Indicators:

  • Unexpected process execution from basestation3 context
  • Errors or crashes in QC.py module
  • Suspicious file access patterns to QC files

Network Indicators:

  • Unusual outbound connections from basestation3 processes
  • Lateral movement attempts from basestation3 host

SIEM Query:

Process Creation where Parent Process contains 'basestation3' AND Command Line contains suspicious patterns

🔗 References

📤 Share & Export